-
Notifications
You must be signed in to change notification settings - Fork 178
/
Copy pathsmbios.h
2806 lines (2431 loc) · 116 KB
/
smbios.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Definitions that describe SMBIOS - https://www.dmtf.org/standards/smbios
*
* This file is part of System Informer.
*/
#ifndef _SMBIOS_H
#define _SMBIOS_H
typedef struct RAW_SMBIOS_DATA
{
UCHAR Used20CallingMethod;
UCHAR SMBIOSMajorVersion;
UCHAR SMBIOSMinorVersion;
UCHAR DmiRevision;
ULONG Length;
UCHAR SMBIOSTableData[ANYSIZE_ARRAY];
} RAW_SMBIOS_DATA, *PRAW_SMBIOS_DATA;
#include <pshpack1.h>
#define SMBIOS_INVALID_HANDLE ((USHORT)0x0FFFF)
#define SMBIOS_INVALID_STRING ((UCHAR)0)
#define SMBIOS_STRING_TABLE(x) (PVOID)((ULONG_PTR)x + x->Length)
#define SMBIOS_PROBE_STATUS_OTHER ((UCHAR)1)
#define SMBIOS_PROBE_STATUS_UNKNOWN ((UCHAR)2)
#define SMBIOS_PROBE_STATUS_OK ((UCHAR)3)
#define SMBIOS_PROBE_STATUS_NON_CRITICAL ((UCHAR)4)
#define SMBIOS_PROBE_STATUS_CRITICAL ((UCHAR)5)
#define SMBIOS_PROBE_STATUS_NON_RECOVERABLE ((UCHAR)6)
#define SMBIOS_MEMORY_ERROR_TYPE_OTHER ((UCHAR)1)
#define SMBIOS_MEMORY_ERROR_TYPE_UNKNOWN ((UCHAR)2)
#define SMBIOS_MEMORY_ERROR_TYPE_OK ((UCHAR)3)
#define SMBIOS_MEMORY_ERROR_TYPE_BAD_READ ((UCHAR)4)
#define SMBIOS_MEMORY_ERROR_TYPE_PARITY ((UCHAR)5)
#define SMBIOS_MEMORY_ERROR_TYPE_SINGLE_BIT ((UCHAR)6)
#define SMBIOS_MEMORY_ERROR_TYPE_DOUBLE_BIT ((UCHAR)7)
#define SMBIOS_MEMORY_ERROR_TYPE_MULTI_BIT ((UCHAR)8)
#define SMBIOS_MEMORY_ERROR_TYPE_NIBBLE ((UCHAR)9)
#define SMBIOS_MEMORY_ERROR_TYPE_CHECKSUM ((UCHAR)10)
#define SMBIOS_MEMORY_ERROR_TYPE_CRC ((UCHAR)11)
#define SMBIOS_MEMORY_ERROR_TYPE_CORRECTED_SINGLE_BIT ((UCHAR)12)
#define SMBIOS_MEMORY_ERROR_TYPE_CORRECTED ((UCHAR)13)
#define SMBIOS_MEMORY_ERROR_TYPE_UNCORRECTABLE ((UCHAR)14)
#define SMBIOS_MEMORY_ERROR_GRANULARITY_OTHER ((UCHAR)1)
#define SMBIOS_MEMORY_ERROR_GRANULARITY_UNKNOWN ((UCHAR)2)
#define SMBIOS_MEMORY_ERROR_GRANULARITY_DEVICE ((UCHAR)3)
#define SMBIOS_MEMORY_ERROR_GRANULARITY_PARTITION ((UCHAR)4)
#define SMBIOS_MEMORY_ERROR_OPERATION_OTHER ((UCHAR)1)
#define SMBIOS_MEMORY_ERROR_OPERATION_UNKNOWN ((UCHAR)2)
#define SMBIOS_MEMORY_ERROR_OPERATION_READ ((UCHAR)3)
#define SMBIOS_MEMORY_ERROR_OPERATION_WRITE ((UCHAR)4)
#define SMBIOS_MEMORY_ERROR_OPERATION_PARTIAL_WRITE ((UCHAR)5)
typedef struct _SMBIOS_ENTRY_POINT_2_1
{
UCHAR Signature[4]; // _SM_ (ASCII)
UCHAR Checksum;
UCHAR Length;
UCHAR MajorVersion;
UCHAR MinorVersion;
USHORT MaximumStructureSize;
UCHAR EntryPointRevision;
UCHAR Reserved[5];
UCHAR Signature2[5]; // _DMI_ (ASCII)
UCHAR IntermediateChecksum;
USHORT StructureTableLength;
ULONG StructureTableAddress;
USHORT NumberStructures;
UCHAR Revision;
} SMBIOS_ENTRY_POINT_2_1, *PSMBIOS_ENTRY_POINT_2_1;
C_ASSERT(sizeof(SMBIOS_ENTRY_POINT_2_1) == 0X1F);
typedef struct _SMBIOS_ENTRY_POINT_3_0
{
UCHAR Signature[5]; // _SM3_ (ASCII)
UCHAR Checksum;
UCHAR Length;
UCHAR MajorVersion;
UCHAR MinorVersion;
UCHAR DocumentRevision;
UCHAR EntryPointRevision;
UCHAR Reserved;
ULONG MaximumStructureSize;
ULONGLONG StructureTableAddress;
} SMBIOS_ENTRY_POINT_3_0, *PSMBIOS_ENTRY_POINT_3_0;
C_ASSERT(sizeof(SMBIOS_ENTRY_POINT_3_0) == 0x18);
typedef struct _SMBIOS_HEADER
{
UCHAR Type;
UCHAR Length;
USHORT Handle;
} SMBIOS_HEADER, *PSMBIOS_HEADER;
C_ASSERT(sizeof(SMBIOS_HEADER) == 4);
typedef struct _SMBIOS_GENERIC
{
UCHAR Type;
UCHAR Length;
USHORT Handle;
UCHAR Data[ANYSIZE_ARRAY];
} SMBIOS_GENERIC, *PSMBIOS_GENERIC;
//
// Platform Firmware Information (Type 0)
//
#define SMBIOS_FIRMWARE_INFORMATION_TYPE ((UCHAR)0)
typedef struct _SMBIOS_FIRMWARE_INFORMATION
{
SMBIOS_HEADER Header;
// 2.0+
UCHAR Vendor; // string
UCHAR Version; // string
USHORT StartingAddressSegment;
UCHAR ReleaseDate; // string
UCHAR RomSize;
ULONGLONG Characteristics; // SMBIOS_FIRMWARE_FLAG_*
// 2.4+
USHORT Characteristics2; // SMBIOS_FIRMWARE_FLAG_2_*
UCHAR MajorRelease;
UCHAR MinorRelease;
UCHAR ControllerMajorRelease;
UCHAR ControllerMinorRelease;
// 3.1+
union
{
struct
{
USHORT Unit : 2; // SMBIOS_FIRMWARE_ROM_UNIT_*
USHORT Size : 14;
};
USHORT Value;
} RomSize2;
} SMBIOS_FIRMWARE_INFORMATION, *PSMBIOS_FIRMWARE_INFORMATION;
C_ASSERT(sizeof(SMBIOS_FIRMWARE_INFORMATION) == 0x1A);
#define SMBIOS_FIRMWARE_FLAG_RESERVED_0 0x0000000000000001UL
#define SMBIOS_FIRMWARE_FLAG_RESERVED_1 0x0000000000000002UL
#define SMBIOS_FIRMWARE_FLAG_UNKNOWN 0x0000000000000004UL
#define SMBIOS_FIRMWARE_FLAG_NOT_SUPPORTED 0x0000000000000008UL
#define SMBIOS_FIRMWARE_FLAG_ISA_SUPPORTED 0x0000000000000010UL
#define SMBIOS_FIRMWARE_FLAG_MCA_SUPPORTED 0x0000000000000020UL
#define SMBIOS_FIRMWARE_FLAG_EISA_SUPPORTED 0x0000000000000040UL
#define SMBIOS_FIRMWARE_FLAG_PCI_SUPPORTED 0x0000000000000080UL
#define SMBIOS_FIRMWARE_FLAG_PCMCIA_SUPPORTED 0x0000000000000100UL
#define SMBIOS_FIRMWARE_FLAG_PNP_SUPPORTED 0x0000000000000200UL
#define SMBIOS_FIRMWARE_FLAG_APM_SUPPORTED 0x0000000000000400UL
#define SMBIOS_FIRMWARE_FLAG_UPGRADE_SUPPORTED 0x0000000000000800UL
#define SMBIOS_FIRMWARE_FLAG_SHADOWING_SUPPORTED 0x0000000000001000UL
#define SMBIOS_FIRMWARE_FLAG_VL_VESA_SUPPORTED 0x0000000000002000UL
#define SMBIOS_FIRMWARE_FLAG_ESCD_SUPPORTED 0x0000000000004000UL
#define SMBIOS_FIRMWARE_FLAG_BOOT_FROM_CD_SUPPORTED 0x0000000000008000UL
#define SMBIOS_FIRMWARE_FLAG_SELECTABLE_BOOT_SUPPORTED 0x0000000000010000UL
#define SMBIOS_FIRMWARE_FLAG_ROM_SOCKETED 0x0000000000020000UL
#define SMBIOS_FIRMWARE_FLAG_PCMCIA_BOOT_SUPPORTED 0x0000000000040000UL
#define SMBIOS_FIRMWARE_FLAG_EDD_SUPPORTED 0x0000000000080000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_NEC_9800_SUPPORTED 0x0000000000100000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_TOSHIBA_SUPPORTED 0x0000000000200000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_5_25_360KB_SUPPORTED 0x0000000000400000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_5_25_1_2_MB_SUPPORTED 0x0000000000800000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_3_5_720KB_SUPPORTED 0x0000000001000000UL
#define SMBIOS_FIRMWARE_FLAG_FLOPPY_3_5_2_88MB_SUPPORTED 0x0000000002000000UL
#define SMBIOS_FIRMWARE_FLAG_PRINT_SCREEN_SUPPORTED 0x0000000004000000UL
#define SMBIOS_FIRMWARE_FLAG_8042_KEYBOARD_SUPPORTED 0x0000000008000000UL
#define SMBIOS_FIRMWARE_FLAG_SERIAL_SUPPORTED 0x0000000010000000UL
#define SMBIOS_FIRMWARE_FLAG_PRINTER_SUPPORTED 0x0000000020000000UL
#define SMBIOS_FIRMWARE_FLAG_CGA_VIDEO_SUPPORTED 0x0000000040000000UL
#define SMBIOS_FIRMWARE_FLAG_NEC_PC_98 0x0000000080000000UL
#define SMBIOS_FIRMWARE_FLAG_PLATFORM_RESERVED 0x0000FFFF00000000UL
#define SMBIOS_FIRMWARE_FLAG_SYSTEM_RESERVED 0xFFFF000000000000UL
#define SMBIOS_FIRMWARE_FLAG_2_ACPI_SUPPORTED ((USHORT)0x0001)
#define SMBIOS_FIRMWARE_FLAG_2_USB_LEGACY_SUPPORTED ((USHORT)0x0002)
#define SMBIOS_FIRMWARE_FLAG_2_AGP_SUPPORTED ((USHORT)0x0004)
#define SMBIOS_FIRMWARE_FLAG_2_I20_BOOT_SUPPORTED ((USHORT)0x0008)
#define SMBIOS_FIRMWARE_FLAG_2_LS_120_BOOT_SUPPORTED ((USHORT)0x0010)
#define SMBIOS_FIRMWARE_FLAG_2_ZIP_BOOT_SUPPORTED ((USHORT)0x0020)
#define SMBIOS_FIRMWARE_FLAG_2_1394_BOOT_SUPPORTED ((USHORT)0x0040)
#define SMBIOS_FIRMWARE_FLAG_2_SMART_BATTERY_SUPPORTED ((USHORT)0x0080)
#define SMBIOS_FIRMWARE_FLAG_2_BIOS_BOOT_SUPPORTED ((USHORT)0x0100)
#define SMBIOS_FIRMWARE_FLAG_2_FN_KEY_NET_BOOT_SUPPORTED ((USHORT)0x0200)
#define SMBIOS_FIRMWARE_FLAG_2_CONTENT_DISTRIBUTION_SUPPORTED ((USHORT)0x0400)
#define SMBIOS_FIRMWARE_FLAG_2_UEFI_SUPPORTED ((USHORT)0x0800)
#define SMBIOS_FIRMWARE_FLAG_2_MANUFACTURING_MODE_ENABLED ((USHORT)0x1000)
#define SMBIOS_FIRMWARE_FLAG_2_RESERVED ((USHORT)0xE000)
#define SMBIOS_FIRMWARE_ROM_UNIT_MB 0
#define SMBIOS_FIRMWARE_ROM_UNIT_GB 1
#define SMBIOS_FIRMWARE_ROM_UNIT_RESERVED_1 2
#define SMBIOS_FIRMWARE_ROM_UNIT_RESERVED_2 3
//
// System Information (Type 1)
//
#define SMBIOS_SYSTEM_INFORMATION_TYPE ((UCHAR)1)
typedef struct _SMBIOS_SYSTEM_INFORMATION
{
SMBIOS_HEADER Header;
// 2.0+
UCHAR Manufacturer; // string
UCHAR ProductName; // string
UCHAR Version; // string
UCHAR SerialNumber; // string
// 2.1+
GUID UniqueID;
UCHAR WakeUpType; // SMBIOS_SYSTEM_WAKE_UP_TYPE
// 2.4+
UCHAR SKUNumber; // string
UCHAR Family; // string
} SMBIOS_SYSTEM_INFORMATION, *PSMBIOS_SYSTEM_INFORMATION;
C_ASSERT(sizeof(SMBIOS_SYSTEM_INFORMATION) == 0x1B);
#define SMBIOS_SYSTEM_WAKE_UP_TYPE_RESERVED ((UCHAR)0)
#define SMBIOS_SYSTEM_WAKE_UP_TYPE_OTHER ((UCHAR)1)
#define SMBIOS_SYSTEM_WAKE_UP_UNKNOWN ((UCHAR)2)
#define SMBIOS_SYSTEM_WAKE_UP_APM_TIMER ((UCHAR)3)
#define SMBIOS_SYSTEM_WAKE_UP_MODEM_RING ((UCHAR)4)
#define SMBIOS_SYSTEM_WAKE_UP_LAN_REMOTE ((UCHAR)5)
#define SMBIOS_SYSTEM_WAKE_UP_POWER_SWITCH ((UCHAR)6)
#define SMBIOS_SYSTEM_WAKE_UP_PCI_PME ((UCHAR)7)
#define SMBIOS_SYSTEM_WAKE_UP_AC_POWER_RESTORED ((UCHAR)8)
//
// Baseboard (or Module) Information (Type 2)
//
#define SMBIOS_BASEBOARD_INFORMATION_TYPE ((UCHAR)2)
typedef struct _SMBIOS_BASEBOARD_INFORMATION
{
SMBIOS_HEADER Header;
UCHAR Manufacturer; // string
UCHAR Product; // string
UCHAR Version; // string
UCHAR SerialNumber; // string
UCHAR AssetTag; // string
UCHAR Features; // SMBIOS_BASEBOARD_FEATURE_*
UCHAR Location; // string
USHORT ChassisHandle;
UCHAR BoardType; // SMBIOS_BASEBOARD_TYPE_*
UCHAR NumberOfHandles;
USHORT Handles[ANYSIZE_ARRAY]; // Contained object handles (processors, ports, memory, etc.)
} SMBIOS_BASEBOARD_INFORMATION, *PSMBIOS_BASEBOARD_INFORMATION;
C_ASSERT(sizeof(SMBIOS_BASEBOARD_INFORMATION) == 0x11);
#define SMBIOS_BASEBOARD_FEATURE_HOSTING_BOARD ((UCHAR)0x01)
#define SMBIOS_BASEBOARD_FEATURE_REQUIRES_DAUGHTER_BOARD ((UCHAR)0x02)
#define SMBIOS_BASEBOARD_FEATURE_REMOVABLE_BOARD ((UCHAR)0x04)
#define SMBIOS_BASEBOARD_FEATURE_REPLACEABLE_BOARD ((UCHAR)0x08)
#define SMBIOS_BASEBOARD_FEATURE_HOT_SWAP_BOARD ((UCHAR)0x10)
#define SMBIOS_BASEBOARD_FEATURE_RESERVED ((UCHAR)0xE0)
#define SMBIOS_BASEBOARD_TYPE_UNKNOWN ((UCHAR)1)
#define SMBIOS_BASEBOARD_TYPE_OTHER ((UCHAR)2)
#define SMBIOS_BASEBOARD_TYPE_SERVER_BLADE ((UCHAR)3)
#define SMBIOS_BASEBOARD_TYPE_CONNECTIVITY_SWITCH ((UCHAR)4)
#define SMBIOS_BASEBOARD_TYPE_SYSTEM_MANAGEMENT_MODULE ((UCHAR)5)
#define SMBIOS_BASEBOARD_TYPE_PROCESSOR_MODULE ((UCHAR)6)
#define SMBIOS_BASEBOARD_TYPE_IO_MODULE ((UCHAR)7)
#define SMBIOS_BASEBOARD_TYPE_MEMORY_MODULE ((UCHAR)8)
#define SMBIOS_BASEBOARD_TYPE_DAUGHTER_BOARD ((UCHAR)9)
#define SMBIOS_BASEBOARD_TYPE_MOTHERBOARD ((UCHAR)10)
#define SMBIOS_BASEBOARD_TYPE_PROCESSOR_MEMORY_MODULE ((UCHAR)11)
#define SMBIOS_BASEBOARD_TYPE_PROCESSOR_IO_MODULE ((UCHAR)12)
#define SMBIOS_BASEBOARD_TYPE_INTERCONNECT ((UCHAR)13)
//
// System Enclosure or Chassis (Type 3)
//
#define SMBIOS_CHASSIS_INFORMATION_TYPE ((UCHAR)3)
typedef struct _SMBIOS_CHASSIS_INFORMATION
{
SMBIOS_HEADER Header;
// 2.0+
UCHAR Manufacturer; // string
union
{
struct
{
UCHAR Type : 7; // SMBIOS_CHASSIS_TYPE_*
UCHAR Locked : 1;
};
UCHAR Value;
} Chassis;
UCHAR Version; // string
UCHAR SerialNumber; // string
UCHAR AssetTag; // string
// 2.1+
UCHAR BootUpState; // SMBIOS_CHASSIS_STATE_*
UCHAR PowerSupplyState; // SMBIOS_CHASSIS_STATE_*
UCHAR ThermalState; // SMBIOS_CHASSIS_STATE_*
UCHAR SecurityState; // SMBIOS_CHASSIS_SECURITY_STATE_*
// 2.3+
ULONG OEMDefined;
UCHAR Height;
UCHAR NumberOfPowerCords;
UCHAR ElementCount;
UCHAR ElementLength;
UCHAR Elements[ANYSIZE_ARRAY]; // ElementCount * ElementLength, SMBIOS_CHASSIS_CONTAINED_ELEMENT
// 2.7+
// SMBIOS_CHASSIS_INFORMATION_EX
} SMBIOS_CHASSIS_INFORMATION, *PSMBIOS_CHASSIS_INFORMATION;
C_ASSERT(sizeof(SMBIOS_CHASSIS_INFORMATION) == 0x16);
typedef struct _SMBIOS_CHASSIS_INFORMATION_EX
{
// 2.7+
UCHAR SKUNumber; // string
} SMBIOS_CHASSIS_INFORMATION_EX, *PSMBIOS_CHASSIS_INFORMATION_EX;
typedef struct _SMBIOS_CHASSIS_CONTAINED_ELEMENT
{
// 2.3+
union
{
struct
{
UCHAR Type : 7; // SMBIOS_*_INFORMATION_TYPE or SM_BIOS_BASEBOARD_TYPE_*
UCHAR Select : 1; // 1 = SMBIOS_*_INFORMATION_TYPE, 0 = SM_BIOS_BASEBOARD_TYPE_*
};
UCHAR Value;
} Type;
UCHAR ElementMinimum;
UCHAR ElementMaximum;
} SMBIOS_CHASSIS_CONTAINED_ELEMENT, *PSMBIOS_CHASSIS_CONTAINED_ELEMENT;
C_ASSERT(sizeof(SMBIOS_CHASSIS_CONTAINED_ELEMENT) == 0x3);
#define SMBIOS_CHASSIS_TYPE_OTHER 1
#define SMBIOS_CHASSIS_TYPE_UNKNOWN 2
#define SMBIOS_CHASSIS_TYPE_DESKTOP 3
#define SMBIOS_CHASSIS_TYPE_LOW_PROFILE_DESKTOP 4
#define SMBIOS_CHASSIS_TYPE_PIZZA_BOX 5
#define SMBIOS_CHASSIS_TYPE_MINI_TOWER 6
#define SMBIOS_CHASSIS_TYPE_TOWER 7
#define SMBIOS_CHASSIS_TYPE_PORTABLE 8
#define SMBIOS_CHASSIS_TYPE_LAPTOP 9
#define SMBIOS_CHASSIS_TYPE_NOTEBOOK 10
#define SMBIOS_CHASSIS_TYPE_HAND_HELD 11
#define SMBIOS_CHASSIS_TYPE_DOCKING_STATION 12
#define SMBIOS_CHASSIS_TYPE_ALL_IN_ONE 13
#define SMBIOS_CHASSIS_TYPE_SUB_NOTEBOOK 14
#define SMBIOS_CHASSIS_TYPE_SPACE_SAVING 15
#define SMBIOS_CHASSIS_TYPE_LUNCH_BOX 16
#define SMBIOS_CHASSIS_TYPE_MAIN_SERVER 17
#define SMBIOS_CHASSIS_TYPE_EXPANSION 18
#define SMBIOS_CHASSIS_TYPE_SUB 19
#define SMBIOS_CHASSIS_TYPE_BUS_EXPANSION 20
#define SMBIOS_CHASSIS_TYPE_PERIPHERAL 21
#define SMBIOS_CHASSIS_TYPE_RAID 22
#define SMBIOS_CHASSIS_TYPE_RACK_MOUNT 23
#define SMBIOS_CHASSIS_TYPE_SEALED_CASE_PC 24
#define SMBIOS_CHASSIS_TYPE_MULTI_SYSTEM 25
#define SMBIOS_CHASSIS_TYPE_COMPACT_PCI 26
#define SMBIOS_CHASSIS_TYPE_ADVANCED_TCA 27
#define SMBIOS_CHASSIS_TYPE_BLADE 28
#define SMBIOS_CHASSIS_TYPE_BLADE_ENCLOSURE 29
#define SMBIOS_CHASSIS_TYPE_TABLET 30
#define SMBIOS_CHASSIS_TYPE_CONVERTIBLE 31
#define SMBIOS_CHASSIS_TYPE_DETACHABLE 32
#define SMBIOS_CHASSIS_TYPE_IOT_GATEWAY 33
#define SMBIOS_CHASSIS_TYPE_EMBEDDED_PC 34
#define SMBIOS_CHASSIS_TYPE_MINI_PC 35
#define SMBIOS_CHASSIS_TYPE_STICK_PC 36
#define SMBIOS_CHASSIS_STATE_OTHER ((UCHAR)1)
#define SMBIOS_CHASSIS_STATE_UNKNOWN ((UCHAR)2)
#define SMBIOS_CHASSIS_STATE_SAFE ((UCHAR)3)
#define SMBIOS_CHASSIS_STATE_WARNING ((UCHAR)4)
#define SMBIOS_CHASSIS_STATE_CRITICAL ((UCHAR)5)
#define SMBIOS_CHASSIS_STATE_NON_RECOVERABLE ((UCHAR)6)
#define SMBIOS_CHASSIS_SECURITY_STATE_OTHER ((UCHAR)1)
#define SMBIOS_CHASSIS_SECURITY_STATE_UNKNOWN ((UCHAR)2)
#define SMBIOS_CHASSIS_SECURITY_STATE_NONE ((UCHAR)3)
#define SMBIOS_CHASSIS_SECURITY_STATE_LOCKED_OUT ((UCHAR)4)
#define SMBIOS_CHASSIS_SECURITY_STATE_ENABLED ((UCHAR)5)
//
// Processor Information (Type 4)
//
#define SMBIOS_PROCESSOR_INFORMATION_TYPE ((UCHAR)4)
typedef struct _SMBIOS_PROCESSOR_INFORMATION
{
SMBIOS_HEADER Header;
// 2.0+
UCHAR SocketDesignation; // string
UCHAR Type; // SMBIOS_PROCESSOR_TYPE_*
UCHAR Family; // SMBIOS_PROCESSOR_FAMILY_*
UCHAR Manufacturer; // string
ULONGLONG Identifier;
UCHAR Version; // string
union
{
struct
{
UCHAR Capable5000mV : 1; // 5V
UCHAR Capable3500mV : 1; // 3.3V
UCHAR Capable2900mV : 1; // 2.9V
UCHAR Reserved : 4;
UCHAR Mode : 1; // 0 = Legacy Mode
};
UCHAR Value;
} Voltage;
USHORT ExternalClock;
USHORT MaxSpeed;
USHORT CurrentSpeed;
union
{
struct
{
UCHAR Status : 3; // SMBIOS_PROCESSOR_STATUS_*
UCHAR Reserved : 3;
UCHAR Populated : 1;
UCHAR Reserved2 : 1;
};
UCHAR Value;
} Status;
UCHAR Upgrade; // SMBIOS_PROCESSOR_UPGRADE_*
// 2.1+
USHORT L1CacheHandle;
USHORT L2CacheHandle;
USHORT L3CacheHandle;
// 2.3+
UCHAR SerialNumber; // string
UCHAR AssetTag; // string
UCHAR PartNumber; // string
// 2.5+
UCHAR CoreCount;
UCHAR CoresEnabled;
UCHAR ThreadCount;
USHORT Characteristics; // SMBIOS_PROCESSOR_FLAG_*
// 2.6+
USHORT Family2; // SMBIOS_PROCESSOR_FAMILY_*
// 3.0+
USHORT CoreCount2;
USHORT CoresEnabled2;
USHORT ThreadCount2;
// 3.6+
USHORT ThreadsEnabled;
// 3.8+
UCHAR SocketType; // string
} SMBIOS_PROCESSOR_INFORMATION, *PSMBIOS_PROCESSOR_INFORMATION;
C_ASSERT(sizeof(SMBIOS_PROCESSOR_INFORMATION) == 0x33);
#define SMBIOS_PROCESSOR_TYPE_OTHER ((UCHAR)1)
#define SMBIOS_PROCESSOR_TYPE_UNKNOWN ((UCHAR)2)
#define SMBIOS_PROCESSOR_TYPE_CENTRAL ((UCHAR)3)
#define SMBIOS_PROCESSOR_TYPE_MATH ((UCHAR)4)
#define SMBIOS_PROCESSOR_TYPE_DSP ((UCHAR)5)
#define SMBIOS_PROCESSOR_TYPE_VIDEO ((UCHAR)6)
#define SMBIOS_PROCESSOR_FAMILY_OTHER 1
#define SMBIOS_PROCESSOR_FAMILY_UNKNOWN 2
#define SMBIOS_PROCESSOR_FAMILY_8086 3
#define SMBIOS_PROCESSOR_FAMILY_80286 4
#define SMBIOS_PROCESSOR_FAMILY_INTEL386_PROCESSOR 5
#define SMBIOS_PROCESSOR_FAMILY_INTEL486_PROCESSOR 6
#define SMBIOS_PROCESSOR_FAMILY_8087 7
#define SMBIOS_PROCESSOR_FAMILY_80287 8
#define SMBIOS_PROCESSOR_FAMILY_80387 9
#define SMBIOS_PROCESSOR_FAMILY_80487 10
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PENTIUM_PROCESSOR 11
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_PRO_PROCESSOR 12
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_II_PROCESSOR 13
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_PROCESSOR_WITH_MMX_TECHNOLOGY 14
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CELERON_PROCESSOR 15
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_II_XEON_PROCESSOR 16
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_III_PROCESSOR 17
#define SMBIOS_PROCESSOR_FAMILY_M1_FAMILY 18
#define SMBIOS_PROCESSOR_FAMILY_M2_FAMILY 19
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CELERON_M_PROCESSOR 20
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PENTIUM_4_HT_PROCESSOR 21
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PROCESSOR 22
// 23 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_AMD_DURON_PROCESSOR_FAMILY 24
#define SMBIOS_PROCESSOR_FAMILY_K5_FAMILY 25
#define SMBIOS_PROCESSOR_FAMILY_K6_FAMILY 26
#define SMBIOS_PROCESSOR_FAMILY_K6_2 27
#define SMBIOS_PROCESSOR_FAMILY_K6_3 28
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_PROCESSOR_FAMILY 29
#define SMBIOS_PROCESSOR_FAMILY_AMD29000_FAMILY 30
#define SMBIOS_PROCESSOR_FAMILY_K6_2_PLUS 31
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_FAMILY 32
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_601 33
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_603 34
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_603_PLUS 35
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_604 36
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_620 37
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_X704 38
#define SMBIOS_PROCESSOR_FAMILY_POWER_PC_750 39
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_DUO_PROCESSOR 40
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_DUO_MOBILE_PROCESSOR 41
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_SOLO_MOBILE_PROCESSOR 42
#define SMBIOS_PROCESSOR_FAMILY_INTEL_ATOM_PROCESSOR 43
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_M_PROCESSOR 44
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_M3_PROCESSOR 45
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_M5_PROCESSOR 46
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_M7_PROCESSOR 47
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_FAMILY 48
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21064 49
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21066 50
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21164 51
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21164PC 52
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21164A 53
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21264 54
#define SMBIOS_PROCESSOR_FAMILY_ALPHA_21364 55
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_II_ULTRA_DUAL_CORE_MOBILE_M_PROCESSOR_FAMILY 56
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_II_DUAL_CORE_MOBILE_M_PROCESSOR_FAMILY 57
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_II_DUAL_CORE_M_PROCESSOR_FAMILY 58
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_6100_SERIES_PROCESSOR 59
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_4100_SERIES_PROCESSOR 60
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_6200_SERIES_PROCESSOR 61
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_4200_SERIES_PROCESSOR 62
#define SMBIOS_PROCESSOR_FAMILY_AMD_FX_SERIES_PROCESSOR 63
#define SMBIOS_PROCESSOR_FAMILY_MIPS_FAMILY 64
#define SMBIOS_PROCESSOR_FAMILY_MIPS_R4000 65
#define SMBIOS_PROCESSOR_FAMILY_MIPS_R4200 66
#define SMBIOS_PROCESSOR_FAMILY_MIPS_R4400 67
#define SMBIOS_PROCESSOR_FAMILY_MIPS_R4600 68
#define SMBIOS_PROCESSOR_FAMILY_MIPS_R10000 69
#define SMBIOS_PROCESSOR_FAMILY_AMD_C_SERIES_PROCESSOR 70
#define SMBIOS_PROCESSOR_FAMILY_AMD_E_SERIES_PROCESSOR 71
#define SMBIOS_PROCESSOR_FAMILY_AMD_A_SERIES_PROCESSOR 72
#define SMBIOS_PROCESSOR_FAMILY_AMD_G_SERIES_PROCESSOR 73
#define SMBIOS_PROCESSOR_FAMILY_AMD_Z_SERIES_PROCESSOR 74
#define SMBIOS_PROCESSOR_FAMILY_AMD_R_SERIES_PROCESSOR 75
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_4300_SERIES_PROCESSOR 76
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_6300_SERIES_PROCESSOR 77
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_3300_SERIES_PROCESSOR 78
#define SMBIOS_PROCESSOR_FAMILY_AMD_FIREPRO_SERIES_PROCESSOR 79
#define SMBIOS_PROCESSOR_FAMILY_SPARC_FAMILY 80
#define SMBIOS_PROCESSOR_FAMILY_SUPERSPARC 81
#define SMBIOS_PROCESSOR_FAMILY_MICROSPARC_II 82
#define SMBIOS_PROCESSOR_FAMILY_MICROSPARC_IIep 83
#define SMBIOS_PROCESSOR_FAMILY_ULTRASPARC 84
#define SMBIOS_PROCESSOR_FAMILY_ULTRASPARC_II 85
#define SMBIOS_PROCESSOR_FAMILY_ULTRASPARC_Iii 86
#define SMBIOS_PROCESSOR_FAMILY_ULTRASPARC_III 87
#define SMBIOS_PROCESSOR_FAMILY_ULTRASPARC_IIIi 88
// 89-95 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_68040_FAMILY 96
#define SMBIOS_PROCESSOR_FAMILY_68XXX 97
#define SMBIOS_PROCESSOR_FAMILY_68000 98
#define SMBIOS_PROCESSOR_FAMILY_68010 99
#define SMBIOS_PROCESSOR_FAMILY_68020 100
#define SMBIOS_PROCESSOR_FAMILY_68030 101
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_X4_QUAD_CORE_PROCESSOR_FAMILY 102
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_X1000_SERIES_PROCESSOR 103
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_X2000_SERIES_APU 104
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_A_SERIES_PROCESSOR 105
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_X3000_SERIES_APU 106
#define SMBIOS_PROCESSOR_FAMILY_AMD_ZEN_PROCESSOR_FAMILY 107
// 108-111 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_HOBBIT_FAMILY 112
// 113-119 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_CRUSOE_TM5000_FAMILY 120
#define SMBIOS_PROCESSOR_FAMILY_CRUSOE_TM3000_FAMILY 121
#define SMBIOS_PROCESSOR_FAMILY_EFFICEON_TM8000_FAMILY 122
// 123-127 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_WEITEK 128
// 129 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_ITANIUM_PROCESSOR 130
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_64_PROCESSOR_FAMILY 131
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_PROCESSOR_FAMILY 132
#define SMBIOS_PROCESSOR_FAMILY_AMD_SEMPRON_PROCESSOR_FAMILY 133
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_64_MOBILE_TECHNOLOGY 134
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_AMD_OPTERON_PROCESSOR_FAMILY 135
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_64_X2_DUAL_CORE_PROCESSOR_FAMILY 136
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_64_X2_MOBILE_TECHNOLOGY 137
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_AMD_OPTERON_PROCESSOR_FAMILY 138
#define SMBIOS_PROCESSOR_FAMILY_THIRD_GENERATION_AMD_OPTERON_PROCESSOR_FAMILY 139
#define SMBIOS_PROCESSOR_FAMILY_AMD_PHENOM_FX_QUAD_CORE_PROCESSOR_FAMILY 140
#define SMBIOS_PROCESSOR_FAMILY_AMD_PHENOM_X4_QUAD_CORE_PROCESSOR_FAMILY 141
#define SMBIOS_PROCESSOR_FAMILY_AMD_PHENOM_X2_DUAL_CORE_PROCESSOR_FAMILY 142
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_X2_DUAL_CORE_PROCESSOR_FAMILY 143
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_FAMILY 144
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_8500 145
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_8000 146
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_7300LC 147
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_7200 148
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_7100LC 149
#define SMBIOS_PROCESSOR_FAMILY_PA_RISC_7100 150
// 151-159 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_V30_FAMILY 160
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_3200_SERIES 161
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_3000_SERIES 162
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_5300_SERIES 163
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_5100_SERIES 164
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_5000_SERIES 165
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_LV 166
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_ULV 167
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_7100_SERIES 168
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_5400_SERIES 169
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR 170
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_5200_SERIES 171
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_7200_SERIES 172
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_7300_SERIES 173
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_7400_SERIES 174
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_INTEL_XEON_PROCESSOR_7400_SERIES 175
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_III_XEON_PROCESSOR 176
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_III_PROCESSOR_WITH_INTEL_SPEEDSTEP_TECHNOLOGY 177
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_4_PROCESSOR 178
#define SMBIOS_PROCESSOR_FAMILY_INTEL_XEON_PROCESSOR 179
#define SMBIOS_PROCESSOR_FAMILY_AS400_FAMILY 180
#define SMBIOS_PROCESSOR_FAMILY_INTEL_XEON_PROCESSOR_MP 181
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_XP_PROCESSOR_FAMILY 182
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_MP_PROCESSOR_FAMILY 183
#define SMBIOS_PROCESSOR_FAMILY_INTEL_ITANIUM_2_PROCESSOR 184
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PENTIUM_M_PROCESSOR 185
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CELERON_D_PROCESSOR 186
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PENTIUM_D_PROCESSOR 187
#define SMBIOS_PROCESSOR_FAMILY_INTEL_PENTIUM_PROCESSOR_EXTREME_EDITION 188
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_SOLO_PROCESSOR 189
#define SMBIOS_PROCESSOR_FAMILY_RESERVED 190
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_DUO_PROCESSOR 191
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_SOLO_PROCESSOR 192
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_EXTREME_PROCESSOR 193
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_QUAD_PROCESSOR 194
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_EXTREME_MOBILE_PROCESSOR 195
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_DUO_MOBILE_PROCESSOR 196
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_2_SOLO_MOBILE_PROCESSOR 197
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_I7_PROCESSOR 198
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_CELERO_PROCESSOR 199
#define SMBIOS_PROCESSOR_FAMILY_IBM390_FAMILY 200
#define SMBIOS_PROCESSOR_FAMILY_G4 201
#define SMBIOS_PROCESSOR_FAMILY_G5 202
#define SMBIOS_PROCESSOR_FAMILY_ESA_390_G6 203
#define SMBIOS_PROCESSOR_FAMILY_Z_ARCHITECTURE_BASE 204
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_I5_PROCESSOR 205
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_I3_PROCESSOR 206
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_I9_PROCESSOR 207
#define SMBIOS_PROCESSOR_FAMILY_INTEL_XEON_D_PROCESSOR_FAMILY 208
// 209 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_VIA_C7_M_PROCESSOR_FAMILY 210
#define SMBIOS_PROCESSOR_FAMILY_VIA_C7_D_PROCESSOR_FAMILY 211
#define SMBIOS_PROCESSOR_FAMILY_VIA_C7_PROCESSOR_FAMILY 212
#define SMBIOS_PROCESSOR_FAMILY_VIA_EDEN_PROCESSOR_FAMILY 213
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_INTEL_XEON_PROCESSOR 214
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_3XXX_SERIES 215
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_3XXX_SERIES 216
#define SMBIOS_PROCESSOR_FAMILY_VIA_NANO_PROCESSOR_FAMILY 217
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_5XXX_SERIES 218
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_5XXX_SERIES 219
// 220 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_INTEL_XEON_PROCESSOR_7XXX_SERIES 221
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_INTEL_XEON_PROCESSOR_7XXX_SERIES 222
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_INTEL_XEON_PROCESSOR_7XXX_SERIES 223
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_INTEL_XEON_PROCESSOR_3400_SERIES 224
// 225-227 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_AMD_OPTERON_3000_SERIES_PROCESSOR 228
#define SMBIOS_PROCESSOR_FAMILY_AMD_SEMPRON_II_PROCESSOR 229
#define SMBIOS_PROCESSOR_FAMILY_EMBEDDED_AMD_OPTERON_QUAD_CORE_PROCESSOR_FAMILY 230
#define SMBIOS_PROCESSOR_FAMILY_AMD_PHENOM_TRIPLE_CORE_PROCESSOR_FAMILY 231
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_ULTRA_DUAL_CORE_MOBILE_PROCESSOR_FAMILY 232
#define SMBIOS_PROCESSOR_FAMILY_AMD_TURION_DUAL_CORE_MOBILE_PROCESSOR_FAMILY 233
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_DUAL_CORE_PROCESSOR_FAMILY 234
#define SMBIOS_PROCESSOR_FAMILY_AMD_SEMPRON_SI_PROCESSOR_FAMILY 235
#define SMBIOS_PROCESSOR_FAMILY_AMD_PHENOM_II_PROCESSOR_FAMILY 236
#define SMBIOS_PROCESSOR_FAMILY_AMD_ATHLON_II_PROCESSOR_FAMILY 237
#define SMBIOS_PROCESSOR_FAMILY_SIX_CORE_AMD_OPTERON_PROCESSOR_FAMILY 238
#define SMBIOS_PROCESSOR_FAMILY_AMD_SEMPRON_M_PROCESSOR_FAMILY 239
// 240-249 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_I860 250
#define SMBIOS_PROCESSOR_FAMILY_I960 251
// 252-253 - Available for assignment
#define SMBIOS_PROCESSOR_FAMILY_USE_2ND_FIELD 254
// 255 RESERVED
// 256-511 - Available for assignment, except for:
#define SMBIOS_PROCESSOR_FAMILY_ARMV7 256
#define SMBIOS_PROCESSOR_FAMILY_ARMV8 257
#define SMBIOS_PROCESSOR_FAMILY_ARMV9 258
// 259 - Reserved for future use by ARM
#define SMBIOS_PROCESSOR_FAMILY_SH_3 260
#define SMBIOS_PROCESSOR_FAMILY_SH_4 261
#define SMBIOS_PROCESSOR_FAMILY_ARM 280
#define SMBIOS_PROCESSOR_FAMILY_STRONGARM 281
#define SMBIOS_PROCESSOR_FAMILY_6X86 300
#define SMBIOS_PROCESSOR_FAMILY_MEDIAGX 301
#define SMBIOS_PROCESSOR_FAMILY_MII 302
#define SMBIOS_PROCESSOR_FAMILY_WINCHIP 320
#define SMBIOS_PROCESSOR_FAMILY_DSP 350
#define SMBIOS_PROCESSOR_FAMILY_VIDEO_PROCESSOR 500
// 512-767 - Available for assignment, except for:
#define SMBIOS_PROCESSOR_FAMILY_RISC_V_RV32 512
#define SMBIOS_PROCESSOR_FAMILY_RISC_V_RV64 513
#define SMBIOS_PROCESSOR_FAMILY_RISC_V_RV128 514
#define SMBIOS_PROCESSOR_FAMILY_LOONGARCH 600
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_1_PROCESSOR_FAMILY 601
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_2_PROCESSOR_FAMILY 602
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3_PROCESSOR_FAMILY 603
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_2K_PROCESSOR_FAMILY 604
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3A_PROCESSOR_FAMILY 605
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3B_PROCESSOR_FAMILY 606
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3C_PROCESSOR_FAMILY 607
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3D_PROCESSOR_FAMILY 608
#define SMBIOS_PROCESSOR_FAMILY_LOONGSON_3E_PROCESSOR_FAMILY 609
#define SMBIOS_PROCESSOR_FAMILY_DUAL_CORE_LOONGSON_2K_PROCESSOR_2XXX_SERIES 610
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_LOONGSON_3A_PROCESSOR_5XXX_SERIES 620
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_LOONGSON_3A_PROCESSOR_5XXX_SERIES 621
#define SMBIOS_PROCESSOR_FAMILY_QUAD_CORE_LOONGSON_3B_PROCESSOR_5XXX_SERIES 622
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_LOONGSON_3B_PROCESSOR_5XXX_SERIES 623
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_LOONGSON_3C_PROCESSOR_5XXX_SERIES 624
#define SMBIOS_PROCESSOR_FAMILY_MULTI_CORE_LOONGSON_3D_PROCESSOR_5XXX_SERIES 625
// 768-1023 - Available for assignment, except for:
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_3 768
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_5 769
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_7 770
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_9 771
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_ULTRA_3 772
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_ULTRA_5 773
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_ULTRA_7 774
#define SMBIOS_PROCESSOR_FAMILY_INTEL_CORE_ULTRA_9 775
// 1024-65533 - Available for assignment
// 65534–65535 - RESERVED
#define SMBIOS_PROCESSOR_STATUS_UNKNOWN 0
#define SMBIOS_PROCESSOR_STATUS_ENABLED 1
#define SMBIOS_PROCESSOR_STATUS_DISABLED_BY_USER 2
#define SMBIOS_PROCESSOR_STATUS_DISABLED_BY_FIRMWARE 3
#define SMBIOS_PROCESSOR_STATUS_IDLE 4
#define SMBIOS_PROCESSOR_STATUS_RESERVED_5 5
#define SMBIOS_PROCESSOR_STATUS_RESERVED_6 6
#define SMBIOS_PROCESSOR_STATUS_OTHER 7
#define SMBIOS_PROCESSOR_UPGRADE_OTHER 1
#define SMBIOS_PROCESSOR_UPGRADE_UNKNOWN 2
#define SMBIOS_PROCESSOR_UPGRADE_DAUGHTER_BOARD 3
#define SMBIOS_PROCESSOR_UPGRADE_ZIF_SOCKET 4
#define SMBIOS_PROCESSOR_UPGRADE_REPLACEABLE_PIGGY_BACK 5
#define SMBIOS_PROCESSOR_UPGRADE_NONE 6
#define SMBIOS_PROCESSOR_UPGRADE_LIF_SOCKET 7
#define SMBIOS_PROCESSOR_UPGRADE_SLOT_1 8
#define SMBIOS_PROCESSOR_UPGRADE_SLOT_2 9
#define SMBIOS_PROCESSOR_UPGRADE_370_PIN_SOCKET 10
#define SMBIOS_PROCESSOR_UPGRADE_SLOT_A 11
#define SMBIOS_PROCESSOR_UPGRADE_SLOT_M 12
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_423 13
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_A 14 // (Socket 462)
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_478 15
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_754 16
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_940 17
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_939 18
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_MPGA604 19
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA771 20
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA775 21
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_S1 22
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_AM2 23
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_F 24 // (1207)
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1366 25
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_G34 26
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_AM3 27
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_C32 28
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1156 29
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1567 30
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_PGA988A 31
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1288 32
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_RPGA988B 33
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1023 34
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1224 35
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1155 36
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1356 37
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA2011 38
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_FS1 39
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_FS2 40
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_FM1 41
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_FM2 42
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA2011_3 43
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1356_3 44
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1150 45
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1168 46
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1234 47
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1364 48
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_AM4 49
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1151 50
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1356 51
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1440 52
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1515 53
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA3647_1 54
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_SP3 55
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_SP3R2 56
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA2066 57
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1392 58
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1510 59
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1528 60
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA4189 61
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1200 62
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA4677 63
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1700 64
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1744 65
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1781 66
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1211 67
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA2422 68
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1211 69
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA2422 70
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA5773 71
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA5773 72
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_AM5 73
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_SP5 74
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_SP6 75
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA883 76
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1190 77
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA4129 78
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA4710 79
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA7529 80
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1964 81
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA1792 82
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA2049 83
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA2551 84
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_LGA1851 85
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA2114 86
#define SMBIOS_PROCESSOR_UPGRADE_SOCKET_BGA2833 87
#define SMBIOS_PROCESSOR_UPGRADE_INVALID 255
#define SMBIOS_PROCESSOR_FLAG_RESERVED ((USHORT)0x0001)
#define SMBIOS_PROCESSOR_FLAG_UNKNOWN ((USHORT)0x0002)
#define SMBIOS_PROCESSOR_FLAG_64_BIT_CAPABLE ((USHORT)0x0004)
#define SMBIOS_PROCESSOR_FLAG_MILT_CORE ((USHORT)0x0008)
#define SMBIOS_PROCESSOR_FLAG_HARDWARE_THREADED ((USHORT)0x0010)
#define SMBIOS_PROCESSOR_FLAG_EXECUTE_PROTECTION ((USHORT)0x0020)
#define SMBIOS_PROCESSOR_FLAG_ENHANCED_VIRTUALIZATION ((USHORT)0x0040)
#define SMBIOS_PROCESSOR_FLAG_POWER_PERFORMANCE_CONTROL ((USHORT)0x0080)
#define SMBIOS_PROCESSOR_FLAG_128_BIT_CAPABLE ((USHORT)0x0100)
#define SMBIOS_PROCESSOR_FLAG_ARM64_SOC ((USHORT)0x0200)
#define SMBIOS_PROCESSOR_FLAG_RESERVED_2 ((USHORT)0xFC00)
//
// Memory Controller Information (Type 5, Obsolete)
//
#define SMBIOS_MEMORY_CONTROLLER_INFORMATION_TYPE ((UCHAR)5)
typedef struct _SMBIOS_MEMORY_CONTROLLER_INFORMATION
{
SMBIOS_HEADER Header;
// 2.0+
UCHAR ErrorDetectionMethod; // SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_*
UCHAR ErrorCorrectionCapabilities; // SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_*
UCHAR SupportedInterleave; // SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_*
UCHAR CurrentInterleave; // SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_*
UCHAR MaximumModuleSize; // 2^n
USHORT SupportedSpeeds; // SMBIOS_MEMORY_CONTROLLER_SPEEDS_*
USHORT SupportedTypes; // SMBIOS_MEMORY_MODULE_TYPE_*
union
{
struct
{
UCHAR Requires5000mV : 1; // 5V
UCHAR Requires3500mV : 1; // 3.3V
UCHAR Requires2900mV : 1; // 2.9V
UCHAR Reserved : 5;
};
UCHAR Value;
} ModuleVoltage;
UCHAR NumberOfSlots;
USHORT SlotHandles[ANYSIZE_ARRAY];
// 2.1+
// SMBIOS_MEMORY_CONTROLLER_INFORMATION_EX
} SMBIOS_MEMORY_CONTROLLER_INFORMATION, *PSMBIOS_MEMORY_CONTROLLER_INFORMATION;
C_ASSERT(sizeof(SMBIOS_MEMORY_CONTROLLER_INFORMATION) == 0x11);
typedef struct _SMBIOS_MEMORY_CONTROLLER_INFORMATION_EX
{
UCHAR EnabledErrorCorrectionCapabilities; // SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_*
} SMBIOS_MEMORY_CONTROLLER_INFORMATION_EX, *PSMBIOS_MEMORY_CONTROLLER_INFORMATION_EX;
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_OTHER ((UCHAR)1)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_UNKNOWN ((UCHAR)2)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_NONE ((UCHAR)3)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_8_BIT_PARITY ((UCHAR)4)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_32_BIT_ECC ((UCHAR)5)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_64_BIT_ECC ((UCHAR)6)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_128_BIT_ECC ((UCHAR)7)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_DETECTION_CRC ((UCHAR)8)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_OTHER ((UCHAR)0x01)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_UNKNOWN ((UCHAR)0x02)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_SINGLE_BIT ((UCHAR)0x04)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_DOUBLE_BIT ((UCHAR)0x10)
#define SMBIOS_MEMORY_CONTROLLER_ERROR_CORRECTION_SCRUBBING ((UCHAR)0x20)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_OTHER ((UCHAR)1)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_UNKNOWN ((UCHAR)2)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_ONE_WAY ((UCHAR)3)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_TWO_WAY ((UCHAR)4)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_FOUR_WAY ((UCHAR)5)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_EIGHT_WAY ((UCHAR)6)
#define SMBIOS_MEMORY_CONTROLLER_INTERLEAVE_SIXTEEN_WAY ((UCHAR)7)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_OTHER ((USHORT)0x0001)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_UNKNOWN ((USHORT)0x0002)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_70NS ((USHORT)0x0004)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_60NS ((USHORT)0x0008)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_50NS ((USHORT)0x0010)
#define SMBIOS_MEMORY_CONTROLLER_SPEEDS_RESERVED ((USHORT)0xFFE0)
//
// Memory Module Information (Type 6, Obsolete)
//
#define SMBIOS_MEMORY_MODULE_INFORMATION_TYPE ((UCHAR)6)
typedef union _SMBIOS_MEMORY_MODULE_SIZE
{
struct
{
UCHAR Size : 7;
UCHAR DoubleBank : 1;
};
UCHAR Value; // SMBIOS_MEMORY_MODULE_SIZE_VALUE_*
} SMBIOS_MEMORY_MODULE_SIZE, *PSMBIOS_MEMORY_MODULE_SIZE;
#define SMBIOS_MEMORY_MODULE_SIZE_VALUE_NOT_DETERMINABLE ((UCHAR)0x7D)
#define SMBIOS_MEMORY_MODULE_SIZE_VALUE_NOT_ENABLED ((UCHAR)0x7E)
#define SMBIOS_MEMORY_MODULE_SIZE_VALUE_NOT_INSTALLED ((UCHAR)0x7F)
typedef struct _SMBIOS_MEMORY_MODULE_INFORMATION
{
SMBIOS_HEADER Header;
UCHAR SocketDesignation; // string
UCHAR BankConnections;
UCHAR CurrentSpeed;
USHORT MemoryType; // SMBIOS_MEMORY_MODULE_TYPE_*
SMBIOS_MEMORY_MODULE_SIZE InstalledSize;
SMBIOS_MEMORY_MODULE_SIZE EnabledSize;
union
{
struct
{
UCHAR UncorrectableErrors : 1;
UCHAR CorrectableErrors : 1;
UCHAR SeeEventLog : 1;
UCHAR Reserved : 5;
};
UCHAR Value;
} ErrorStatus;
} SMBIOS_MEMORY_MODULE_INFORMATION, *PSMBIOS_MEMORY_MODULE_INFORMATION;
C_ASSERT(sizeof(SMBIOS_MEMORY_MODULE_INFORMATION) == 0xC);
#define SMBIOS_MEMORY_MODULE_TYPE_OTHER ((USHORT)0x0001)
#define SMBIOS_MEMORY_MODULE_TYPE_UNKNOWN ((USHORT)0x0002)
#define SMBIOS_MEMORY_MODULE_TYPE_STANDARD ((USHORT)0x0004)
#define SMBIOS_MEMORY_MODULE_TYPE_FAST_PAGE_MODE ((USHORT)0x0008)
#define SMBIOS_MEMORY_MODULE_TYPE_EDO ((USHORT)0x0010)
#define SMBIOS_MEMORY_MODULE_TYPE_PARITY ((USHORT)0x0020)
#define SMBIOS_MEMORY_MODULE_TYPE_ECC ((USHORT)0x0040)
#define SMBIOS_MEMORY_MODULE_TYPE_SIMM ((USHORT)0x0080)
#define SMBIOS_MEMORY_MODULE_TYPE_DIMM ((USHORT)0x0100)
#define SMBIOS_MEMORY_MODULE_TYPE_BURST_EDO ((USHORT)0x0200)
#define SMBIOS_MEMORY_MODULE_TYPE_SDRAM ((USHORT)0x0400)
#define SMBIOS_MEMORY_MODULE_TYPE_RESERVED ((USHORT)0xF800)
//
// Cache Information (Type 7)
//
#define SMBIOS_CACHE_INFORMATION_TYPE ((UCHAR)7)
typedef union _SMBIOS_CACHE_USHORT
{