]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/SmBios.h
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / SmBios.h
1 /** @file
2 Industry Standard Definitions of SMBIOS Table Specification v2.6.1
3
4 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef __SMBIOS_STANDARD_H__
16 #define __SMBIOS_STANDARD_H__
17
18 ///
19 /// Reference SMBIOS 2.6, chapter 3.1.2.
20 /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
21 /// use by this specification.
22 ///
23 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
24
25 ///
26 /// Reference SMBIOS 2.6, chapter 3.1.3.
27 /// Each text string is limited to 64 significant characters due to system MIF limitations.
28 ///
29 #define SMBIOS_STRING_MAX_LENGTH 64
30
31 ///
32 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
33 /// Upper-level software that interprets the SMBIOS structure-table should bypass an
34 /// Inactive structure just like a structure type that the software does not recognize.
35 ///
36 #define SMBIOS_TYPE_INACTIVE 0x007E
37
38 ///
39 /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
40 /// The end-of-table indicator is used in the last physical structure in a table
41 ///
42 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
43
44 ///
45 /// Smbios Table Entry Point Structure.
46 ///
47 #pragma pack(1)
48 typedef struct {
49 UINT8 AnchorString[4];
50 UINT8 EntryPointStructureChecksum;
51 UINT8 EntryPointLength;
52 UINT8 MajorVersion;
53 UINT8 MinorVersion;
54 UINT16 MaxStructureSize;
55 UINT8 EntryPointRevision;
56 UINT8 FormattedArea[5];
57 UINT8 IntermediateAnchorString[5];
58 UINT8 IntermediateChecksum;
59 UINT16 TableLength;
60 UINT32 TableAddress;
61 UINT16 NumberOfSmbiosStructures;
62 UINT8 SmbiosBcdRevision;
63 } SMBIOS_TABLE_ENTRY_POINT;
64
65 ///
66 /// The Smbios structure header.
67 ///
68 typedef struct {
69 UINT8 Type;
70 UINT8 Length;
71 UINT16 Handle;
72 } SMBIOS_STRUCTURE;
73
74 ///
75 /// String Number for a Null terminated string, 00h stands for no string available.
76 ///
77 typedef UINT8 SMBIOS_TABLE_STRING;
78
79 ///
80 /// BIOS Characteristics
81 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
82 ///
83 typedef struct {
84 UINT32 Reserved :2; ///< Bits 0-1.
85 UINT32 Unknown :1;
86 UINT32 BiosCharacteristicsNotSupported :1;
87 UINT32 IsaIsSupported :1;
88 UINT32 McaIsSupported :1;
89 UINT32 EisaIsSupported :1;
90 UINT32 PciIsSupported :1;
91 UINT32 PcmciaIsSupported :1;
92 UINT32 PlugAndPlayIsSupported :1;
93 UINT32 ApmIsSupported :1;
94 UINT32 BiosIsUpgradable :1;
95 UINT32 BiosShadowingAllowed :1;
96 UINT32 VlVesaIsSupported :1;
97 UINT32 EscdSupportIsAvailable :1;
98 UINT32 BootFromCdIsSupported :1;
99 UINT32 SelectableBootIsSupported :1;
100 UINT32 RomBiosIsSocketed :1;
101 UINT32 BootFromPcmciaIsSupported :1;
102 UINT32 EDDSpecificationIsSupported :1;
103 UINT32 JapaneseNecFloppyIsSupported :1;
104 UINT32 JapaneseToshibaFloppyIsSupported :1;
105 UINT32 Floppy525_360IsSupported :1;
106 UINT32 Floppy525_12IsSupported :1;
107 UINT32 Floppy35_720IsSupported :1;
108 UINT32 Floppy35_288IsSupported :1;
109 UINT32 PrintScreenIsSupported :1;
110 UINT32 Keyboard8042IsSupported :1;
111 UINT32 SerialIsSupported :1;
112 UINT32 PrinterIsSupported :1;
113 UINT32 CgaMonoIsSupported :1;
114 UINT32 NecPc98 :1;
115 UINT32 ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
116 ///< and bits 48-63 reserved for System Vendor.
117 } MISC_BIOS_CHARACTERISTICS;
118
119 ///
120 /// BIOS Characteristics Extension Byte 1 .
121 /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h
122 /// within the BIOS Information structure.
123 ///
124 typedef struct {
125 UINT8 AcpiIsSupported :1;
126 UINT8 UsbLegacyIsSupported :1;
127 UINT8 AgpIsSupported :1;
128 UINT8 I20BootIsSupported :1;
129 UINT8 Ls120BootIsSupported :1;
130 UINT8 AtapiZipDriveBootIsSupported :1;
131 UINT8 Boot1394IsSupported :1;
132 UINT8 SmartBatteryIsSupported :1;
133 } MBCE_BIOS_RESERVED;
134
135 ///
136 /// BIOS Characteristics Extension Byte 2.
137 /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h
138 /// within the BIOS Information structure.
139 ///
140 typedef struct {
141 UINT8 BiosBootSpecIsSupported :1;
142 UINT8 FunctionKeyNetworkBootIsSupported :1;
143 UINT8 TargetContentDistributionEnabled :1;
144 UINT8 ExtensionByte2Reserved :1;
145 } MBCE_SYSTEM_RESERVED;
146
147 ///
148 /// BIOS Characteristics Extension Bytes.
149 ///
150 typedef struct {
151 MBCE_BIOS_RESERVED BiosReserved;
152 MBCE_SYSTEM_RESERVED SystemReserved;
153 UINT8 Reserved;
154 } MISC_BIOS_CHARACTERISTICS_EXTENSION;
155
156 ///
157 /// BIOS Information (Type 0).
158 ///
159 typedef struct {
160 SMBIOS_STRUCTURE Hdr;
161 SMBIOS_TABLE_STRING Vendor;
162 SMBIOS_TABLE_STRING BiosVersion;
163 UINT16 BiosSegment;
164 SMBIOS_TABLE_STRING BiosReleaseDate;
165 UINT8 BiosSize;
166 MISC_BIOS_CHARACTERISTICS BiosCharacteristics;
167 UINT8 BIOSCharacteristicsExtensionBytes[2];
168 UINT8 SystemBiosMajorRelease;
169 UINT8 SystemBiosMinorRelease;
170 UINT8 EmbeddedControllerFirmwareMajorRelease;
171 UINT8 EmbeddedControllerFirmwareMinorRelease;
172 } SMBIOS_TABLE_TYPE0;
173
174 ///
175 /// System Wake-up Type.
176 ///
177 typedef enum {
178 SystemWakeupTypeReserved = 0x00,
179 SystemWakeupTypeOther = 0x01,
180 SystemWakeupTypeUnknown = 0x02,
181 SystemWakeupTypeApmTimer = 0x03,
182 SystemWakeupTypeModemRing = 0x04,
183 SystemWakeupTypeLanRemote = 0x05,
184 SystemWakeupTypePowerSwitch = 0x06,
185 SystemWakeupTypePciPme = 0x07,
186 SystemWakeupTypeAcPowerRestored = 0x08
187 } MISC_SYSTEM_WAKEUP_TYPE;
188
189 ///
190 /// System Information (Type 1).
191 ///
192 /// The information in this structure defines attributes of the overall system and is
193 /// intended to be associated with the Component ID group of the system's MIF.
194 /// An SMBIOS implementation is associated with a single system instance and contains
195 /// one and only one System Information (Type 1) structure.
196 ///
197 typedef struct {
198 SMBIOS_STRUCTURE Hdr;
199 SMBIOS_TABLE_STRING Manufacturer;
200 SMBIOS_TABLE_STRING ProductName;
201 SMBIOS_TABLE_STRING Version;
202 SMBIOS_TABLE_STRING SerialNumber;
203 GUID Uuid;
204 UINT8 WakeUpType; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
205 SMBIOS_TABLE_STRING SKUNumber;
206 SMBIOS_TABLE_STRING Family;
207 } SMBIOS_TABLE_TYPE1;
208
209 ///
210 /// Base Board - Feature Flags.
211 ///
212 typedef struct {
213 UINT8 Motherboard :1;
214 UINT8 RequiresDaughterCard :1;
215 UINT8 Removable :1;
216 UINT8 Replaceable :1;
217 UINT8 HotSwappable :1;
218 UINT8 Reserved :3;
219 } BASE_BOARD_FEATURE_FLAGS;
220
221 ///
222 /// Base Board - Board Type.
223 ///
224 typedef enum {
225 BaseBoardTypeUnknown = 0x1,
226 BaseBoardTypeOther = 0x2,
227 BaseBoardTypeServerBlade = 0x3,
228 BaseBoardTypeConnectivitySwitch = 0x4,
229 BaseBoardTypeSystemManagementModule = 0x5,
230 BaseBoardTypeProcessorModule = 0x6,
231 BaseBoardTypeIOModule = 0x7,
232 BaseBoardTypeMemoryModule = 0x8,
233 BaseBoardTypeDaughterBoard = 0x9,
234 BaseBoardTypeMotherBoard = 0xA,
235 BaseBoardTypeProcessorMemoryModule = 0xB,
236 BaseBoardTypeProcessorIOModule = 0xC,
237 BaseBoardTypeInterconnectBoard = 0xD
238 } BASE_BOARD_TYPE;
239
240 ///
241 /// Base Board (or Module) Information (Type 2).
242 ///
243 /// The information in this structure defines attributes of a system baseboard -
244 /// for example a motherboard, planar, or server blade or other standard system module.
245 ///
246 typedef struct {
247 SMBIOS_STRUCTURE Hdr;
248 SMBIOS_TABLE_STRING Manufacturer;
249 SMBIOS_TABLE_STRING ProductName;
250 SMBIOS_TABLE_STRING Version;
251 SMBIOS_TABLE_STRING SerialNumber;
252 SMBIOS_TABLE_STRING AssetTag;
253 BASE_BOARD_FEATURE_FLAGS FeatureFlag;
254 SMBIOS_TABLE_STRING LocationInChassis;
255 UINT16 ChassisHandle;
256 UINT8 BoardType; ///< The enumeration value from BASE_BOARD_TYPE.
257 UINT8 NumberOfContainedObjectHandles;
258 UINT16 ContainedObjectHandles[1];
259 } SMBIOS_TABLE_TYPE2;
260
261 ///
262 /// System Enclosure or Chassis Types
263 ///
264 typedef enum {
265 MiscChassisTypeOther = 0x01,
266 MiscChassisTypeUnknown = 0x02,
267 MiscChassisTypeDeskTop = 0x03,
268 MiscChassisTypeLowProfileDesktop = 0x04,
269 MiscChassisTypePizzaBox = 0x05,
270 MiscChassisTypeMiniTower = 0x06,
271 MiscChassisTypeTower = 0x07,
272 MiscChassisTypePortable = 0x08,
273 MiscChassisTypeLapTop = 0x09,
274 MiscChassisTypeNotebook = 0x0A,
275 MiscChassisTypeHandHeld = 0x0B,
276 MiscChassisTypeDockingStation = 0x0C,
277 MiscChassisTypeAllInOne = 0x0D,
278 MiscChassisTypeSubNotebook = 0x0E,
279 MiscChassisTypeSpaceSaving = 0x0F,
280 MiscChassisTypeLunchBox = 0x10,
281 MiscChassisTypeMainServerChassis = 0x11,
282 MiscChassisTypeExpansionChassis = 0x12,
283 MiscChassisTypeSubChassis = 0x13,
284 MiscChassisTypeBusExpansionChassis = 0x14,
285 MiscChassisTypePeripheralChassis = 0x15,
286 MiscChassisTypeRaidChassis = 0x16,
287 MiscChassisTypeRackMountChassis = 0x17,
288 MiscChassisTypeSealedCasePc = 0x18,
289 MiscChassisMultiSystemChassis = 0x19,
290 MiscChassisCompactPCI = 0x1A,
291 MiscChassisAdvancedTCA = 0x1B,
292 MiscChassisBlade = 0x1C,
293 MiscChassisBladeEnclosure = 0x1D
294 } MISC_CHASSIS_TYPE;
295
296 ///
297 /// System Enclosure or Chassis States .
298 ///
299 typedef enum {
300 ChassisStateOther = 0x01,
301 ChassisStateUnknown = 0x02,
302 ChassisStateSafe = 0x03,
303 ChassisStateWarning = 0x04,
304 ChassisStateCritical = 0x05,
305 ChassisStateNonRecoverable = 0x06
306 } MISC_CHASSIS_STATE;
307
308 ///
309 /// System Enclosure or Chassis Security Status.
310 ///
311 typedef enum {
312 ChassisSecurityStatusOther = 0x01,
313 ChassisSecurityStatusUnknown = 0x02,
314 ChassisSecurityStatusNone = 0x03,
315 ChassisSecurityStatusExternalInterfaceLockedOut = 0x04,
316 ChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05
317 } MISC_CHASSIS_SECURITY_STATE;
318
319 ///
320 /// Contained Element record
321 ///
322 typedef struct {
323 UINT8 ContainedElementType;
324 UINT8 ContainedElementMinimum;
325 UINT8 ContainedElementMaximum;
326 } CONTAINED_ELEMENT;
327
328
329 ///
330 /// System Enclosure or Chassis (Type 3).
331 ///
332 /// The information in this structure defines attributes of the system's mechanical enclosure(s).
333 /// For example, if a system included a separate enclosure for its peripheral devices,
334 /// two structures would be returned: one for the main, system enclosure and the second for
335 /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification
336 /// support the population of the CIM_Chassis class.
337 ///
338 typedef struct {
339 SMBIOS_STRUCTURE Hdr;
340 SMBIOS_TABLE_STRING Manufacturer;
341 UINT8 Type;
342 SMBIOS_TABLE_STRING Version;
343 SMBIOS_TABLE_STRING SerialNumber;
344 SMBIOS_TABLE_STRING AssetTag;
345 UINT8 BootupState; ///< The enumeration value from MISC_CHASSIS_STATE.
346 UINT8 PowerSupplyState; ///< The enumeration value from MISC_CHASSIS_STATE.
347 UINT8 ThermalState; ///< The enumeration value from MISC_CHASSIS_STATE.
348 UINT8 SecurityStatus; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.
349 UINT8 OemDefined[4];
350 UINT8 Height;
351 UINT8 NumberofPowerCords;
352 UINT8 ContainedElementCount;
353 UINT8 ContainedElementRecordLength;
354 CONTAINED_ELEMENT ContainedElements[1];
355 } SMBIOS_TABLE_TYPE3;
356
357 ///
358 /// Processor Information - Processor Type.
359 ///
360 typedef enum {
361 ProcessorOther = 0x01,
362 ProcessorUnknown = 0x02,
363 CentralProcessor = 0x03,
364 MathProcessor = 0x04,
365 DspProcessor = 0x05,
366 VideoProcessor = 0x06
367 } PROCESSOR_TYPE_DATA;
368
369 ///
370 /// Processor Information - Processor Family.
371 ///
372 typedef enum {
373 ProcessorFamilyOther = 0x01,
374 ProcessorFamilyUnknown = 0x02,
375 ProcessorFamily8086 = 0x03,
376 ProcessorFamily80286 = 0x04,
377 ProcessorFamilyIntel386 = 0x05,
378 ProcessorFamilyIntel486 = 0x06,
379 ProcessorFamily8087 = 0x07,
380 ProcessorFamily80287 = 0x08,
381 ProcessorFamily80387 = 0x09,
382 ProcessorFamily80487 = 0x0A,
383 ProcessorFamilyPentium = 0x0B,
384 ProcessorFamilyPentiumPro = 0x0C,
385 ProcessorFamilyPentiumII = 0x0D,
386 ProcessorFamilyPentiumMMX = 0x0E,
387 ProcessorFamilyCeleron = 0x0F,
388 ProcessorFamilyPentiumIIXeon = 0x10,
389 ProcessorFamilyPentiumIII = 0x11,
390 ProcessorFamilyM1 = 0x12,
391 ProcessorFamilyM2 = 0x13,
392 ProcessorFamilyM1Reserved2 = 0x14,
393 ProcessorFamilyM1Reserved3 = 0x15,
394 ProcessorFamilyM1Reserved4 = 0x16,
395 ProcessorFamilyM1Reserved5 = 0x17,
396 ProcessorFamilyAmdDuron = 0x18,
397 ProcessorFamilyK5 = 0x19,
398 ProcessorFamilyK6 = 0x1A,
399 ProcessorFamilyK6_2 = 0x1B,
400 ProcessorFamilyK6_3 = 0x1C,
401 ProcessorFamilyAmdAthlon = 0x1D,
402 ProcessorFamilyAmd29000 = 0x1E,
403 ProcessorFamilyK6_2Plus = 0x1F,
404 ProcessorFamilyPowerPC = 0x20,
405 ProcessorFamilyPowerPC601 = 0x21,
406 ProcessorFamilyPowerPC603 = 0x22,
407 ProcessorFamilyPowerPC603Plus = 0x23,
408 ProcessorFamilyPowerPC604 = 0x24,
409 ProcessorFamilyPowerPC620 = 0x25,
410 ProcessorFamilyPowerPCx704 = 0x26,
411 ProcessorFamilyPowerPC750 = 0x27,
412 ProcessorFamilyIntelCoreDuo = 0x28,
413 ProcessorFamilyIntelCoreDuoMobile = 0x29,
414 ProcessorFamilyIntelCoreSoloMobile = 0x2A,
415 ProcessorFamilyIntelAtom = 0x2B,
416 ProcessorFamilyAlpha3 = 0x30,
417 ProcessorFamilyAlpha21064 = 0x31,
418 ProcessorFamilyAlpha21066 = 0x32,
419 ProcessorFamilyAlpha21164 = 0x33,
420 ProcessorFamilyAlpha21164PC = 0x34,
421 ProcessorFamilyAlpha21164a = 0x35,
422 ProcessorFamilyAlpha21264 = 0x36,
423 ProcessorFamilyAlpha21364 = 0x37,
424 ProcessorFamilyMips = 0x40,
425 ProcessorFamilyMIPSR4000 = 0x41,
426 ProcessorFamilyMIPSR4200 = 0x42,
427 ProcessorFamilyMIPSR4400 = 0x43,
428 ProcessorFamilyMIPSR4600 = 0x44,
429 ProcessorFamilyMIPSR10000 = 0x45,
430 ProcessorFamilySparc = 0x50,
431 ProcessorFamilySuperSparc = 0x51,
432 ProcessorFamilymicroSparcII = 0x52,
433 ProcessorFamilymicroSparcIIep = 0x53,
434 ProcessorFamilyUltraSparc = 0x54,
435 ProcessorFamilyUltraSparcII = 0x55,
436 ProcessorFamilyUltraSparcIIi = 0x56,
437 ProcessorFamilyUltraSparcIII = 0x57,
438 ProcessorFamilyUltraSparcIIIi = 0x58,
439 ProcessorFamily68040 = 0x60,
440 ProcessorFamily68xxx = 0x61,
441 ProcessorFamily68000 = 0x62,
442 ProcessorFamily68010 = 0x63,
443 ProcessorFamily68020 = 0x64,
444 ProcessorFamily68030 = 0x65,
445 ProcessorFamilyHobbit = 0x70,
446 ProcessorFamilyCrusoeTM5000 = 0x78,
447 ProcessorFamilyCrusoeTM3000 = 0x79,
448 ProcessorFamilyEfficeonTM8000 = 0x7A,
449 ProcessorFamilyWeitek = 0x80,
450 ProcessorFamilyItanium = 0x82,
451 ProcessorFamilyAmdAthlon64 = 0x83,
452 ProcessorFamilyAmdOpteron = 0x84,
453 ProcessorFamilyAmdSempron = 0x85,
454 ProcessorFamilyAmdTurion64Mobile = 0x86,
455 ProcessorFamilyDualCoreAmdOpteron = 0x87,
456 ProcessorFamilyAmdAthlon64X2DualCore = 0x88,
457 ProcessorFamilyAmdTurion64X2Mobile = 0x89,
458 ProcessorFamilyQuadCoreAmdOpteron = 0x8A,
459 ProcessorFamilyThirdGenerationAmdOpteron = 0x8B,
460 ProcessorFamilyAmdPhenomFxQuadCore = 0x8C,
461 ProcessorFamilyAmdPhenomX4QuadCore = 0x8D,
462 ProcessorFamilyAmdPhenomX2DualCore = 0x8E,
463 ProcessorFamilyAmdAthlonX2DualCore = 0x8F,
464 ProcessorFamilyPARISC = 0x90,
465 ProcessorFamilyPaRisc8500 = 0x91,
466 ProcessorFamilyPaRisc8000 = 0x92,
467 ProcessorFamilyPaRisc7300LC = 0x93,
468 ProcessorFamilyPaRisc7200 = 0x94,
469 ProcessorFamilyPaRisc7100LC = 0x95,
470 ProcessorFamilyPaRisc7100 = 0x96,
471 ProcessorFamilyV30 = 0xA0,
472 ProcessorFamilyQuadCoreIntelXeon3200Series = 0xA1,
473 ProcessorFamilyDualCoreIntelXeon3000Series = 0xA2,
474 ProcessorFamilyQuadCoreIntelXeon5300Series = 0xA3,
475 ProcessorFamilyDualCoreIntelXeon5100Series = 0xA4,
476 ProcessorFamilyDualCoreIntelXeon5000Series = 0xA5,
477 ProcessorFamilyDualCoreIntelXeonLV = 0xA6,
478 ProcessorFamilyDualCoreIntelXeonULV = 0xA7,
479 ProcessorFamilyDualCoreIntelXeon7100Series = 0xA8,
480 ProcessorFamilyQuadCoreIntelXeon5400Series = 0xA9,
481 ProcessorFamilyQuadCoreIntelXeon = 0xAA,
482 ProcessorFamilyDualCoreIntelXeon5200Series = 0xAB,
483 ProcessorFamilyDualCoreIntelXeon7200Series = 0xAC,
484 ProcessorFamilyQuadCoreIntelXeon7300Series = 0xAD,
485 ProcessorFamilyQuadCoreIntelXeon7400Series = 0xAE,
486 ProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF,
487 ProcessorFamilyPentiumIIIXeon = 0xB0,
488 ProcessorFamilyPentiumIIISpeedStep = 0xB1,
489 ProcessorFamilyPentium4 = 0xB2,
490 ProcessorFamilyIntelXeon = 0xB3,
491 ProcessorFamilyAS400 = 0xB4,
492 ProcessorFamilyIntelXeonMP = 0xB5,
493 ProcessorFamilyAMDAthlonXP = 0xB6,
494 ProcessorFamilyAMDAthlonMP = 0xB7,
495 ProcessorFamilyIntelItanium2 = 0xB8,
496 ProcessorFamilyIntelPentiumM = 0xB9,
497 ProcessorFamilyIntelCeleronD = 0xBA,
498 ProcessorFamilyIntelPentiumD = 0xBB,
499 ProcessorFamilyIntelPentiumEx = 0xBC,
500 ProcessorFamilyIntelCoreSolo = 0xBD, ///< SMBIOS spec 2.6 correct this value
501 ProcessorFamilyReserved = 0xBE,
502 ProcessorFamilyIntelCore2 = 0xBF,
503 ProcessorFamilyIntelCore2Solo = 0xC0,
504 ProcessorFamilyIntelCore2Extreme = 0xC1,
505 ProcessorFamilyIntelCore2Quad = 0xC2,
506 ProcessorFamilyIntelCore2ExtremeMobile = 0xC3,
507 ProcessorFamilyIntelCore2DuoMobile = 0xC4,
508 ProcessorFamilyIntelCore2SoloMobile = 0xC5,
509 ProcessorFamilyIntelCoreI7 = 0xC6,
510 ProcessorFamilyDualCoreIntelCeleron = 0xC7,
511 ProcessorFamilyIBM390 = 0xC8,
512 ProcessorFamilyG4 = 0xC9,
513 ProcessorFamilyG5 = 0xCA,
514 ProcessorFamilyG6 = 0xCB,
515 ProcessorFamilyzArchitectur = 0xCC,
516 ProcessorFamilyViaC7M = 0xD2,
517 ProcessorFamilyViaC7D = 0xD3,
518 ProcessorFamilyViaC7 = 0xD4,
519 ProcessorFamilyViaEden = 0xD5,
520 ProcessorFamilyMultiCoreIntelXeon = 0xD6,
521 ProcessorFamilyDualCoreIntelXeon3Series = 0xD7,
522 ProcessorFamilyQuadCoreIntelXeon3Series = 0xD8,
523 ProcessorFamilyDualCoreIntelXeon5Series = 0xDA,
524 ProcessorFamilyQuadCoreIntelXeon5Series = 0xDB,
525 ProcessorFamilyDualCoreIntelXeon7Series = 0xDD,
526 ProcessorFamilyQuadCoreIntelXeon7Series = 0xDE,
527 ProcessorFamilyMultiCoreIntelXeon7Series = 0xDF,
528 ProcessorFamilyEmbeddedAmdOpteronQuadCore = 0xE6,
529 ProcessorFamilyAmdPhenomTripleCore = 0xE7,
530 ProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8,
531 ProcessorFamilyAmdTurionDualCoreMobile = 0xE9,
532 ProcessorFamilyAmdAthlonDualCore = 0xEA,
533 ProcessorFamilyAmdSempronSI = 0xEB,
534 ProcessorFamilyi860 = 0xFA,
535 ProcessorFamilyi960 = 0xFB,
536 ProcessorFamilyIndicatorFamily2 = 0xFE,
537 ProcessorFamilyReserved1 = 0xFF
538 } PROCESSOR_FAMILY_DATA;
539
540 ///
541 /// Processor Information - Voltage.
542 ///
543 typedef struct {
544 UINT8 ProcessorVoltageCapability5V :1;
545 UINT8 ProcessorVoltageCapability3_3V :1;
546 UINT8 ProcessorVoltageCapability2_9V :1;
547 UINT8 ProcessorVoltageCapabilityReserved :1; ///< Bit 3, must be zero.
548 UINT8 ProcessorVoltageReserved :3; ///< Bits 4-6, must be zero.
549 UINT8 ProcessorVoltageIndicateLegacy :1;
550 } PROCESSOR_VOLTAGE;
551
552 ///
553 /// Processor Information - Processor Upgrade.
554 ///
555 typedef enum {
556 ProcessorUpgradeOther = 0x01,
557 ProcessorUpgradeUnknown = 0x02,
558 ProcessorUpgradeDaughterBoard = 0x03,
559 ProcessorUpgradeZIFSocket = 0x04,
560 ProcessorUpgradePiggyBack = 0x05, ///< Replaceable.
561 ProcessorUpgradeNone = 0x06,
562 ProcessorUpgradeLIFSocket = 0x07,
563 ProcessorUpgradeSlot1 = 0x08,
564 ProcessorUpgradeSlot2 = 0x09,
565 ProcessorUpgrade370PinSocket = 0x0A,
566 ProcessorUpgradeSlotA = 0x0B,
567 ProcessorUpgradeSlotM = 0x0C,
568 ProcessorUpgradeSocket423 = 0x0D,
569 ProcessorUpgradeSocketA = 0x0E, ///< Socket 462.
570 ProcessorUpgradeSocket478 = 0x0F,
571 ProcessorUpgradeSocket754 = 0x10,
572 ProcessorUpgradeSocket940 = 0x11,
573 ProcessorUpgradeSocket939 = 0x12,
574 ProcessorUpgradeSocketmPGA604 = 0x13,
575 ProcessorUpgradeSocketLGA771 = 0x14,
576 ProcessorUpgradeSocketLGA775 = 0x15,
577 ProcessorUpgradeSocketS1 = 0x16,
578 ProcessorUpgradeAM2 = 0x17,
579 ProcessorUpgradeF1207 = 0x18,
580 ProcessorSocketLGA1366 = 0x19
581 } PROCESSOR_UPGRADE;
582
583 ///
584 /// Processor ID Field Description
585 ///
586 typedef struct {
587 UINT32 ProcessorSteppingId:4;
588 UINT32 ProcessorModel: 4;
589 UINT32 ProcessorFamily: 4;
590 UINT32 ProcessorType: 2;
591 UINT32 ProcessorReserved1: 2;
592 UINT32 ProcessorXModel: 4;
593 UINT32 ProcessorXFamily: 8;
594 UINT32 ProcessorReserved2: 4;
595 } PROCESSOR_SIGNATURE;
596
597 typedef struct {
598 UINT32 ProcessorFpu :1;
599 UINT32 ProcessorVme :1;
600 UINT32 ProcessorDe :1;
601 UINT32 ProcessorPse :1;
602 UINT32 ProcessorTsc :1;
603 UINT32 ProcessorMsr :1;
604 UINT32 ProcessorPae :1;
605 UINT32 ProcessorMce :1;
606 UINT32 ProcessorCx8 :1;
607 UINT32 ProcessorApic :1;
608 UINT32 ProcessorReserved1 :1;
609 UINT32 ProcessorSep :1;
610 UINT32 ProcessorMtrr :1;
611 UINT32 ProcessorPge :1;
612 UINT32 ProcessorMca :1;
613 UINT32 ProcessorCmov :1;
614 UINT32 ProcessorPat :1;
615 UINT32 ProcessorPse36 :1;
616 UINT32 ProcessorPsn :1;
617 UINT32 ProcessorClfsh :1;
618 UINT32 ProcessorReserved2 :1;
619 UINT32 ProcessorDs :1;
620 UINT32 ProcessorAcpi :1;
621 UINT32 ProcessorMmx :1;
622 UINT32 ProcessorFxsr :1;
623 UINT32 ProcessorSse :1;
624 UINT32 ProcessorSse2 :1;
625 UINT32 ProcessorSs :1;
626 UINT32 ProcessorReserved3 :1;
627 UINT32 ProcessorTm :1;
628 UINT32 ProcessorReserved4 :2;
629 } PROCESSOR_FEATURE_FLAGS;
630
631 typedef struct {
632 PROCESSOR_SIGNATURE Signature;
633 PROCESSOR_FEATURE_FLAGS FeatureFlags;
634 } PROCESSOR_ID_DATA;
635
636 ///
637 /// Processor Information (Type 4).
638 ///
639 /// The information in this structure defines the attributes of a single processor;
640 /// a separate structure instance is provided for each system processor socket/slot.
641 /// For example, a system with an IntelDX2 processor would have a single
642 /// structure instance, while a system with an IntelSX2 processor would have a structure
643 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
644 ///
645 typedef struct {
646 SMBIOS_STRUCTURE Hdr;
647 SMBIOS_TABLE_STRING Socket;
648 UINT8 ProcessorType; ///< The enumeration value from PROCESSOR_TYPE_DATA.
649 UINT8 ProcessorFamily; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
650 SMBIOS_TABLE_STRING ProcessorManufacture;
651 PROCESSOR_ID_DATA ProcessorId;
652 SMBIOS_TABLE_STRING ProcessorVersion;
653 PROCESSOR_VOLTAGE Voltage;
654 UINT16 ExternalClock;
655 UINT16 MaxSpeed;
656 UINT16 CurrentSpeed;
657 UINT8 Status;
658 UINT8 ProcessorUpgrade; ///< The enumeration value from PROCESSOR_UPGRADE.
659 UINT16 L1CacheHandle;
660 UINT16 L2CacheHandle;
661 UINT16 L3CacheHandle;
662 SMBIOS_TABLE_STRING SerialNumber;
663 SMBIOS_TABLE_STRING AssetTag;
664 SMBIOS_TABLE_STRING PartNumber;
665 //
666 // Add for smbios 2.5
667 //
668 UINT8 CoreCount;
669 UINT8 EnabledCoreCount;
670 UINT8 ThreadCount;
671 UINT16 ProcessorCharacteristics;
672 //
673 // Add for smbios 2.6
674 //
675 UINT16 ProcessorFamily2;
676 } SMBIOS_TABLE_TYPE4;
677
678 ///
679 /// Memory Controller Error Detecting Method.
680 ///
681 typedef enum {
682 ErrorDetectingMethodOther = 0x01,
683 ErrorDetectingMethodUnknown = 0x02,
684 ErrorDetectingMethodNone = 0x03,
685 ErrorDetectingMethodParity = 0x04,
686 ErrorDetectingMethod32Ecc = 0x05,
687 ErrorDetectingMethod64Ecc = 0x06,
688 ErrorDetectingMethod128Ecc = 0x07,
689 ErrorDetectingMethodCrc = 0x08
690 } MEMORY_ERROR_DETECT_METHOD;
691
692 ///
693 /// Memory Controller Error Correcting Capability.
694 ///
695 typedef struct {
696 UINT8 Other :1;
697 UINT8 Unknown :1;
698 UINT8 None :1;
699 UINT8 SingleBitErrorCorrect :1;
700 UINT8 DoubleBitErrorCorrect :1;
701 UINT8 ErrorScrubbing :1;
702 UINT8 Reserved :2;
703 } MEMORY_ERROR_CORRECT_CAPABILITY;
704
705 ///
706 /// Memory Controller Information - Interleave Support.
707 ///
708 typedef enum {
709 MemoryInterleaveOther = 0x01,
710 MemoryInterleaveUnknown = 0x02,
711 MemoryInterleaveOneWay = 0x03,
712 MemoryInterleaveTwoWay = 0x04,
713 MemoryInterleaveFourWay = 0x05,
714 MemoryInterleaveEightWay = 0x06,
715 MemoryInterleaveSixteenWay = 0x07
716 } MEMORY_SUPPORT_INTERLEAVE_TYPE;
717
718 ///
719 /// Memory Controller Information - Memory Speeds.
720 ///
721 typedef struct {
722 UINT16 Other :1;
723 UINT16 Unknown :1;
724 UINT16 SeventyNs:1;
725 UINT16 SixtyNs :1;
726 UINT16 FiftyNs :1;
727 UINT16 Reserved :11;
728 } MEMORY_SPEED_TYPE;
729
730 ///
731 /// Memory Controller Information (Type 5, Obsolete).
732 ///
733 /// The information in this structure defines the attributes of the system's memory controller(s)
734 /// and the supported attributes of any memory-modules present in the sockets controlled by
735 /// this controller.
736 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
737 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
738 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
739 /// choose to implement both memory description types to allow existing DMI browsers
740 /// to properly display the system's memory attributes.
741 ///
742 typedef struct {
743 SMBIOS_STRUCTURE Hdr;
744 UINT8 ErrDetectMethod; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
745 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability;
746 UINT8 SupportInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
747 UINT8 CurrentInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
748 UINT8 MaxMemoryModuleSize;
749 MEMORY_SPEED_TYPE SupportSpeed;
750 UINT16 SupportMemoryType;
751 UINT8 MemoryModuleVoltage;
752 UINT8 AssociatedMemorySlotNum;
753 UINT16 MemoryModuleConfigHandles[1];
754 } SMBIOS_TABLE_TYPE5;
755
756 ///
757 /// Memory Module Information - Memory Types
758 ///
759 typedef struct {
760 UINT16 Other :1;
761 UINT16 Unknown :1;
762 UINT16 Standard :1;
763 UINT16 FastPageMode:1;
764 UINT16 Edo :1;
765 UINT16 Parity :1;
766 UINT16 Ecc :1;
767 UINT16 Simm :1;
768 UINT16 Dimm :1;
769 UINT16 BurstEdo :1;
770 UINT16 Sdram :1;
771 UINT16 Reserved :5;
772 } MEMORY_CURRENT_TYPE;
773
774 ///
775 /// Memory Module Information - Memory Size.
776 ///
777 typedef struct {
778 UINT8 InstalledOrEnabledSize :7; ///< Size (n), where 2**n is the size in MB.
779 UINT8 SingleOrDoubleBank :1;
780 } MEMORY_INSTALLED_ENABLED_SIZE;
781
782 ///
783 /// Memory Module Information (Type 6, Obsolete)
784 ///
785 /// One Memory Module Information structure is included for each memory-module socket
786 /// in the system. The structure describes the speed, type, size, and error status
787 /// of each system memory module. The supported attributes of each module are described
788 /// by the "owning" Memory Controller Information structure.
789 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
790 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
791 /// and Memory Device (Type 17) structures should be used instead.
792 ///
793 typedef struct {
794 SMBIOS_STRUCTURE Hdr;
795 SMBIOS_TABLE_STRING SocketDesignation;
796 UINT8 BankConnections;
797 UINT8 CurrentSpeed;
798 MEMORY_CURRENT_TYPE CurrentMemoryType;
799 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize;
800 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize;
801 UINT8 ErrorStatus;
802 } SMBIOS_TABLE_TYPE6;
803
804 ///
805 /// Cache Information - SRAM Type.
806 ///
807 typedef struct {
808 UINT16 Other :1;
809 UINT16 Unknown :1;
810 UINT16 NonBurst :1;
811 UINT16 Burst :1;
812 UINT16 PipelineBurst :1;
813 UINT16 Asynchronous :1;
814 UINT16 Synchronous :1;
815 UINT16 Reserved :9;
816 } CACHE_SRAM_TYPE_DATA;
817
818 ///
819 /// Cache Information - Error Correction Type.
820 ///
821 typedef enum {
822 CacheErrorOther = 0x01,
823 CacheErrorUnknown = 0x02,
824 CacheErrorNone = 0x03,
825 CacheErrorParity = 0x04,
826 CacheErrorSingleBit = 0x05, ///< ECC
827 CacheErrorMultiBit = 0x06 ///< ECC
828 } CACHE_ERROR_TYPE_DATA;
829
830 ///
831 /// Cache Information - System Cache Type.
832 ///
833 typedef enum {
834 CacheTypeOther = 0x01,
835 CacheTypeUnknown = 0x02,
836 CacheTypeInstruction = 0x03,
837 CacheTypeData = 0x04,
838 CacheTypeUnified = 0x05
839 } CACHE_TYPE_DATA;
840
841 ///
842 /// Cache Information - Associativity.
843 ///
844 typedef enum {
845 CacheAssociativityOther = 0x01,
846 CacheAssociativityUnknown = 0x02,
847 CacheAssociativityDirectMapped = 0x03,
848 CacheAssociativity2Way = 0x04,
849 CacheAssociativity4Way = 0x05,
850 CacheAssociativityFully = 0x06,
851 CacheAssociativity8Way = 0x07,
852 CacheAssociativity16Way = 0x08,
853 CacheAssociativity12Way = 0x09,
854 CacheAssociativity24Way = 0x0A,
855 CacheAssociativity32Way = 0x0B,
856 CacheAssociativity48Way = 0x0C,
857 CacheAssociativity64Way = 0x0D
858 } CACHE_ASSOCIATIVITY_DATA;
859
860 ///
861 /// Cache Information (Type 7).
862 ///
863 /// The information in this structure defines the attributes of CPU cache device in the system.
864 /// One structure is specified for each such device, whether the device is internal to
865 /// or external to the CPU module. Cache modules can be associated with a processor structure
866 /// in one or two ways, depending on the SMBIOS version.
867 ///
868 typedef struct {
869 SMBIOS_STRUCTURE Hdr;
870 SMBIOS_TABLE_STRING SocketDesignation;
871 UINT16 CacheConfiguration;
872 UINT16 MaximumCacheSize;
873 UINT16 InstalledSize;
874 CACHE_SRAM_TYPE_DATA SupportedSRAMType;
875 CACHE_SRAM_TYPE_DATA CurrentSRAMType;
876 UINT8 CacheSpeed;
877 UINT8 ErrorCorrectionType; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
878 UINT8 SystemCacheType; ///< The enumeration value from CACHE_TYPE_DATA.
879 UINT8 Associativity; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
880 } SMBIOS_TABLE_TYPE7;
881
882 ///
883 /// Port Connector Information - Connector Types.
884 ///
885 typedef enum {
886 PortConnectorTypeNone = 0x00,
887 PortConnectorTypeCentronics = 0x01,
888 PortConnectorTypeMiniCentronics = 0x02,
889 PortConnectorTypeProprietary = 0x03,
890 PortConnectorTypeDB25Male = 0x04,
891 PortConnectorTypeDB25Female = 0x05,
892 PortConnectorTypeDB15Male = 0x06,
893 PortConnectorTypeDB15Female = 0x07,
894 PortConnectorTypeDB9Male = 0x08,
895 PortConnectorTypeDB9Female = 0x09,
896 PortConnectorTypeRJ11 = 0x0A,
897 PortConnectorTypeRJ45 = 0x0B,
898 PortConnectorType50PinMiniScsi = 0x0C,
899 PortConnectorTypeMiniDin = 0x0D,
900 PortConnectorTypeMicriDin = 0x0E,
901 PortConnectorTypePS2 = 0x0F,
902 PortConnectorTypeInfrared = 0x10,
903 PortConnectorTypeHpHil = 0x11,
904 PortConnectorTypeUsb = 0x12,
905 PortConnectorTypeSsaScsi = 0x13,
906 PortConnectorTypeCircularDin8Male = 0x14,
907 PortConnectorTypeCircularDin8Female = 0x15,
908 PortConnectorTypeOnboardIde = 0x16,
909 PortConnectorTypeOnboardFloppy = 0x17,
910 PortConnectorType9PinDualInline = 0x18,
911 PortConnectorType25PinDualInline = 0x19,
912 PortConnectorType50PinDualInline = 0x1A,
913 PortConnectorType68PinDualInline = 0x1B,
914 PortConnectorTypeOnboardSoundInput = 0x1C,
915 PortConnectorTypeMiniCentronicsType14 = 0x1D,
916 PortConnectorTypeMiniCentronicsType26 = 0x1E,
917 PortConnectorTypeHeadPhoneMiniJack = 0x1F,
918 PortConnectorTypeBNC = 0x20,
919 PortConnectorType1394 = 0x21,
920 PortConnectorTypePC98 = 0xA0,
921 PortConnectorTypePC98Hireso = 0xA1,
922 PortConnectorTypePCH98 = 0xA2,
923 PortConnectorTypePC98Note = 0xA3,
924 PortConnectorTypePC98Full = 0xA4,
925 PortConnectorTypeOther = 0xFF
926 } MISC_PORT_CONNECTOR_TYPE;
927
928 ///
929 /// Port Connector Information - Port Types
930 ///
931 typedef enum {
932 PortTypeNone = 0x00,
933 PortTypeParallelXtAtCompatible = 0x01,
934 PortTypeParallelPortPs2 = 0x02,
935 PortTypeParallelPortEcp = 0x03,
936 PortTypeParallelPortEpp = 0x04,
937 PortTypeParallelPortEcpEpp = 0x05,
938 PortTypeSerialXtAtCompatible = 0x06,
939 PortTypeSerial16450Compatible = 0x07,
940 PortTypeSerial16550Compatible = 0x08,
941 PortTypeSerial16550ACompatible = 0x09,
942 PortTypeScsi = 0x0A,
943 PortTypeMidi = 0x0B,
944 PortTypeJoyStick = 0x0C,
945 PortTypeKeyboard = 0x0D,
946 PortTypeMouse = 0x0E,
947 PortTypeSsaScsi = 0x0F,
948 PortTypeUsb = 0x10,
949 PortTypeFireWire = 0x11,
950 PortTypePcmciaTypeI = 0x12,
951 PortTypePcmciaTypeII = 0x13,
952 PortTypePcmciaTypeIII = 0x14,
953 PortTypeCardBus = 0x15,
954 PortTypeAccessBusPort = 0x16,
955 PortTypeScsiII = 0x17,
956 PortTypeScsiWide = 0x18,
957 PortTypePC98 = 0x19,
958 PortTypePC98Hireso = 0x1A,
959 PortTypePCH98 = 0x1B,
960 PortTypeVideoPort = 0x1C,
961 PortTypeAudioPort = 0x1D,
962 PortTypeModemPort = 0x1E,
963 PortTypeNetworkPort = 0x1F,
964 PortType8251Compatible = 0xA0,
965 PortType8251FifoCompatible = 0xA1,
966 PortTypeOther = 0xFF
967 } MISC_PORT_TYPE;
968
969 ///
970 /// Port Connector Information (Type 8).
971 ///
972 /// The information in this structure defines the attributes of a system port connector,
973 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
974 /// are provided. One structure is present for each port provided by the system.
975 ///
976 typedef struct {
977 SMBIOS_STRUCTURE Hdr;
978 SMBIOS_TABLE_STRING InternalReferenceDesignator;
979 UINT8 InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
980 SMBIOS_TABLE_STRING ExternalReferenceDesignator;
981 UINT8 ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
982 UINT8 PortType; ///< The enumeration value from MISC_PORT_TYPE.
983 } SMBIOS_TABLE_TYPE8;
984
985 ///
986 /// System Slots - Slot Type
987 ///
988 typedef enum {
989 SlotTypeOther = 0x01,
990 SlotTypeUnknown = 0x02,
991 SlotTypeIsa = 0x03,
992 SlotTypeMca = 0x04,
993 SlotTypeEisa = 0x05,
994 SlotTypePci = 0x06,
995 SlotTypePcmcia = 0x07,
996 SlotTypeVlVesa = 0x08,
997 SlotTypeProprietary = 0x09,
998 SlotTypeProcessorCardSlot = 0x0A,
999 SlotTypeProprietaryMemoryCardSlot = 0x0B,
1000 SlotTypeIORiserCardSlot = 0x0C,
1001 SlotTypeNuBus = 0x0D,
1002 SlotTypePci66MhzCapable = 0x0E,
1003 SlotTypeAgp = 0x0F,
1004 SlotTypeApg2X = 0x10,
1005 SlotTypeAgp4X = 0x11,
1006 SlotTypePciX = 0x12,
1007 SlotTypeAgp4x = 0x13,
1008 SlotTypePC98C20 = 0xA0,
1009 SlotTypePC98C24 = 0xA1,
1010 SlotTypePC98E = 0xA2,
1011 SlotTypePC98LocalBus = 0xA3,
1012 SlotTypePC98Card = 0xA4,
1013 SlotTypePciExpress = 0xA5,
1014 SlotTypePciExpressX1 = 0xA6,
1015 SlotTypePciExpressX2 = 0xA7,
1016 SlotTypePciExpressX4 = 0xA8,
1017 SlotTypePciExpressX8 = 0xA9,
1018 SlotTypePciExpressX16 = 0xAA,
1019 SlotTypePciExpressGen2 = 0xAB,
1020 SlotTypePciExpressGen2X1 = 0xAC,
1021 SlotTypePciExpressGen2X2 = 0xAD,
1022 SlotTypePciExpressGen2X4 = 0xAE,
1023 SlotTypePciExpressGen2X8 = 0xAF,
1024 SlotTypePciExpressGen2X16 = 0xB0
1025 } MISC_SLOT_TYPE;
1026
1027 ///
1028 /// System Slots - Slot Data Bus Width.
1029 ///
1030 typedef enum {
1031 SlotDataBusWidthOther = 0x01,
1032 SlotDataBusWidthUnknown = 0x02,
1033 SlotDataBusWidth8Bit = 0x03,
1034 SlotDataBusWidth16Bit = 0x04,
1035 SlotDataBusWidth32Bit = 0x05,
1036 SlotDataBusWidth64Bit = 0x06,
1037 SlotDataBusWidth128Bit = 0x07,
1038 SlotDataBusWidth1X = 0x08, ///< Or X1
1039 SlotDataBusWidth2X = 0x09, ///< Or X2
1040 SlotDataBusWidth4X = 0x0A, ///< Or X4
1041 SlotDataBusWidth8X = 0x0B, ///< Or X8
1042 SlotDataBusWidth12X = 0x0C, ///< Or X12
1043 SlotDataBusWidth16X = 0x0D, ///< Or X16
1044 SlotDataBusWidth32X = 0x0E ///< Or X32
1045 } MISC_SLOT_DATA_BUS_WIDTH;
1046
1047 ///
1048 /// System Slots - Current Usage.
1049 ///
1050 typedef enum {
1051 SlotUsageOther = 0x01,
1052 SlotUsageUnknown = 0x02,
1053 SlotUsageAvailable = 0x03,
1054 SlotUsageInUse = 0x04
1055 } MISC_SLOT_USAGE;
1056
1057 ///
1058 /// System Slots - Slot Length.
1059 ///
1060 typedef enum {
1061 SlotLengthOther = 0x01,
1062 SlotLengthUnknown = 0x02,
1063 SlotLengthShort = 0x03,
1064 SlotLengthLong = 0x04
1065 } MISC_SLOT_LENGTH;
1066
1067 ///
1068 /// System Slots - Slot Characteristics 1.
1069 ///
1070 typedef struct {
1071 UINT8 CharacteristicsUnknown :1;
1072 UINT8 Provides50Volts :1;
1073 UINT8 Provides33Volts :1;
1074 UINT8 SharedSlot :1;
1075 UINT8 PcCard16Supported :1;
1076 UINT8 CardBusSupported :1;
1077 UINT8 ZoomVideoSupported :1;
1078 UINT8 ModemRingResumeSupported:1;
1079 } MISC_SLOT_CHARACTERISTICS1;
1080 ///
1081 /// System Slots - Slot Characteristics 2.
1082 ///
1083 typedef struct {
1084 UINT8 PmeSignalSupported :1;
1085 UINT8 HotPlugDevicesSupported :1;
1086 UINT8 SmbusSignalSupported :1;
1087 UINT8 Reserved :5; ///< Set to 0.
1088 } MISC_SLOT_CHARACTERISTICS2;
1089
1090 ///
1091 /// System Slots (Type 9)
1092 ///
1093 /// The information in this structure defines the attributes of a system slot.
1094 /// One structure is provided for each slot in the system.
1095 ///
1096 ///
1097 typedef struct {
1098 SMBIOS_STRUCTURE Hdr;
1099 SMBIOS_TABLE_STRING SlotDesignation;
1100 UINT8 SlotType; ///< The enumeration value from MISC_SLOT_TYPE.
1101 UINT8 SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1102 UINT8 CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE.
1103 UINT8 SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH.
1104 UINT16 SlotID;
1105 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1;
1106 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2;
1107 //
1108 // Add for smbios 2.6
1109 //
1110 UINT16 SegmentGroupNum;
1111 UINT8 BusNum;
1112 UINT8 DevFuncNum;
1113 } SMBIOS_TABLE_TYPE9;
1114
1115 ///
1116 /// On Board Devices Information - Device Types.
1117 ///
1118 typedef enum {
1119 OnBoardDeviceTypeOther = 0x01,
1120 OnBoardDeviceTypeUnknown = 0x02,
1121 OnBoardDeviceTypeVideo = 0x03,
1122 OnBoardDeviceTypeScsiController = 0x04,
1123 OnBoardDeviceTypeEthernet = 0x05,
1124 OnBoardDeviceTypeTokenRing = 0x06,
1125 OnBoardDeviceTypeSound = 0x07
1126 } MISC_ONBOARD_DEVICE_TYPE;
1127
1128 ///
1129 /// Device Item Entry
1130 ///
1131 typedef struct {
1132 UINT8 DeviceType; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1133 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1134 SMBIOS_TABLE_STRING DescriptionString;
1135 } DEVICE_STRUCT;
1136
1137 ///
1138 /// On Board Devices Information (Type 10, obsolete).
1139 ///
1140 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1141 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1142 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1143 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1144 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1145 /// has some level of control over the enabling of the associated device for use by the system.
1146 ///
1147 typedef struct {
1148 SMBIOS_STRUCTURE Hdr;
1149 DEVICE_STRUCT Device[1];
1150 } SMBIOS_TABLE_TYPE10;
1151
1152 ///
1153 /// OEM Strings (Type 11).
1154 /// This structure contains free form strings defined by the OEM. Examples of this are:
1155 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1156 ///
1157 typedef struct {
1158 SMBIOS_STRUCTURE Hdr;
1159 UINT8 StringCount;
1160 } SMBIOS_TABLE_TYPE11;
1161
1162 ///
1163 /// System Configuration Options (Type 12).
1164 ///
1165 /// This structure contains information required to configure the base board's Jumpers and Switches.
1166 ///
1167 typedef struct {
1168 SMBIOS_STRUCTURE Hdr;
1169 UINT8 StringCount;
1170 } SMBIOS_TABLE_TYPE12;
1171
1172
1173 ///
1174 /// BIOS Language Information (Type 13).
1175 ///
1176 /// The information in this structure defines the installable language attributes of the BIOS.
1177 ///
1178 typedef struct {
1179 SMBIOS_STRUCTURE Hdr;
1180 UINT8 InstallableLanguages;
1181 UINT8 Flags;
1182 UINT8 Reserved[15];
1183 SMBIOS_TABLE_STRING CurrentLanguages;
1184 } SMBIOS_TABLE_TYPE13;
1185
1186 ///
1187 /// System Event Log - Event Log Types.
1188 ///
1189 typedef enum {
1190 EventLogTypeReserved = 0x00,
1191 EventLogTypeSingleBitECC = 0x01,
1192 EventLogTypeMultiBitECC = 0x02,
1193 EventLogTypeParityMemErr = 0x03,
1194 EventLogTypeBusTimeOut = 0x04,
1195 EventLogTypeIOChannelCheck = 0x05,
1196 EventLogTypeSoftwareNMI = 0x06,
1197 EventLogTypePOSTMemResize = 0x07,
1198 EventLogTypePOSTErr = 0x08,
1199 EventLogTypePCIParityErr = 0x09,
1200 EventLogTypePCISystemErr = 0x0A,
1201 EventLogTypeCPUFailure = 0x0B,
1202 EventLogTypeEISATimeOut = 0x0C,
1203 EventLogTypeMemLogDisabled = 0x0D,
1204 EventLogTypeLoggingDisabled = 0x0E,
1205 EventLogTypeSysLimitExce = 0x10,
1206 EventLogTypeAsyncHWTimer = 0x11,
1207 EventLogTypeSysConfigInfo = 0x12,
1208 EventLogTypeHDInfo = 0x13,
1209 EventLogTypeSysReconfig = 0x14,
1210 EventLogTypeUncorrectCPUErr = 0x15,
1211 EventLogTypeAreaResetAndClr = 0x16,
1212 EventLogTypeSystemBoot = 0x17,
1213 EventLogTypeUnused = 0x18, ///< 0x18 - 0x7F
1214 EventLogTypeAvailForSys = 0x80, ///< 0x80 - 0xFE
1215 EventLogTypeEndOfLog = 0xFF
1216 } EVENT_LOG_TYPE_DATA;
1217
1218 ///
1219 /// System Event Log - Variable Data Format Types.
1220 ///
1221 typedef enum {
1222 EventLogVariableNone = 0x00,
1223 EventLogVariableHandle = 0x01,
1224 EventLogVariableMutilEvent = 0x02,
1225 EventLogVariableMutilEventHandle = 0x03,
1226 EventLogVariablePOSTResultBitmap = 0x04,
1227 EventLogVariableSysManagementType = 0x05,
1228 EventLogVariableMutliEventSysManagmentType = 0x06,
1229 EventLogVariableUnused = 0x07,
1230 EventLogVariableOEMAssigned = 0x80
1231 } EVENT_LOG_VARIABLE_DATA;
1232
1233 ///
1234 /// Group Item Entry
1235 ///
1236 typedef struct {
1237 UINT8 ItemType;
1238 UINT16 ItemHandle;
1239 } GROUP_STRUCT;
1240
1241 ///
1242 /// Event Log Type Descriptors
1243 ///
1244 typedef struct {
1245 UINT8 LogType; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1246 UINT8 DataFormatType;
1247 } EVENT_LOG_TYPE;
1248
1249 ///
1250 /// Group Associations (Type 14).
1251 ///
1252 /// The Group Associations structure is provided for OEMs who want to specify
1253 /// the arrangement or hierarchy of certain components (including other Group Associations)
1254 /// within the system.
1255 ///
1256 typedef struct {
1257 SMBIOS_STRUCTURE Hdr;
1258 SMBIOS_TABLE_STRING GroupName;
1259 GROUP_STRUCT Group[1];
1260 } SMBIOS_TABLE_TYPE14;
1261
1262 ///
1263 /// System Event Log (Type 15).
1264 ///
1265 /// The presence of this structure within the SMBIOS data returned for a system indicates
1266 /// that the system supports an event log. An event log is a fixed-length area within a
1267 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1268 /// record, followed by one or more variable-length log records.
1269 ///
1270 typedef struct {
1271 SMBIOS_STRUCTURE Hdr;
1272 UINT16 LogAreaLength;
1273 UINT16 LogHeaderStartOffset;
1274 UINT16 LogDataStartOffset;
1275 UINT8 AccessMethod;
1276 UINT8 LogStatus;
1277 UINT32 LogChangeToken;
1278 UINT32 AccessMethodAddress;
1279 UINT8 LogHeaderFormat;
1280 UINT8 NumberOfSupportedLogTypeDescriptors;
1281 UINT8 LengthOfLogTypeDescriptor;
1282 EVENT_LOG_TYPE EventLogTypeDescriptors[1];
1283 } SMBIOS_TABLE_TYPE15;
1284
1285 ///
1286 /// Physical Memory Array - Location.
1287 ///
1288 typedef enum {
1289 MemoryArrayLocationOther = 0x01,
1290 MemoryArrayLocationUnknown = 0x02,
1291 MemoryArrayLocationSystemBoard = 0x03,
1292 MemoryArrayLocationIsaAddonCard = 0x04,
1293 MemoryArrayLocationEisaAddonCard = 0x05,
1294 MemoryArrayLocationPciAddonCard = 0x06,
1295 MemoryArrayLocationMcaAddonCard = 0x07,
1296 MemoryArrayLocationPcmciaAddonCard = 0x08,
1297 MemoryArrayLocationProprietaryAddonCard = 0x09,
1298 MemoryArrayLocationNuBus = 0x0A,
1299 MemoryArrayLocationPc98C20AddonCard = 0xA0,
1300 MemoryArrayLocationPc98C24AddonCard = 0xA1,
1301 MemoryArrayLocationPc98EAddonCard = 0xA2,
1302 MemoryArrayLocationPc98LocalBusAddonCard = 0xA3
1303 } MEMORY_ARRAY_LOCATION;
1304
1305 ///
1306 /// Physical Memory Array - Use.
1307 ///
1308 typedef enum {
1309 MemoryArrayUseOther = 0x01,
1310 MemoryArrayUseUnknown = 0x02,
1311 MemoryArrayUseSystemMemory = 0x03,
1312 MemoryArrayUseVideoMemory = 0x04,
1313 MemoryArrayUseFlashMemory = 0x05,
1314 MemoryArrayUseNonVolatileRam = 0x06,
1315 MemoryArrayUseCacheMemory = 0x07
1316 } MEMORY_ARRAY_USE;
1317
1318 ///
1319 /// Physical Memory Array - Error Correction Types.
1320 ///
1321 typedef enum {
1322 MemoryErrorCorrectionOther = 0x01,
1323 MemoryErrorCorrectionUnknown = 0x02,
1324 MemoryErrorCorrectionNone = 0x03,
1325 MemoryErrorCorrectionParity = 0x04,
1326 MemoryErrorCorrectionSingleBitEcc = 0x05,
1327 MemoryErrorCorrectionMultiBitEcc = 0x06,
1328 MemoryErrorCorrectionCrc = 0x07
1329 } MEMORY_ERROR_CORRECTION;
1330
1331 ///
1332 /// Physical Memory Array (Type 16).
1333 ///
1334 /// This structure describes a collection of memory devices that operate
1335 /// together to form a memory address space.
1336 ///
1337 typedef struct {
1338 SMBIOS_STRUCTURE Hdr;
1339 UINT8 Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1340 UINT8 Use; ///< The enumeration value from MEMORY_ARRAY_USE.
1341 UINT8 MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1342 UINT32 MaximumCapacity;
1343 UINT16 MemoryErrorInformationHandle;
1344 UINT16 NumberOfMemoryDevices;
1345 } SMBIOS_TABLE_TYPE16;
1346
1347 ///
1348 /// Memory Device - Form Factor.
1349 ///
1350 typedef enum {
1351 MemoryFormFactorOther = 0x01,
1352 MemoryFormFactorUnknown = 0x02,
1353 MemoryFormFactorSimm = 0x03,
1354 MemoryFormFactorSip = 0x04,
1355 MemoryFormFactorChip = 0x05,
1356 MemoryFormFactorDip = 0x06,
1357 MemoryFormFactorZip = 0x07,
1358 MemoryFormFactorProprietaryCard = 0x08,
1359 MemoryFormFactorDimm = 0x09,
1360 MemoryFormFactorTsop = 0x0A,
1361 MemoryFormFactorRowOfChips = 0x0B,
1362 MemoryFormFactorRimm = 0x0C,
1363 MemoryFormFactorSodimm = 0x0D,
1364 MemoryFormFactorSrimm = 0x0E,
1365 MemoryFormFactorFbDimm = 0x0F
1366 } MEMORY_FORM_FACTOR;
1367
1368 ///
1369 /// Memory Device - Type
1370 ///
1371 typedef enum {
1372 MemoryTypeOther = 0x01,
1373 MemoryTypeUnknown = 0x02,
1374 MemoryTypeDram = 0x03,
1375 MemoryTypeEdram = 0x04,
1376 MemoryTypeVram = 0x05,
1377 MemoryTypeSram = 0x06,
1378 MemoryTypeRam = 0x07,
1379 MemoryTypeRom = 0x08,
1380 MemoryTypeFlash = 0x09,
1381 MemoryTypeEeprom = 0x0A,
1382 MemoryTypeFeprom = 0x0B,
1383 MemoryTypeEprom = 0x0C,
1384 MemoryTypeCdram = 0x0D,
1385 MemoryType3Dram = 0x0E,
1386 MemoryTypeSdram = 0x0F,
1387 MemoryTypeSgram = 0x10,
1388 MemoryTypeRdram = 0x11,
1389 MemoryTypeDdr = 0x12,
1390 MemoryTypeDdr2 = 0x13,
1391 MemoryTypeDdr2FbDimm = 0x14,
1392 MemoryTypeDdr3 = 0x18,
1393 MemoryTypeFbd2 = 0x19
1394 } MEMORY_DEVICE_TYPE;
1395
1396 typedef struct {
1397 UINT16 Reserved :1;
1398 UINT16 Other :1;
1399 UINT16 Unknown :1;
1400 UINT16 FastPaged :1;
1401 UINT16 StaticColumn :1;
1402 UINT16 PseudoStatic :1;
1403 UINT16 Rambus :1;
1404 UINT16 Synchronous :1;
1405 UINT16 Cmos :1;
1406 UINT16 Edo :1;
1407 UINT16 WindowDram :1;
1408 UINT16 CacheDram :1;
1409 UINT16 Nonvolatile :1;
1410 UINT16 Reserved1 :3;
1411 } MEMORY_DEVICE_TYPE_DETAIL;
1412
1413 ///
1414 /// Memory Device (Type 17).
1415 ///
1416 /// This structure describes a single memory device that is part of
1417 /// a larger Physical Memory Array (Type 16).
1418 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1419 /// includes a Memory Device structure instance for each slot, whether or not the
1420 /// socket is currently populated.
1421 ///
1422 typedef struct {
1423 SMBIOS_STRUCTURE Hdr;
1424 UINT16 MemoryArrayHandle;
1425 UINT16 MemoryErrorInformationHandle;
1426 UINT16 TotalWidth;
1427 UINT16 DataWidth;
1428 UINT16 Size;
1429 UINT8 FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR.
1430 UINT8 DeviceSet;
1431 SMBIOS_TABLE_STRING DeviceLocator;
1432 SMBIOS_TABLE_STRING BankLocator;
1433 UINT8 MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1434 MEMORY_DEVICE_TYPE_DETAIL TypeDetail;
1435 UINT16 Speed;
1436 SMBIOS_TABLE_STRING Manufacturer;
1437 SMBIOS_TABLE_STRING SerialNumber;
1438 SMBIOS_TABLE_STRING AssetTag;
1439 SMBIOS_TABLE_STRING PartNumber;
1440 //
1441 // Add for smbios 2.6
1442 //
1443 UINT8 Attributes;
1444 } SMBIOS_TABLE_TYPE17;
1445
1446 ///
1447 /// 32-bit Memory Error Information - Error Type.
1448 ///
1449 typedef enum {
1450 MemoryErrorOther = 0x01,
1451 MemoryErrorUnknown = 0x02,
1452 MemoryErrorOk = 0x03,
1453 MemoryErrorBadRead = 0x04,
1454 MemoryErrorParity = 0x05,
1455 MemoryErrorSigleBit = 0x06,
1456 MemoryErrorDoubleBit = 0x07,
1457 MemoryErrorMultiBit = 0x08,
1458 MemoryErrorNibble = 0x09,
1459 MemoryErrorChecksum = 0x0A,
1460 MemoryErrorCrc = 0x0B,
1461 MemoryErrorCorrectSingleBit = 0x0C,
1462 MemoryErrorCorrected = 0x0D,
1463 MemoryErrorUnCorrectable = 0x0E
1464 } MEMORY_ERROR_TYPE;
1465
1466 ///
1467 /// 32-bit Memory Error Information - Error Granularity.
1468 ///
1469 typedef enum {
1470 MemoryGranularityOther = 0x01,
1471 MemoryGranularityOtherUnknown = 0x02,
1472 MemoryGranularityDeviceLevel = 0x03,
1473 MemoryGranularityMemPartitionLevel = 0x04
1474 } MEMORY_ERROR_GRANULARITY;
1475
1476 ///
1477 /// 32-bit Memory Error Information - Error Operation.
1478 ///
1479 typedef enum {
1480 MemoryErrorOperationOther = 0x01,
1481 MemoryErrorOperationUnknown = 0x02,
1482 MemoryErrorOperationRead = 0x03,
1483 MemoryErrorOperationWrite = 0x04,
1484 MemoryErrorOperationPartialWrite = 0x05
1485 } MEMORY_ERROR_OPERATION;
1486
1487 ///
1488 /// 32-bit Memory Error Information (Type 18).
1489 ///
1490 /// This structure identifies the specifics of an error that might be detected
1491 /// within a Physical Memory Array.
1492 ///
1493 typedef struct {
1494 SMBIOS_STRUCTURE Hdr;
1495 UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE.
1496 UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1497 UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1498 UINT32 VendorSyndrome;
1499 UINT32 MemoryArrayErrorAddress;
1500 UINT32 DeviceErrorAddress;
1501 UINT32 ErrorResolution;
1502 } SMBIOS_TABLE_TYPE18;
1503
1504 ///
1505 /// Memory Array Mapped Address (Type 19).
1506 ///
1507 /// This structure provides the address mapping for a Physical Memory Array.
1508 /// One structure is present for each contiguous address range described.
1509 ///
1510 typedef struct {
1511 SMBIOS_STRUCTURE Hdr;
1512 UINT32 StartingAddress;
1513 UINT32 EndingAddress;
1514 UINT16 MemoryArrayHandle;
1515 UINT8 PartitionWidth;
1516 } SMBIOS_TABLE_TYPE19;
1517
1518 ///
1519 /// Memory Device Mapped Address (Type 20).
1520 ///
1521 /// This structure maps memory address space usually to a device-level granularity.
1522 /// One structure is present for each contiguous address range described.
1523 ///
1524 typedef struct {
1525 SMBIOS_STRUCTURE Hdr;
1526 UINT32 StartingAddress;
1527 UINT32 EndingAddress;
1528 UINT16 MemoryDeviceHandle;
1529 UINT16 MemoryArrayMappedAddressHandle;
1530 UINT8 PartitionRowPosition;
1531 UINT8 InterleavePosition;
1532 UINT8 InterleavedDataDepth;
1533 } SMBIOS_TABLE_TYPE20;
1534
1535 ///
1536 /// Built-in Pointing Device - Type
1537 ///
1538 typedef enum {
1539 PointingDeviceTypeOther = 0x01,
1540 PointingDeviceTypeUnknown = 0x02,
1541 PointingDeviceTypeMouse = 0x03,
1542 PointingDeviceTypeTrackBall = 0x04,
1543 PointingDeviceTypeTrackPoint = 0x05,
1544 PointingDeviceTypeGlidePoint = 0x06,
1545 PointingDeviceTouchPad = 0x07,
1546 PointingDeviceTouchScreen = 0x08,
1547 PointingDeviceOpticalSensor = 0x09
1548 } BUILTIN_POINTING_DEVICE_TYPE;
1549
1550 ///
1551 /// Built-in Pointing Device - Interface.
1552 ///
1553 typedef enum {
1554 PointingDeviceInterfaceOther = 0x01,
1555 PointingDeviceInterfaceUnknown = 0x02,
1556 PointingDeviceInterfaceSerial = 0x03,
1557 PointingDeviceInterfacePs2 = 0x04,
1558 PointingDeviceInterfaceInfrared = 0x05,
1559 PointingDeviceInterfaceHpHil = 0x06,
1560 PointingDeviceInterfaceBusMouse = 0x07,
1561 PointingDeviceInterfaceADB = 0x08,
1562 PointingDeviceInterfaceBusMouseDB9 = 0xA0,
1563 PointingDeviceInterfaceBusMouseMicroDin = 0xA1,
1564 PointingDeviceInterfaceUsb = 0xA2
1565 } BUILTIN_POINTING_DEVICE_INTERFACE;
1566
1567 ///
1568 /// Built-in Pointing Device (Type 21).
1569 ///
1570 /// This structure describes the attributes of the built-in pointing device for the
1571 /// system. The presence of this structure does not imply that the built-in
1572 /// pointing device is active for the system's use!
1573 ///
1574 typedef struct {
1575 SMBIOS_STRUCTURE Hdr;
1576 UINT8 Type; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
1577 UINT8 Interface; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
1578 UINT8 NumberOfButtons;
1579 } SMBIOS_TABLE_TYPE21;
1580
1581 ///
1582 /// Portable Battery - Device Chemistry
1583 ///
1584 typedef enum {
1585 PortableBatteryDeviceChemistryOther = 0x01,
1586 PortableBatteryDeviceChemistryUnknown = 0x02,
1587 PortableBatteryDeviceChemistryLeadAcid = 0x03,
1588 PortableBatteryDeviceChemistryNickelCadmium = 0x04,
1589 PortableBatteryDeviceChemistryNickelMetalHydride = 0x05,
1590 PortableBatteryDeviceChemistryLithiumIon = 0x06,
1591 PortableBatteryDeviceChemistryZincAir = 0x07,
1592 PortableBatteryDeviceChemistryLithiumPolymer = 0x08
1593 } PORTABLE_BATTERY_DEVICE_CHEMISTRY;
1594
1595 ///
1596 /// Portable Battery (Type 22).
1597 ///
1598 /// This structure describes the attributes of the portable battery(s) for the system.
1599 /// The structure contains the static attributes for the group. Each structure describes
1600 /// a single battery pack's attributes.
1601 ///
1602 typedef struct {
1603 SMBIOS_STRUCTURE Hdr;
1604 SMBIOS_TABLE_STRING Location;
1605 SMBIOS_TABLE_STRING Manufacturer;
1606 SMBIOS_TABLE_STRING ManufactureDate;
1607 SMBIOS_TABLE_STRING SerialNumber;
1608 SMBIOS_TABLE_STRING DeviceName;
1609 UINT8 DeviceChemistry; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
1610 UINT16 DeviceCapacity;
1611 UINT16 DesignVoltage;
1612 SMBIOS_TABLE_STRING SBDSVersionNumber;
1613 UINT8 MaximumErrorInBatteryData;
1614 UINT16 SBDSSerialNumber;
1615 UINT16 SBDSManufactureDate;
1616 SMBIOS_TABLE_STRING SBDSDeviceChemistry;
1617 UINT8 DesignCapacityMultiplier;
1618 UINT32 OEMSpecific;
1619 } SMBIOS_TABLE_TYPE22;
1620
1621 ///
1622 /// System Reset (Type 23)
1623 ///
1624 /// This structure describes whether Automatic System Reset functions enabled (Status).
1625 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
1626 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
1627 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
1628 /// the system will re-boot according to the Boot Option at Limit.
1629 ///
1630 typedef struct {
1631 SMBIOS_STRUCTURE Hdr;
1632 UINT8 Capabilities;
1633 UINT16 ResetCount;
1634 UINT16 ResetLimit;
1635 UINT16 TimerInterval;
1636 UINT16 Timeout;
1637 } SMBIOS_TABLE_TYPE23;
1638
1639 ///
1640 /// Hardware Security (Type 24).
1641 ///
1642 /// This structure describes the system-wide hardware security settings.
1643 ///
1644 typedef struct {
1645 SMBIOS_STRUCTURE Hdr;
1646 UINT8 HardwareSecuritySettings;
1647 } SMBIOS_TABLE_TYPE24;
1648
1649 ///
1650 /// System Power Controls (Type 25).
1651 ///
1652 /// This structure describes the attributes for controlling the main power supply to the system.
1653 /// Software that interprets this structure uses the month, day, hour, minute, and second values
1654 /// to determine the number of seconds until the next power-on of the system. The presence of
1655 /// this structure implies that a timed power-on facility is available for the system.
1656 ///
1657 typedef struct {
1658 SMBIOS_STRUCTURE Hdr;
1659 UINT8 NextScheduledPowerOnMonth;
1660 UINT8 NextScheduledPowerOnDayOfMonth;
1661 UINT8 NextScheduledPowerOnHour;
1662 UINT8 NextScheduledPowerOnMinute;
1663 UINT8 NextScheduledPowerOnSecond;
1664 } SMBIOS_TABLE_TYPE25;
1665
1666 ///
1667 /// Voltage Probe - Location and Status.
1668 ///
1669 typedef struct {
1670 UINT8 VoltageProbeSite :5;
1671 UINT8 VoltageProbeStatus :3;
1672 } MISC_VOLTAGE_PROBE_LOCATION;
1673
1674 ///
1675 /// Voltage Probe (Type 26)
1676 ///
1677 /// This describes the attributes for a voltage probe in the system.
1678 /// Each structure describes a single voltage probe.
1679 ///
1680 typedef struct {
1681 SMBIOS_STRUCTURE Hdr;
1682 SMBIOS_TABLE_STRING Description;
1683 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus;
1684 UINT16 MaximumValue;
1685 UINT16 MinimumValue;
1686 UINT16 Resolution;
1687 UINT16 Tolerance;
1688 UINT16 Accuracy;
1689 UINT32 OEMDefined;
1690 UINT16 NominalValue;
1691 } SMBIOS_TABLE_TYPE26;
1692
1693 ///
1694 /// Cooling Device - Device Type and Status.
1695 ///
1696 typedef struct {
1697 UINT8 CoolingDevice :5;
1698 UINT8 CoolingDeviceStatus :3;
1699 } MISC_COOLING_DEVICE_TYPE;
1700
1701 ///
1702 /// Cooling Device (Type 27)
1703 ///
1704 /// This structure describes the attributes for a cooling device in the system.
1705 /// Each structure describes a single cooling device.
1706 ///
1707 typedef struct {
1708 SMBIOS_STRUCTURE Hdr;
1709 UINT16 TemperatureProbeHandle;
1710 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus;
1711 UINT8 CoolingUnitGroup;
1712 UINT32 OEMDefined;
1713 UINT16 NominalSpeed;
1714 } SMBIOS_TABLE_TYPE27;
1715
1716 ///
1717 /// Temperature Probe - Location and Status.
1718 ///
1719 typedef struct {
1720 UINT8 TemperatureProbeSite :5;
1721 UINT8 TemperatureProbeStatus :3;
1722 } MISC_TEMPERATURE_PROBE_LOCATION;
1723
1724 ///
1725 /// Temperature Probe (Type 28).
1726 ///
1727 /// This structure describes the attributes for a temperature probe in the system.
1728 /// Each structure describes a single temperature probe.
1729 ///
1730 typedef struct {
1731 SMBIOS_STRUCTURE Hdr;
1732 SMBIOS_TABLE_STRING Description;
1733 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus;
1734 UINT16 MaximumValue;
1735 UINT16 MinimumValue;
1736 UINT16 Resolution;
1737 UINT16 Tolerance;
1738 UINT16 Accuracy;
1739 UINT32 OEMDefined;
1740 UINT16 NominalValue;
1741 } SMBIOS_TABLE_TYPE28;
1742
1743 ///
1744 /// Electrical Current Probe - Location and Status.
1745 ///
1746 typedef struct {
1747 UINT8 ElectricalCurrentProbeSite :5;
1748 UINT8 ElectricalCurrentProbeStatus :3;
1749 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;
1750
1751 ///
1752 /// Electrical Current Probe (Type 29).
1753 ///
1754 /// This structure describes the attributes for an electrical current probe in the system.
1755 /// Each structure describes a single electrical current probe.
1756 ///
1757 typedef struct {
1758 SMBIOS_STRUCTURE Hdr;
1759 SMBIOS_TABLE_STRING Description;
1760 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus;
1761 UINT16 MaximumValue;
1762 UINT16 MinimumValue;
1763 UINT16 Resolution;
1764 UINT16 Tolerance;
1765 UINT16 Accuracy;
1766 UINT32 OEMDefined;
1767 UINT16 NominalValue;
1768 } SMBIOS_TABLE_TYPE29;
1769
1770 ///
1771 /// Out-of-Band Remote Access (Type 30).
1772 ///
1773 /// This structure describes the attributes and policy settings of a hardware facility
1774 /// that may be used to gain remote access to a hardware system when the operating system
1775 /// is not available due to power-down status, hardware failures, or boot failures.
1776 ///
1777 typedef struct {
1778 SMBIOS_STRUCTURE Hdr;
1779 SMBIOS_TABLE_STRING ManufacturerName;
1780 UINT8 Connections;
1781 } SMBIOS_TABLE_TYPE30;
1782
1783 ///
1784 /// Boot Integrity Services (BIS) Entry Point (Type 31).
1785 ///
1786 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
1787 ///
1788 typedef struct {
1789 SMBIOS_STRUCTURE Hdr;
1790 UINT8 Checksum;
1791 UINT8 Reserved1;
1792 UINT16 Reserved2;
1793 UINT32 BisEntry16;
1794 UINT32 BisEntry32;
1795 UINT64 Reserved3;
1796 UINT32 Reserved4;
1797 } SMBIOS_TABLE_TYPE31;
1798
1799 ///
1800 /// System Boot Information - System Boot Status.
1801 ///
1802 typedef enum {
1803 BootInformationStatusNoError = 0x00,
1804 BootInformationStatusNoBootableMedia = 0x01,
1805 BootInformationStatusNormalOSFailedLoading = 0x02,
1806 BootInformationStatusFirmwareDetectedFailure = 0x03,
1807 BootInformationStatusOSDetectedFailure = 0x04,
1808 BootInformationStatusUserRequestedBoot = 0x05,
1809 BootInformationStatusSystemSecurityViolation = 0x06,
1810 BootInformationStatusPreviousRequestedImage = 0x07,
1811 BootInformationStatusWatchdogTimerExpired = 0x08,
1812 BootInformationStatusStartReserved = 0x09,
1813 BootInformationStatusStartOemSpecific = 0x80,
1814 BootInformationStatusStartProductSpecific = 0xC0
1815 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;
1816
1817 ///
1818 /// System Boot Information (Type 32).
1819 ///
1820 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
1821 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
1822 /// application via this structure. When used in the PXE environment, for example,
1823 /// this code identifies the reason the PXE was initiated and can be used by boot-image
1824 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
1825 /// could choose to automatically download a hardware-diagnostic image to a client whose
1826 /// reason code indicated either a firmware- or operating system-detected hardware failure.
1827 ///
1828 typedef struct {
1829 SMBIOS_STRUCTURE Hdr;
1830 UINT8 Reserved[6];
1831 UINT8 BootStatus; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
1832 } SMBIOS_TABLE_TYPE32;
1833
1834 ///
1835 /// 64-bit Memory Error Information (Type 33).
1836 ///
1837 /// This structure describes an error within a Physical Memory Array,
1838 /// when the error address is above 4G (0xFFFFFFFF).
1839 ///
1840 typedef struct {
1841 SMBIOS_STRUCTURE Hdr;
1842 UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE.
1843 UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1844 UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1845 UINT32 VendorSyndrome;
1846 UINT64 MemoryArrayErrorAddress;
1847 UINT64 DeviceErrorAddress;
1848 UINT32 ErrorResolution;
1849 } SMBIOS_TABLE_TYPE33;
1850
1851 ///
1852 /// Management Device - Type.
1853 ///
1854 typedef enum {
1855 ManagementDeviceTypeOther = 0x01,
1856 ManagementDeviceTypeUnknown = 0x02,
1857 ManagementDeviceTypeLm75 = 0x03,
1858 ManagementDeviceTypeLm78 = 0x04,
1859 ManagementDeviceTypeLm79 = 0x05,
1860 ManagementDeviceTypeLm80 = 0x06,
1861 ManagementDeviceTypeLm81 = 0x07,
1862 ManagementDeviceTypeAdm9240 = 0x08,
1863 ManagementDeviceTypeDs1780 = 0x09,
1864 ManagementDeviceTypeMaxim1617 = 0x0A,
1865 ManagementDeviceTypeGl518Sm = 0x0B,
1866 ManagementDeviceTypeW83781D = 0x0C,
1867 ManagementDeviceTypeHt82H791 = 0x0D
1868 } MISC_MANAGEMENT_DEVICE_TYPE;
1869
1870 ///
1871 /// Management Device - Address Type.
1872 ///
1873 typedef enum {
1874 ManagementDeviceAddressTypeOther = 0x01,
1875 ManagementDeviceAddressTypeUnknown = 0x02,
1876 ManagementDeviceAddressTypeIOPort = 0x03,
1877 ManagementDeviceAddressTypeMemory = 0x04,
1878 ManagementDeviceAddressTypeSmbus = 0x05
1879 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;
1880
1881 ///
1882 /// Management Device (Type 34).
1883 ///
1884 /// The information in this structure defines the attributes of a Management Device.
1885 /// A Management Device might control one or more fans or voltage, current, or temperature
1886 /// probes as defined by one or more Management Device Component structures.
1887 ///
1888 typedef struct {
1889 SMBIOS_STRUCTURE Hdr;
1890 SMBIOS_TABLE_STRING Description;
1891 UINT8 Type; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
1892 UINT32 Address;
1893 UINT8 AddressType; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
1894 } SMBIOS_TABLE_TYPE34;
1895
1896 ///
1897 /// Management Device Component (Type 35)
1898 ///
1899 /// This structure associates a cooling device or environmental probe with structures
1900 /// that define the controlling hardware device and (optionally) the component's thresholds.
1901 ///
1902 typedef struct {
1903 SMBIOS_STRUCTURE Hdr;
1904 SMBIOS_TABLE_STRING Description;
1905 UINT16 ManagementDeviceHandle;
1906 UINT16 ComponentHandle;
1907 UINT16 ThresholdHandle;
1908 } SMBIOS_TABLE_TYPE35;
1909
1910 ///
1911 /// Management Device Threshold Data (Type 36).
1912 ///
1913 /// The information in this structure defines threshold information for
1914 /// a component (probe or cooling-unit) contained within a Management Device.
1915 ///
1916 typedef struct {
1917 SMBIOS_STRUCTURE Hdr;
1918 UINT16 LowerThresholdNonCritical;
1919 UINT16 UpperThresholdNonCritical;
1920 UINT16 LowerThresholdCritical;
1921 UINT16 UpperThresholdCritical;
1922 UINT16 LowerThresholdNonRecoverable;
1923 UINT16 UpperThresholdNonRecoverable;
1924 } SMBIOS_TABLE_TYPE36;
1925
1926 ///
1927 /// Memory Channel Entry.
1928 ///
1929 typedef struct {
1930 UINT8 DeviceLoad;
1931 UINT16 DeviceHandle;
1932 } MEMORY_DEVICE;
1933
1934 ///
1935 /// Memory Channel - Channel Type.
1936 ///
1937 typedef enum {
1938 MemoryChannelTypeOther = 0x01,
1939 MemoryChannelTypeUnknown = 0x02,
1940 MemoryChannelTypeRambus = 0x03,
1941 MemoryChannelTypeSyncLink = 0x04
1942 } MEMORY_CHANNEL_TYPE;
1943
1944 ///
1945 /// Memory Channel (Type 37)
1946 ///
1947 /// The information in this structure provides the correlation between a Memory Channel
1948 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
1949 /// The sum of all device loads cannot exceed the channel's defined maximum.
1950 ///
1951 typedef struct {
1952 SMBIOS_STRUCTURE Hdr;
1953 UINT8 ChannelType;
1954 UINT8 MaximumChannelLoad;
1955 UINT8 MemoryDeviceCount;
1956 MEMORY_DEVICE MemoryDevice[1];
1957 } SMBIOS_TABLE_TYPE37;
1958
1959 ///
1960 /// IPMI Device Information - BMC Interface Type
1961 ///
1962 typedef enum {
1963 IPMIDeviceInfoInterfaceTypeUnknown = 0x00,
1964 IPMIDeviceInfoInterfaceTypeKCS = 0x01, ///< The Keyboard Controller Style.
1965 IPMIDeviceInfoInterfaceTypeSMIC = 0x02, ///< The Server Management Interface Chip.
1966 IPMIDeviceInfoInterfaceTypeBT = 0x03, ///< The Block Transfer
1967 IPMIDeviceInfoInterfaceTypeReserved = 0x04
1968 } BMC_INTERFACE_TYPE;
1969
1970 ///
1971 /// IPMI Device Information (Type 38).
1972 ///
1973 /// The information in this structure defines the attributes of an
1974 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
1975 ///
1976 typedef struct {
1977 SMBIOS_STRUCTURE Hdr;
1978 UINT8 InterfaceType; ///< The enumeration value from BMC_INTERFACE_TYPE.
1979 UINT8 IPMISpecificationRevision;
1980 UINT8 I2CSlaveAddress;
1981 UINT8 NVStorageDeviceAddress;
1982 UINT64 BaseAddress;
1983 UINT8 BaseAddressModifier_InterruptInfo;
1984 UINT8 InterruptNumber;
1985 } SMBIOS_TABLE_TYPE38;
1986
1987 ///
1988 /// System Power Supply - Power Supply Characteristics.
1989 ///
1990 typedef struct {
1991 UINT16 PowerSupplyHotReplaceable:1;
1992 UINT16 PowerSupplyPresent :1;
1993 UINT16 PowerSupplyUnplugged :1;
1994 UINT16 InputVoltageRangeSwitch :4;
1995 UINT16 PowerSupplyStatus :3;
1996 UINT16 PowerSupplyType :4;
1997 UINT16 Reserved :2;
1998 } SYS_POWER_SUPPLY_CHARACTERISTICS;
1999
2000 ///
2001 /// System Power Supply (Type 39).
2002 ///
2003 /// This structure identifies attributes of a system power supply. One instance
2004 /// of this record is present for each possible power supply in a system.
2005 ///
2006 typedef struct {
2007 SMBIOS_STRUCTURE Hdr;
2008 UINT8 PowerUnitGroup;
2009 SMBIOS_TABLE_STRING Location;
2010 SMBIOS_TABLE_STRING DeviceName;
2011 SMBIOS_TABLE_STRING Manufacturer;
2012 SMBIOS_TABLE_STRING SerialNumber;
2013 SMBIOS_TABLE_STRING AssetTagNumber;
2014 SMBIOS_TABLE_STRING ModelPartNumber;
2015 SMBIOS_TABLE_STRING RevisionLevel;
2016 UINT16 MaxPowerCapacity;
2017 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
2018 UINT16 InputVoltageProbeHandle;
2019 UINT16 CoolingDeviceHandle;
2020 UINT16 InputCurrentProbeHandle;
2021 } SMBIOS_TABLE_TYPE39;
2022
2023 ///
2024 /// Additional Information Entry Format.
2025 ///
2026 typedef struct {
2027 UINT8 EntryLength;
2028 UINT16 ReferencedHandle;
2029 UINT8 ReferencedOffset;
2030 SMBIOS_TABLE_STRING EntryString;
2031 UINT8 Value[1];
2032 }ADDITIONAL_INFORMATION_ENTRY;
2033
2034 ///
2035 /// Additional Information (Type 40).
2036 ///
2037 /// This structure is intended to provide additional information for handling unspecified
2038 /// enumerated values and interim field updates in another structure.
2039 ///
2040 typedef struct {
2041 SMBIOS_STRUCTURE Hdr;
2042 UINT8 NumberOfAdditionalInformationEntries;
2043 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1];
2044 } SMBIOS_TABLE_TYPE40;
2045
2046 ///
2047 /// Onboard Devices Extended Information - Onboard Device Types.
2048 ///
2049 typedef enum{
2050 OnBoardDeviceExtendedTypeOther = 0x01,
2051 OnBoardDeviceExtendedTypeUnknown = 0x02,
2052 OnBoardDeviceExtendedTypeVideo = 0x03,
2053 OnBoardDeviceExtendedTypeScsiController = 0x04,
2054 OnBoardDeviceExtendedTypeEthernet = 0x05,
2055 OnBoardDeviceExtendedTypeTokenRing = 0x06,
2056 OnBoardDeviceExtendedTypeSound = 0x07,
2057 OnBoardDeviceExtendedTypePATAController = 0x08,
2058 OnBoardDeviceExtendedTypeSATAController = 0x09,
2059 OnBoardDeviceExtendedTypeSASController = 0x0A
2060 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE;
2061
2062 ///
2063 /// Onboard Devices Extended Information (Type 41).
2064 ///
2065 /// The information in this structure defines the attributes of devices that
2066 /// are onboard (soldered onto) a system element, usually the baseboard.
2067 /// In general, an entry in this table implies that the BIOS has some level of
2068 /// control over the enabling of the associated device for use by the system.
2069 ///
2070 typedef struct {
2071 SMBIOS_STRUCTURE Hdr;
2072 SMBIOS_TABLE_STRING ReferenceDesignation;
2073 UINT8 DeviceType; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2074 UINT8 DeviceTypeInstance;
2075 UINT16 SegmentGroupNum;
2076 UINT8 BusNum;
2077 UINT8 DevFuncNum;
2078 } SMBIOS_TABLE_TYPE41;
2079
2080 ///
2081 /// Inactive (Type 126)
2082 ///
2083 typedef struct {
2084 SMBIOS_STRUCTURE Hdr;
2085 } SMBIOS_TABLE_TYPE126;
2086
2087 ///
2088 /// End-of-Table (Type 127)
2089 ///
2090 typedef struct {
2091 SMBIOS_STRUCTURE Hdr;
2092 } SMBIOS_TABLE_TYPE127;
2093
2094 ///
2095 /// Union of all the possible SMBIOS record types.
2096 ///
2097 typedef union {
2098 SMBIOS_STRUCTURE *Hdr;
2099 SMBIOS_TABLE_TYPE0 *Type0;
2100 SMBIOS_TABLE_TYPE1 *Type1;
2101 SMBIOS_TABLE_TYPE2 *Type2;
2102 SMBIOS_TABLE_TYPE3 *Type3;
2103 SMBIOS_TABLE_TYPE4 *Type4;
2104 SMBIOS_TABLE_TYPE5 *Type5;
2105 SMBIOS_TABLE_TYPE6 *Type6;
2106 SMBIOS_TABLE_TYPE7 *Type7;
2107 SMBIOS_TABLE_TYPE8 *Type8;
2108 SMBIOS_TABLE_TYPE9 *Type9;
2109 SMBIOS_TABLE_TYPE10 *Type10;
2110 SMBIOS_TABLE_TYPE11 *Type11;
2111 SMBIOS_TABLE_TYPE12 *Type12;
2112 SMBIOS_TABLE_TYPE13 *Type13;
2113 SMBIOS_TABLE_TYPE14 *Type14;
2114 SMBIOS_TABLE_TYPE15 *Type15;
2115 SMBIOS_TABLE_TYPE16 *Type16;
2116 SMBIOS_TABLE_TYPE17 *Type17;
2117 SMBIOS_TABLE_TYPE18 *Type18;
2118 SMBIOS_TABLE_TYPE19 *Type19;
2119 SMBIOS_TABLE_TYPE20 *Type20;
2120 SMBIOS_TABLE_TYPE21 *Type21;
2121 SMBIOS_TABLE_TYPE22 *Type22;
2122 SMBIOS_TABLE_TYPE23 *Type23;
2123 SMBIOS_TABLE_TYPE24 *Type24;
2124 SMBIOS_TABLE_TYPE25 *Type25;
2125 SMBIOS_TABLE_TYPE26 *Type26;
2126 SMBIOS_TABLE_TYPE27 *Type27;
2127 SMBIOS_TABLE_TYPE28 *Type28;
2128 SMBIOS_TABLE_TYPE29 *Type29;
2129 SMBIOS_TABLE_TYPE30 *Type30;
2130 SMBIOS_TABLE_TYPE31 *Type31;
2131 SMBIOS_TABLE_TYPE32 *Type32;
2132 SMBIOS_TABLE_TYPE33 *Type33;
2133 SMBIOS_TABLE_TYPE34 *Type34;
2134 SMBIOS_TABLE_TYPE35 *Type35;
2135 SMBIOS_TABLE_TYPE36 *Type36;
2136 SMBIOS_TABLE_TYPE37 *Type37;
2137 SMBIOS_TABLE_TYPE38 *Type38;
2138 SMBIOS_TABLE_TYPE39 *Type39;
2139 SMBIOS_TABLE_TYPE40 *Type40;
2140 SMBIOS_TABLE_TYPE41 *Type41;
2141 SMBIOS_TABLE_TYPE126 *Type126;
2142 SMBIOS_TABLE_TYPE127 *Type127;
2143 UINT8 *Raw;
2144 } SMBIOS_STRUCTURE_POINTER;
2145
2146 #pragma pack()
2147
2148 #endif