2 Industry Standard Definitions of SMBIOS Table Specification v2.8.0.
4 Copyright (c) 2006 - 2014, 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.
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.
15 #ifndef __SMBIOS_STANDARD_H__
16 #define __SMBIOS_STANDARD_H__
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.
23 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
26 /// Reference SMBIOS 2.7, chapter 6.1.2.
27 /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its
28 /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."
29 /// This number is not used for any other purpose by the SMBIOS specification.
31 #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
34 /// Reference SMBIOS 2.6, chapter 3.1.3.
35 /// Each text string is limited to 64 significant characters due to system MIF limitations.
36 /// Reference SMBIOS 2.7, chapter 6.1.3.
37 /// It will have no limit on the length of each individual text string.
39 #define SMBIOS_STRING_MAX_LENGTH 64
42 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
43 /// Upper-level software that interprets the SMBIOS structure-table should bypass an
44 /// Inactive structure just like a structure type that the software does not recognize.
46 #define SMBIOS_TYPE_INACTIVE 0x007E
49 /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
50 /// The end-of-table indicator is used in the last physical structure in a table
52 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
55 /// Smbios Table Entry Point Structure.
59 UINT8 AnchorString
[4];
60 UINT8 EntryPointStructureChecksum
;
61 UINT8 EntryPointLength
;
64 UINT16 MaxStructureSize
;
65 UINT8 EntryPointRevision
;
66 UINT8 FormattedArea
[5];
67 UINT8 IntermediateAnchorString
[5];
68 UINT8 IntermediateChecksum
;
71 UINT16 NumberOfSmbiosStructures
;
72 UINT8 SmbiosBcdRevision
;
73 } SMBIOS_TABLE_ENTRY_POINT
;
76 /// The Smbios structure header.
85 /// String Number for a Null terminated string, 00h stands for no string available.
87 typedef UINT8 SMBIOS_TABLE_STRING
;
90 /// BIOS Characteristics
91 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
94 UINT32 Reserved
:2; ///< Bits 0-1.
96 UINT32 BiosCharacteristicsNotSupported
:1;
97 UINT32 IsaIsSupported
:1;
98 UINT32 McaIsSupported
:1;
99 UINT32 EisaIsSupported
:1;
100 UINT32 PciIsSupported
:1;
101 UINT32 PcmciaIsSupported
:1;
102 UINT32 PlugAndPlayIsSupported
:1;
103 UINT32 ApmIsSupported
:1;
104 UINT32 BiosIsUpgradable
:1;
105 UINT32 BiosShadowingAllowed
:1;
106 UINT32 VlVesaIsSupported
:1;
107 UINT32 EscdSupportIsAvailable
:1;
108 UINT32 BootFromCdIsSupported
:1;
109 UINT32 SelectableBootIsSupported
:1;
110 UINT32 RomBiosIsSocketed
:1;
111 UINT32 BootFromPcmciaIsSupported
:1;
112 UINT32 EDDSpecificationIsSupported
:1;
113 UINT32 JapaneseNecFloppyIsSupported
:1;
114 UINT32 JapaneseToshibaFloppyIsSupported
:1;
115 UINT32 Floppy525_360IsSupported
:1;
116 UINT32 Floppy525_12IsSupported
:1;
117 UINT32 Floppy35_720IsSupported
:1;
118 UINT32 Floppy35_288IsSupported
:1;
119 UINT32 PrintScreenIsSupported
:1;
120 UINT32 Keyboard8042IsSupported
:1;
121 UINT32 SerialIsSupported
:1;
122 UINT32 PrinterIsSupported
:1;
123 UINT32 CgaMonoIsSupported
:1;
125 UINT32 ReservedForVendor
:32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
126 ///< and bits 48-63 reserved for System Vendor.
127 } MISC_BIOS_CHARACTERISTICS
;
130 /// BIOS Characteristics Extension Byte 1.
131 /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h
132 /// within the BIOS Information structure.
135 UINT8 AcpiIsSupported
:1;
136 UINT8 UsbLegacyIsSupported
:1;
137 UINT8 AgpIsSupported
:1;
138 UINT8 I2OBootIsSupported
:1;
139 UINT8 Ls120BootIsSupported
:1;
140 UINT8 AtapiZipDriveBootIsSupported
:1;
141 UINT8 Boot1394IsSupported
:1;
142 UINT8 SmartBatteryIsSupported
:1;
143 } MBCE_BIOS_RESERVED
;
146 /// BIOS Characteristics Extension Byte 2.
147 /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h
148 /// within the BIOS Information structure.
151 UINT8 BiosBootSpecIsSupported
:1;
152 UINT8 FunctionKeyNetworkBootIsSupported
:1;
153 UINT8 TargetContentDistributionEnabled
:1;
154 UINT8 UefiSpecificationSupported
:1;
155 UINT8 VirtualMachineSupported
:1;
156 UINT8 ExtensionByte2Reserved
:3;
157 } MBCE_SYSTEM_RESERVED
;
160 /// BIOS Characteristics Extension Bytes.
163 MBCE_BIOS_RESERVED BiosReserved
;
164 MBCE_SYSTEM_RESERVED SystemReserved
;
165 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
168 /// BIOS Information (Type 0).
171 SMBIOS_STRUCTURE Hdr
;
172 SMBIOS_TABLE_STRING Vendor
;
173 SMBIOS_TABLE_STRING BiosVersion
;
175 SMBIOS_TABLE_STRING BiosReleaseDate
;
177 MISC_BIOS_CHARACTERISTICS BiosCharacteristics
;
178 UINT8 BIOSCharacteristicsExtensionBytes
[2];
179 UINT8 SystemBiosMajorRelease
;
180 UINT8 SystemBiosMinorRelease
;
181 UINT8 EmbeddedControllerFirmwareMajorRelease
;
182 UINT8 EmbeddedControllerFirmwareMinorRelease
;
183 } SMBIOS_TABLE_TYPE0
;
186 /// System Wake-up Type.
189 SystemWakeupTypeReserved
= 0x00,
190 SystemWakeupTypeOther
= 0x01,
191 SystemWakeupTypeUnknown
= 0x02,
192 SystemWakeupTypeApmTimer
= 0x03,
193 SystemWakeupTypeModemRing
= 0x04,
194 SystemWakeupTypeLanRemote
= 0x05,
195 SystemWakeupTypePowerSwitch
= 0x06,
196 SystemWakeupTypePciPme
= 0x07,
197 SystemWakeupTypeAcPowerRestored
= 0x08
198 } MISC_SYSTEM_WAKEUP_TYPE
;
201 /// System Information (Type 1).
203 /// The information in this structure defines attributes of the overall system and is
204 /// intended to be associated with the Component ID group of the system's MIF.
205 /// An SMBIOS implementation is associated with a single system instance and contains
206 /// one and only one System Information (Type 1) structure.
209 SMBIOS_STRUCTURE Hdr
;
210 SMBIOS_TABLE_STRING Manufacturer
;
211 SMBIOS_TABLE_STRING ProductName
;
212 SMBIOS_TABLE_STRING Version
;
213 SMBIOS_TABLE_STRING SerialNumber
;
215 UINT8 WakeUpType
; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
216 SMBIOS_TABLE_STRING SKUNumber
;
217 SMBIOS_TABLE_STRING Family
;
218 } SMBIOS_TABLE_TYPE1
;
221 /// Base Board - Feature Flags.
224 UINT8 Motherboard
:1;
225 UINT8 RequiresDaughterCard
:1;
227 UINT8 Replaceable
:1;
228 UINT8 HotSwappable
:1;
230 } BASE_BOARD_FEATURE_FLAGS
;
233 /// Base Board - Board Type.
236 BaseBoardTypeUnknown
= 0x1,
237 BaseBoardTypeOther
= 0x2,
238 BaseBoardTypeServerBlade
= 0x3,
239 BaseBoardTypeConnectivitySwitch
= 0x4,
240 BaseBoardTypeSystemManagementModule
= 0x5,
241 BaseBoardTypeProcessorModule
= 0x6,
242 BaseBoardTypeIOModule
= 0x7,
243 BaseBoardTypeMemoryModule
= 0x8,
244 BaseBoardTypeDaughterBoard
= 0x9,
245 BaseBoardTypeMotherBoard
= 0xA,
246 BaseBoardTypeProcessorMemoryModule
= 0xB,
247 BaseBoardTypeProcessorIOModule
= 0xC,
248 BaseBoardTypeInterconnectBoard
= 0xD
252 /// Base Board (or Module) Information (Type 2).
254 /// The information in this structure defines attributes of a system baseboard -
255 /// for example a motherboard, planar, or server blade or other standard system module.
258 SMBIOS_STRUCTURE Hdr
;
259 SMBIOS_TABLE_STRING Manufacturer
;
260 SMBIOS_TABLE_STRING ProductName
;
261 SMBIOS_TABLE_STRING Version
;
262 SMBIOS_TABLE_STRING SerialNumber
;
263 SMBIOS_TABLE_STRING AssetTag
;
264 BASE_BOARD_FEATURE_FLAGS FeatureFlag
;
265 SMBIOS_TABLE_STRING LocationInChassis
;
266 UINT16 ChassisHandle
;
267 UINT8 BoardType
; ///< The enumeration value from BASE_BOARD_TYPE.
268 UINT8 NumberOfContainedObjectHandles
;
269 UINT16 ContainedObjectHandles
[1];
270 } SMBIOS_TABLE_TYPE2
;
273 /// System Enclosure or Chassis Types
276 MiscChassisTypeOther
= 0x01,
277 MiscChassisTypeUnknown
= 0x02,
278 MiscChassisTypeDeskTop
= 0x03,
279 MiscChassisTypeLowProfileDesktop
= 0x04,
280 MiscChassisTypePizzaBox
= 0x05,
281 MiscChassisTypeMiniTower
= 0x06,
282 MiscChassisTypeTower
= 0x07,
283 MiscChassisTypePortable
= 0x08,
284 MiscChassisTypeLapTop
= 0x09,
285 MiscChassisTypeNotebook
= 0x0A,
286 MiscChassisTypeHandHeld
= 0x0B,
287 MiscChassisTypeDockingStation
= 0x0C,
288 MiscChassisTypeAllInOne
= 0x0D,
289 MiscChassisTypeSubNotebook
= 0x0E,
290 MiscChassisTypeSpaceSaving
= 0x0F,
291 MiscChassisTypeLunchBox
= 0x10,
292 MiscChassisTypeMainServerChassis
= 0x11,
293 MiscChassisTypeExpansionChassis
= 0x12,
294 MiscChassisTypeSubChassis
= 0x13,
295 MiscChassisTypeBusExpansionChassis
= 0x14,
296 MiscChassisTypePeripheralChassis
= 0x15,
297 MiscChassisTypeRaidChassis
= 0x16,
298 MiscChassisTypeRackMountChassis
= 0x17,
299 MiscChassisTypeSealedCasePc
= 0x18,
300 MiscChassisMultiSystemChassis
= 0x19,
301 MiscChassisCompactPCI
= 0x1A,
302 MiscChassisAdvancedTCA
= 0x1B,
303 MiscChassisBlade
= 0x1C,
304 MiscChassisBladeEnclosure
= 0x1D
308 /// System Enclosure or Chassis States .
311 ChassisStateOther
= 0x01,
312 ChassisStateUnknown
= 0x02,
313 ChassisStateSafe
= 0x03,
314 ChassisStateWarning
= 0x04,
315 ChassisStateCritical
= 0x05,
316 ChassisStateNonRecoverable
= 0x06
317 } MISC_CHASSIS_STATE
;
320 /// System Enclosure or Chassis Security Status.
323 ChassisSecurityStatusOther
= 0x01,
324 ChassisSecurityStatusUnknown
= 0x02,
325 ChassisSecurityStatusNone
= 0x03,
326 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
327 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
328 } MISC_CHASSIS_SECURITY_STATE
;
331 /// Contained Element record
334 UINT8 ContainedElementType
;
335 UINT8 ContainedElementMinimum
;
336 UINT8 ContainedElementMaximum
;
341 /// System Enclosure or Chassis (Type 3).
343 /// The information in this structure defines attributes of the system's mechanical enclosure(s).
344 /// For example, if a system included a separate enclosure for its peripheral devices,
345 /// two structures would be returned: one for the main, system enclosure and the second for
346 /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification
347 /// support the population of the CIM_Chassis class.
350 SMBIOS_STRUCTURE Hdr
;
351 SMBIOS_TABLE_STRING Manufacturer
;
353 SMBIOS_TABLE_STRING Version
;
354 SMBIOS_TABLE_STRING SerialNumber
;
355 SMBIOS_TABLE_STRING AssetTag
;
356 UINT8 BootupState
; ///< The enumeration value from MISC_CHASSIS_STATE.
357 UINT8 PowerSupplyState
; ///< The enumeration value from MISC_CHASSIS_STATE.
358 UINT8 ThermalState
; ///< The enumeration value from MISC_CHASSIS_STATE.
359 UINT8 SecurityStatus
; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.
362 UINT8 NumberofPowerCords
;
363 UINT8 ContainedElementCount
;
364 UINT8 ContainedElementRecordLength
;
365 CONTAINED_ELEMENT ContainedElements
[1];
366 } SMBIOS_TABLE_TYPE3
;
369 /// Processor Information - Processor Type.
372 ProcessorOther
= 0x01,
373 ProcessorUnknown
= 0x02,
374 CentralProcessor
= 0x03,
375 MathProcessor
= 0x04,
377 VideoProcessor
= 0x06
378 } PROCESSOR_TYPE_DATA
;
381 /// Processor Information - Processor Family.
384 ProcessorFamilyOther
= 0x01,
385 ProcessorFamilyUnknown
= 0x02,
386 ProcessorFamily8086
= 0x03,
387 ProcessorFamily80286
= 0x04,
388 ProcessorFamilyIntel386
= 0x05,
389 ProcessorFamilyIntel486
= 0x06,
390 ProcessorFamily8087
= 0x07,
391 ProcessorFamily80287
= 0x08,
392 ProcessorFamily80387
= 0x09,
393 ProcessorFamily80487
= 0x0A,
394 ProcessorFamilyPentium
= 0x0B,
395 ProcessorFamilyPentiumPro
= 0x0C,
396 ProcessorFamilyPentiumII
= 0x0D,
397 ProcessorFamilyPentiumMMX
= 0x0E,
398 ProcessorFamilyCeleron
= 0x0F,
399 ProcessorFamilyPentiumIIXeon
= 0x10,
400 ProcessorFamilyPentiumIII
= 0x11,
401 ProcessorFamilyM1
= 0x12,
402 ProcessorFamilyM2
= 0x13,
403 ProcessorFamilyIntelCeleronM
= 0x14,
404 ProcessorFamilyIntelPentium4Ht
= 0x15,
405 ProcessorFamilyAmdDuron
= 0x18,
406 ProcessorFamilyK5
= 0x19,
407 ProcessorFamilyK6
= 0x1A,
408 ProcessorFamilyK6_2
= 0x1B,
409 ProcessorFamilyK6_3
= 0x1C,
410 ProcessorFamilyAmdAthlon
= 0x1D,
411 ProcessorFamilyAmd29000
= 0x1E,
412 ProcessorFamilyK6_2Plus
= 0x1F,
413 ProcessorFamilyPowerPC
= 0x20,
414 ProcessorFamilyPowerPC601
= 0x21,
415 ProcessorFamilyPowerPC603
= 0x22,
416 ProcessorFamilyPowerPC603Plus
= 0x23,
417 ProcessorFamilyPowerPC604
= 0x24,
418 ProcessorFamilyPowerPC620
= 0x25,
419 ProcessorFamilyPowerPCx704
= 0x26,
420 ProcessorFamilyPowerPC750
= 0x27,
421 ProcessorFamilyIntelCoreDuo
= 0x28,
422 ProcessorFamilyIntelCoreDuoMobile
= 0x29,
423 ProcessorFamilyIntelCoreSoloMobile
= 0x2A,
424 ProcessorFamilyIntelAtom
= 0x2B,
425 ProcessorFamilyAlpha
= 0x30,
426 ProcessorFamilyAlpha21064
= 0x31,
427 ProcessorFamilyAlpha21066
= 0x32,
428 ProcessorFamilyAlpha21164
= 0x33,
429 ProcessorFamilyAlpha21164PC
= 0x34,
430 ProcessorFamilyAlpha21164a
= 0x35,
431 ProcessorFamilyAlpha21264
= 0x36,
432 ProcessorFamilyAlpha21364
= 0x37,
433 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM
= 0x38,
434 ProcessorFamilyAmdTurionIIDualCoreMobileM
= 0x39,
435 ProcessorFamilyAmdAthlonIIDualCoreM
= 0x3A,
436 ProcessorFamilyAmdOpteron6100Series
= 0x3B,
437 ProcessorFamilyAmdOpteron4100Series
= 0x3C,
438 ProcessorFamilyAmdOpteron6200Series
= 0x3D,
439 ProcessorFamilyAmdOpteron4200Series
= 0x3E,
440 ProcessorFamilyAmdFxSeries
= 0x3F,
441 ProcessorFamilyMips
= 0x40,
442 ProcessorFamilyMIPSR4000
= 0x41,
443 ProcessorFamilyMIPSR4200
= 0x42,
444 ProcessorFamilyMIPSR4400
= 0x43,
445 ProcessorFamilyMIPSR4600
= 0x44,
446 ProcessorFamilyMIPSR10000
= 0x45,
447 ProcessorFamilyAmdCSeries
= 0x46,
448 ProcessorFamilyAmdESeries
= 0x47,
449 ProcessorFamilyAmdASeries
= 0x48, ///< SMBIOS spec 2.8.0 updated the name
450 ProcessorFamilyAmdGSeries
= 0x49,
451 ProcessorFamilyAmdZSeries
= 0x4A,
452 ProcessorFamilyAmdRSeries
= 0x4B,
453 ProcessorFamilyAmdOpteron4300
= 0x4C,
454 ProcessorFamilyAmdOpteron6300
= 0x4D,
455 ProcessorFamilyAmdOpteron3300
= 0x4E,
456 ProcessorFamilyAmdFireProSeries
= 0x4F,
457 ProcessorFamilySparc
= 0x50,
458 ProcessorFamilySuperSparc
= 0x51,
459 ProcessorFamilymicroSparcII
= 0x52,
460 ProcessorFamilymicroSparcIIep
= 0x53,
461 ProcessorFamilyUltraSparc
= 0x54,
462 ProcessorFamilyUltraSparcII
= 0x55,
463 ProcessorFamilyUltraSparcIii
= 0x56,
464 ProcessorFamilyUltraSparcIII
= 0x57,
465 ProcessorFamilyUltraSparcIIIi
= 0x58,
466 ProcessorFamily68040
= 0x60,
467 ProcessorFamily68xxx
= 0x61,
468 ProcessorFamily68000
= 0x62,
469 ProcessorFamily68010
= 0x63,
470 ProcessorFamily68020
= 0x64,
471 ProcessorFamily68030
= 0x65,
472 ProcessorFamilyHobbit
= 0x70,
473 ProcessorFamilyCrusoeTM5000
= 0x78,
474 ProcessorFamilyCrusoeTM3000
= 0x79,
475 ProcessorFamilyEfficeonTM8000
= 0x7A,
476 ProcessorFamilyWeitek
= 0x80,
477 ProcessorFamilyItanium
= 0x82,
478 ProcessorFamilyAmdAthlon64
= 0x83,
479 ProcessorFamilyAmdOpteron
= 0x84,
480 ProcessorFamilyAmdSempron
= 0x85,
481 ProcessorFamilyAmdTurion64Mobile
= 0x86,
482 ProcessorFamilyDualCoreAmdOpteron
= 0x87,
483 ProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
484 ProcessorFamilyAmdTurion64X2Mobile
= 0x89,
485 ProcessorFamilyQuadCoreAmdOpteron
= 0x8A,
486 ProcessorFamilyThirdGenerationAmdOpteron
= 0x8B,
487 ProcessorFamilyAmdPhenomFxQuadCore
= 0x8C,
488 ProcessorFamilyAmdPhenomX4QuadCore
= 0x8D,
489 ProcessorFamilyAmdPhenomX2DualCore
= 0x8E,
490 ProcessorFamilyAmdAthlonX2DualCore
= 0x8F,
491 ProcessorFamilyPARISC
= 0x90,
492 ProcessorFamilyPaRisc8500
= 0x91,
493 ProcessorFamilyPaRisc8000
= 0x92,
494 ProcessorFamilyPaRisc7300LC
= 0x93,
495 ProcessorFamilyPaRisc7200
= 0x94,
496 ProcessorFamilyPaRisc7100LC
= 0x95,
497 ProcessorFamilyPaRisc7100
= 0x96,
498 ProcessorFamilyV30
= 0xA0,
499 ProcessorFamilyQuadCoreIntelXeon3200Series
= 0xA1,
500 ProcessorFamilyDualCoreIntelXeon3000Series
= 0xA2,
501 ProcessorFamilyQuadCoreIntelXeon5300Series
= 0xA3,
502 ProcessorFamilyDualCoreIntelXeon5100Series
= 0xA4,
503 ProcessorFamilyDualCoreIntelXeon5000Series
= 0xA5,
504 ProcessorFamilyDualCoreIntelXeonLV
= 0xA6,
505 ProcessorFamilyDualCoreIntelXeonULV
= 0xA7,
506 ProcessorFamilyDualCoreIntelXeon7100Series
= 0xA8,
507 ProcessorFamilyQuadCoreIntelXeon5400Series
= 0xA9,
508 ProcessorFamilyQuadCoreIntelXeon
= 0xAA,
509 ProcessorFamilyDualCoreIntelXeon5200Series
= 0xAB,
510 ProcessorFamilyDualCoreIntelXeon7200Series
= 0xAC,
511 ProcessorFamilyQuadCoreIntelXeon7300Series
= 0xAD,
512 ProcessorFamilyQuadCoreIntelXeon7400Series
= 0xAE,
513 ProcessorFamilyMultiCoreIntelXeon7400Series
= 0xAF,
514 ProcessorFamilyPentiumIIIXeon
= 0xB0,
515 ProcessorFamilyPentiumIIISpeedStep
= 0xB1,
516 ProcessorFamilyPentium4
= 0xB2,
517 ProcessorFamilyIntelXeon
= 0xB3,
518 ProcessorFamilyAS400
= 0xB4,
519 ProcessorFamilyIntelXeonMP
= 0xB5,
520 ProcessorFamilyAMDAthlonXP
= 0xB6,
521 ProcessorFamilyAMDAthlonMP
= 0xB7,
522 ProcessorFamilyIntelItanium2
= 0xB8,
523 ProcessorFamilyIntelPentiumM
= 0xB9,
524 ProcessorFamilyIntelCeleronD
= 0xBA,
525 ProcessorFamilyIntelPentiumD
= 0xBB,
526 ProcessorFamilyIntelPentiumEx
= 0xBC,
527 ProcessorFamilyIntelCoreSolo
= 0xBD, ///< SMBIOS spec 2.6 updated this value
528 ProcessorFamilyReserved
= 0xBE,
529 ProcessorFamilyIntelCore2
= 0xBF,
530 ProcessorFamilyIntelCore2Solo
= 0xC0,
531 ProcessorFamilyIntelCore2Extreme
= 0xC1,
532 ProcessorFamilyIntelCore2Quad
= 0xC2,
533 ProcessorFamilyIntelCore2ExtremeMobile
= 0xC3,
534 ProcessorFamilyIntelCore2DuoMobile
= 0xC4,
535 ProcessorFamilyIntelCore2SoloMobile
= 0xC5,
536 ProcessorFamilyIntelCoreI7
= 0xC6,
537 ProcessorFamilyDualCoreIntelCeleron
= 0xC7,
538 ProcessorFamilyIBM390
= 0xC8,
539 ProcessorFamilyG4
= 0xC9,
540 ProcessorFamilyG5
= 0xCA,
541 ProcessorFamilyG6
= 0xCB,
542 ProcessorFamilyzArchitecture
= 0xCC,
543 ProcessorFamilyIntelCoreI5
= 0xCD,
544 ProcessorFamilyIntelCoreI3
= 0xCE,
545 ProcessorFamilyViaC7M
= 0xD2,
546 ProcessorFamilyViaC7D
= 0xD3,
547 ProcessorFamilyViaC7
= 0xD4,
548 ProcessorFamilyViaEden
= 0xD5,
549 ProcessorFamilyMultiCoreIntelXeon
= 0xD6,
550 ProcessorFamilyDualCoreIntelXeon3Series
= 0xD7,
551 ProcessorFamilyQuadCoreIntelXeon3Series
= 0xD8,
552 ProcessorFamilyViaNano
= 0xD9,
553 ProcessorFamilyDualCoreIntelXeon5Series
= 0xDA,
554 ProcessorFamilyQuadCoreIntelXeon5Series
= 0xDB,
555 ProcessorFamilyDualCoreIntelXeon7Series
= 0xDD,
556 ProcessorFamilyQuadCoreIntelXeon7Series
= 0xDE,
557 ProcessorFamilyMultiCoreIntelXeon7Series
= 0xDF,
558 ProcessorFamilyMultiCoreIntelXeon3400Series
= 0xE0,
559 ProcessorFamilyAmdOpteron3000Series
= 0xE4,
560 ProcessorFamilyAmdSempronII
= 0xE5,
561 ProcessorFamilyEmbeddedAmdOpteronQuadCore
= 0xE6,
562 ProcessorFamilyAmdPhenomTripleCore
= 0xE7,
563 ProcessorFamilyAmdTurionUltraDualCoreMobile
= 0xE8,
564 ProcessorFamilyAmdTurionDualCoreMobile
= 0xE9,
565 ProcessorFamilyAmdAthlonDualCore
= 0xEA,
566 ProcessorFamilyAmdSempronSI
= 0xEB,
567 ProcessorFamilyAmdPhenomII
= 0xEC,
568 ProcessorFamilyAmdAthlonII
= 0xED,
569 ProcessorFamilySixCoreAmdOpteron
= 0xEE,
570 ProcessorFamilyAmdSempronM
= 0xEF,
571 ProcessorFamilyi860
= 0xFA,
572 ProcessorFamilyi960
= 0xFB,
573 ProcessorFamilyIndicatorFamily2
= 0xFE,
574 ProcessorFamilyReserved1
= 0xFF
575 } PROCESSOR_FAMILY_DATA
;
578 /// Processor Information2 - Processor Family2.
581 ProcessorFamilySH3
= 0x0104,
582 ProcessorFamilySH4
= 0x0105,
583 ProcessorFamilyARM
= 0x0118,
584 ProcessorFamilyStrongARM
= 0x0119,
585 ProcessorFamily6x86
= 0x012C,
586 ProcessorFamilyMediaGX
= 0x012D,
587 ProcessorFamilyMII
= 0x012E,
588 ProcessorFamilyWinChip
= 0x0140,
589 ProcessorFamilyDSP
= 0x015E,
590 ProcessorFamilyVideoProcessor
= 0x01F4
591 } PROCESSOR_FAMILY2_DATA
;
594 /// Processor Information - Voltage.
597 UINT8 ProcessorVoltageCapability5V
:1;
598 UINT8 ProcessorVoltageCapability3_3V
:1;
599 UINT8 ProcessorVoltageCapability2_9V
:1;
600 UINT8 ProcessorVoltageCapabilityReserved
:1; ///< Bit 3, must be zero.
601 UINT8 ProcessorVoltageReserved
:3; ///< Bits 4-6, must be zero.
602 UINT8 ProcessorVoltageIndicateLegacy
:1;
606 /// Processor Information - Processor Upgrade.
609 ProcessorUpgradeOther
= 0x01,
610 ProcessorUpgradeUnknown
= 0x02,
611 ProcessorUpgradeDaughterBoard
= 0x03,
612 ProcessorUpgradeZIFSocket
= 0x04,
613 ProcessorUpgradePiggyBack
= 0x05, ///< Replaceable.
614 ProcessorUpgradeNone
= 0x06,
615 ProcessorUpgradeLIFSocket
= 0x07,
616 ProcessorUpgradeSlot1
= 0x08,
617 ProcessorUpgradeSlot2
= 0x09,
618 ProcessorUpgrade370PinSocket
= 0x0A,
619 ProcessorUpgradeSlotA
= 0x0B,
620 ProcessorUpgradeSlotM
= 0x0C,
621 ProcessorUpgradeSocket423
= 0x0D,
622 ProcessorUpgradeSocketA
= 0x0E, ///< Socket 462.
623 ProcessorUpgradeSocket478
= 0x0F,
624 ProcessorUpgradeSocket754
= 0x10,
625 ProcessorUpgradeSocket940
= 0x11,
626 ProcessorUpgradeSocket939
= 0x12,
627 ProcessorUpgradeSocketmPGA604
= 0x13,
628 ProcessorUpgradeSocketLGA771
= 0x14,
629 ProcessorUpgradeSocketLGA775
= 0x15,
630 ProcessorUpgradeSocketS1
= 0x16,
631 ProcessorUpgradeAM2
= 0x17,
632 ProcessorUpgradeF1207
= 0x18,
633 ProcessorSocketLGA1366
= 0x19,
634 ProcessorUpgradeSocketG34
= 0x1A,
635 ProcessorUpgradeSocketAM3
= 0x1B,
636 ProcessorUpgradeSocketC32
= 0x1C,
637 ProcessorUpgradeSocketLGA1156
= 0x1D,
638 ProcessorUpgradeSocketLGA1567
= 0x1E,
639 ProcessorUpgradeSocketPGA988A
= 0x1F,
640 ProcessorUpgradeSocketBGA1288
= 0x20,
641 ProcessorUpgradeSocketrPGA988B
= 0x21,
642 ProcessorUpgradeSocketBGA1023
= 0x22,
643 ProcessorUpgradeSocketBGA1224
= 0x23,
644 ProcessorUpgradeSocketLGA1155
= 0x24, ///< SMBIOS spec 2.8.0 updated the name
645 ProcessorUpgradeSocketLGA1356
= 0x25,
646 ProcessorUpgradeSocketLGA2011
= 0x26,
647 ProcessorUpgradeSocketFS1
= 0x27,
648 ProcessorUpgradeSocketFS2
= 0x28,
649 ProcessorUpgradeSocketFM1
= 0x29,
650 ProcessorUpgradeSocketFM2
= 0x2A,
651 ProcessorUpgradeSocketLGA2011_3
= 0x2B,
652 ProcessorUpgradeSocketLGA1356_3
= 0x2C
656 /// Processor ID Field Description
659 UINT32 ProcessorSteppingId
:4;
660 UINT32 ProcessorModel
: 4;
661 UINT32 ProcessorFamily
: 4;
662 UINT32 ProcessorType
: 2;
663 UINT32 ProcessorReserved1
: 2;
664 UINT32 ProcessorXModel
: 4;
665 UINT32 ProcessorXFamily
: 8;
666 UINT32 ProcessorReserved2
: 4;
667 } PROCESSOR_SIGNATURE
;
670 UINT32 ProcessorFpu
:1;
671 UINT32 ProcessorVme
:1;
672 UINT32 ProcessorDe
:1;
673 UINT32 ProcessorPse
:1;
674 UINT32 ProcessorTsc
:1;
675 UINT32 ProcessorMsr
:1;
676 UINT32 ProcessorPae
:1;
677 UINT32 ProcessorMce
:1;
678 UINT32 ProcessorCx8
:1;
679 UINT32 ProcessorApic
:1;
680 UINT32 ProcessorReserved1
:1;
681 UINT32 ProcessorSep
:1;
682 UINT32 ProcessorMtrr
:1;
683 UINT32 ProcessorPge
:1;
684 UINT32 ProcessorMca
:1;
685 UINT32 ProcessorCmov
:1;
686 UINT32 ProcessorPat
:1;
687 UINT32 ProcessorPse36
:1;
688 UINT32 ProcessorPsn
:1;
689 UINT32 ProcessorClfsh
:1;
690 UINT32 ProcessorReserved2
:1;
691 UINT32 ProcessorDs
:1;
692 UINT32 ProcessorAcpi
:1;
693 UINT32 ProcessorMmx
:1;
694 UINT32 ProcessorFxsr
:1;
695 UINT32 ProcessorSse
:1;
696 UINT32 ProcessorSse2
:1;
697 UINT32 ProcessorSs
:1;
698 UINT32 ProcessorReserved3
:1;
699 UINT32 ProcessorTm
:1;
700 UINT32 ProcessorReserved4
:2;
701 } PROCESSOR_FEATURE_FLAGS
;
704 PROCESSOR_SIGNATURE Signature
;
705 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
709 /// Processor Information (Type 4).
711 /// The information in this structure defines the attributes of a single processor;
712 /// a separate structure instance is provided for each system processor socket/slot.
713 /// For example, a system with an IntelDX2 processor would have a single
714 /// structure instance, while a system with an IntelSX2 processor would have a structure
715 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
718 SMBIOS_STRUCTURE Hdr
;
719 SMBIOS_TABLE_STRING Socket
;
720 UINT8 ProcessorType
; ///< The enumeration value from PROCESSOR_TYPE_DATA.
721 UINT8 ProcessorFamily
; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
722 SMBIOS_TABLE_STRING ProcessorManufacture
;
723 PROCESSOR_ID_DATA ProcessorId
;
724 SMBIOS_TABLE_STRING ProcessorVersion
;
725 PROCESSOR_VOLTAGE Voltage
;
726 UINT16 ExternalClock
;
730 UINT8 ProcessorUpgrade
; ///< The enumeration value from PROCESSOR_UPGRADE.
731 UINT16 L1CacheHandle
;
732 UINT16 L2CacheHandle
;
733 UINT16 L3CacheHandle
;
734 SMBIOS_TABLE_STRING SerialNumber
;
735 SMBIOS_TABLE_STRING AssetTag
;
736 SMBIOS_TABLE_STRING PartNumber
;
738 // Add for smbios 2.5
741 UINT8 EnabledCoreCount
;
743 UINT16 ProcessorCharacteristics
;
745 // Add for smbios 2.6
747 UINT16 ProcessorFamily2
;
748 } SMBIOS_TABLE_TYPE4
;
751 /// Memory Controller Error Detecting Method.
754 ErrorDetectingMethodOther
= 0x01,
755 ErrorDetectingMethodUnknown
= 0x02,
756 ErrorDetectingMethodNone
= 0x03,
757 ErrorDetectingMethodParity
= 0x04,
758 ErrorDetectingMethod32Ecc
= 0x05,
759 ErrorDetectingMethod64Ecc
= 0x06,
760 ErrorDetectingMethod128Ecc
= 0x07,
761 ErrorDetectingMethodCrc
= 0x08
762 } MEMORY_ERROR_DETECT_METHOD
;
765 /// Memory Controller Error Correcting Capability.
771 UINT8 SingleBitErrorCorrect
:1;
772 UINT8 DoubleBitErrorCorrect
:1;
773 UINT8 ErrorScrubbing
:1;
775 } MEMORY_ERROR_CORRECT_CAPABILITY
;
778 /// Memory Controller Information - Interleave Support.
781 MemoryInterleaveOther
= 0x01,
782 MemoryInterleaveUnknown
= 0x02,
783 MemoryInterleaveOneWay
= 0x03,
784 MemoryInterleaveTwoWay
= 0x04,
785 MemoryInterleaveFourWay
= 0x05,
786 MemoryInterleaveEightWay
= 0x06,
787 MemoryInterleaveSixteenWay
= 0x07
788 } MEMORY_SUPPORT_INTERLEAVE_TYPE
;
791 /// Memory Controller Information - Memory Speeds.
803 /// Memory Controller Information (Type 5, Obsolete).
805 /// The information in this structure defines the attributes of the system's memory controller(s)
806 /// and the supported attributes of any memory-modules present in the sockets controlled by
808 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
809 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
810 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
811 /// choose to implement both memory description types to allow existing DMI browsers
812 /// to properly display the system's memory attributes.
815 SMBIOS_STRUCTURE Hdr
;
816 UINT8 ErrDetectMethod
; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
817 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability
;
818 UINT8 SupportInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
819 UINT8 CurrentInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
820 UINT8 MaxMemoryModuleSize
;
821 MEMORY_SPEED_TYPE SupportSpeed
;
822 UINT16 SupportMemoryType
;
823 UINT8 MemoryModuleVoltage
;
824 UINT8 AssociatedMemorySlotNum
;
825 UINT16 MemoryModuleConfigHandles
[1];
826 } SMBIOS_TABLE_TYPE5
;
829 /// Memory Module Information - Memory Types
835 UINT16 FastPageMode
:1;
844 } MEMORY_CURRENT_TYPE
;
847 /// Memory Module Information - Memory Size.
850 UINT8 InstalledOrEnabledSize
:7; ///< Size (n), where 2**n is the size in MB.
851 UINT8 SingleOrDoubleBank
:1;
852 } MEMORY_INSTALLED_ENABLED_SIZE
;
855 /// Memory Module Information (Type 6, Obsolete)
857 /// One Memory Module Information structure is included for each memory-module socket
858 /// in the system. The structure describes the speed, type, size, and error status
859 /// of each system memory module. The supported attributes of each module are described
860 /// by the "owning" Memory Controller Information structure.
861 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
862 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
863 /// and Memory Device (Type 17) structures should be used instead.
866 SMBIOS_STRUCTURE Hdr
;
867 SMBIOS_TABLE_STRING SocketDesignation
;
868 UINT8 BankConnections
;
870 MEMORY_CURRENT_TYPE CurrentMemoryType
;
871 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
872 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
874 } SMBIOS_TABLE_TYPE6
;
877 /// Cache Information - SRAM Type.
884 UINT16 PipelineBurst
:1;
885 UINT16 Synchronous
:1;
886 UINT16 Asynchronous
:1;
888 } CACHE_SRAM_TYPE_DATA
;
891 /// Cache Information - Error Correction Type.
894 CacheErrorOther
= 0x01,
895 CacheErrorUnknown
= 0x02,
896 CacheErrorNone
= 0x03,
897 CacheErrorParity
= 0x04,
898 CacheErrorSingleBit
= 0x05, ///< ECC
899 CacheErrorMultiBit
= 0x06 ///< ECC
900 } CACHE_ERROR_TYPE_DATA
;
903 /// Cache Information - System Cache Type.
906 CacheTypeOther
= 0x01,
907 CacheTypeUnknown
= 0x02,
908 CacheTypeInstruction
= 0x03,
909 CacheTypeData
= 0x04,
910 CacheTypeUnified
= 0x05
914 /// Cache Information - Associativity.
917 CacheAssociativityOther
= 0x01,
918 CacheAssociativityUnknown
= 0x02,
919 CacheAssociativityDirectMapped
= 0x03,
920 CacheAssociativity2Way
= 0x04,
921 CacheAssociativity4Way
= 0x05,
922 CacheAssociativityFully
= 0x06,
923 CacheAssociativity8Way
= 0x07,
924 CacheAssociativity16Way
= 0x08,
925 CacheAssociativity12Way
= 0x09,
926 CacheAssociativity24Way
= 0x0A,
927 CacheAssociativity32Way
= 0x0B,
928 CacheAssociativity48Way
= 0x0C,
929 CacheAssociativity64Way
= 0x0D,
930 CacheAssociativity20Way
= 0x0E
931 } CACHE_ASSOCIATIVITY_DATA
;
934 /// Cache Information (Type 7).
936 /// The information in this structure defines the attributes of CPU cache device in the system.
937 /// One structure is specified for each such device, whether the device is internal to
938 /// or external to the CPU module. Cache modules can be associated with a processor structure
939 /// in one or two ways, depending on the SMBIOS version.
942 SMBIOS_STRUCTURE Hdr
;
943 SMBIOS_TABLE_STRING SocketDesignation
;
944 UINT16 CacheConfiguration
;
945 UINT16 MaximumCacheSize
;
946 UINT16 InstalledSize
;
947 CACHE_SRAM_TYPE_DATA SupportedSRAMType
;
948 CACHE_SRAM_TYPE_DATA CurrentSRAMType
;
950 UINT8 ErrorCorrectionType
; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
951 UINT8 SystemCacheType
; ///< The enumeration value from CACHE_TYPE_DATA.
952 UINT8 Associativity
; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
953 } SMBIOS_TABLE_TYPE7
;
956 /// Port Connector Information - Connector Types.
959 PortConnectorTypeNone
= 0x00,
960 PortConnectorTypeCentronics
= 0x01,
961 PortConnectorTypeMiniCentronics
= 0x02,
962 PortConnectorTypeProprietary
= 0x03,
963 PortConnectorTypeDB25Male
= 0x04,
964 PortConnectorTypeDB25Female
= 0x05,
965 PortConnectorTypeDB15Male
= 0x06,
966 PortConnectorTypeDB15Female
= 0x07,
967 PortConnectorTypeDB9Male
= 0x08,
968 PortConnectorTypeDB9Female
= 0x09,
969 PortConnectorTypeRJ11
= 0x0A,
970 PortConnectorTypeRJ45
= 0x0B,
971 PortConnectorType50PinMiniScsi
= 0x0C,
972 PortConnectorTypeMiniDin
= 0x0D,
973 PortConnectorTypeMicroDin
= 0x0E,
974 PortConnectorTypePS2
= 0x0F,
975 PortConnectorTypeInfrared
= 0x10,
976 PortConnectorTypeHpHil
= 0x11,
977 PortConnectorTypeUsb
= 0x12,
978 PortConnectorTypeSsaScsi
= 0x13,
979 PortConnectorTypeCircularDin8Male
= 0x14,
980 PortConnectorTypeCircularDin8Female
= 0x15,
981 PortConnectorTypeOnboardIde
= 0x16,
982 PortConnectorTypeOnboardFloppy
= 0x17,
983 PortConnectorType9PinDualInline
= 0x18,
984 PortConnectorType25PinDualInline
= 0x19,
985 PortConnectorType50PinDualInline
= 0x1A,
986 PortConnectorType68PinDualInline
= 0x1B,
987 PortConnectorTypeOnboardSoundInput
= 0x1C,
988 PortConnectorTypeMiniCentronicsType14
= 0x1D,
989 PortConnectorTypeMiniCentronicsType26
= 0x1E,
990 PortConnectorTypeHeadPhoneMiniJack
= 0x1F,
991 PortConnectorTypeBNC
= 0x20,
992 PortConnectorType1394
= 0x21,
993 PortConnectorTypeSasSata
= 0x22,
994 PortConnectorTypePC98
= 0xA0,
995 PortConnectorTypePC98Hireso
= 0xA1,
996 PortConnectorTypePCH98
= 0xA2,
997 PortConnectorTypePC98Note
= 0xA3,
998 PortConnectorTypePC98Full
= 0xA4,
999 PortConnectorTypeOther
= 0xFF
1000 } MISC_PORT_CONNECTOR_TYPE
;
1003 /// Port Connector Information - Port Types
1006 PortTypeNone
= 0x00,
1007 PortTypeParallelXtAtCompatible
= 0x01,
1008 PortTypeParallelPortPs2
= 0x02,
1009 PortTypeParallelPortEcp
= 0x03,
1010 PortTypeParallelPortEpp
= 0x04,
1011 PortTypeParallelPortEcpEpp
= 0x05,
1012 PortTypeSerialXtAtCompatible
= 0x06,
1013 PortTypeSerial16450Compatible
= 0x07,
1014 PortTypeSerial16550Compatible
= 0x08,
1015 PortTypeSerial16550ACompatible
= 0x09,
1016 PortTypeScsi
= 0x0A,
1017 PortTypeMidi
= 0x0B,
1018 PortTypeJoyStick
= 0x0C,
1019 PortTypeKeyboard
= 0x0D,
1020 PortTypeMouse
= 0x0E,
1021 PortTypeSsaScsi
= 0x0F,
1023 PortTypeFireWire
= 0x11,
1024 PortTypePcmciaTypeI
= 0x12,
1025 PortTypePcmciaTypeII
= 0x13,
1026 PortTypePcmciaTypeIII
= 0x14,
1027 PortTypeCardBus
= 0x15,
1028 PortTypeAccessBusPort
= 0x16,
1029 PortTypeScsiII
= 0x17,
1030 PortTypeScsiWide
= 0x18,
1031 PortTypePC98
= 0x19,
1032 PortTypePC98Hireso
= 0x1A,
1033 PortTypePCH98
= 0x1B,
1034 PortTypeVideoPort
= 0x1C,
1035 PortTypeAudioPort
= 0x1D,
1036 PortTypeModemPort
= 0x1E,
1037 PortTypeNetworkPort
= 0x1F,
1038 PortType8251Compatible
= 0xA0,
1039 PortType8251FifoCompatible
= 0xA1,
1040 PortTypeOther
= 0xFF
1044 /// Port Connector Information (Type 8).
1046 /// The information in this structure defines the attributes of a system port connector,
1047 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
1048 /// are provided. One structure is present for each port provided by the system.
1051 SMBIOS_STRUCTURE Hdr
;
1052 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
1053 UINT8 InternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1054 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
1055 UINT8 ExternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1056 UINT8 PortType
; ///< The enumeration value from MISC_PORT_TYPE.
1057 } SMBIOS_TABLE_TYPE8
;
1060 /// System Slots - Slot Type
1063 SlotTypeOther
= 0x01,
1064 SlotTypeUnknown
= 0x02,
1067 SlotTypeEisa
= 0x05,
1069 SlotTypePcmcia
= 0x07,
1070 SlotTypeVlVesa
= 0x08,
1071 SlotTypeProprietary
= 0x09,
1072 SlotTypeProcessorCardSlot
= 0x0A,
1073 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1074 SlotTypeIORiserCardSlot
= 0x0C,
1075 SlotTypeNuBus
= 0x0D,
1076 SlotTypePci66MhzCapable
= 0x0E,
1078 SlotTypeApg2X
= 0x10,
1079 SlotTypeAgp4X
= 0x11,
1080 SlotTypePciX
= 0x12,
1081 SlotTypeAgp4x
= 0x13,
1082 SlotTypePC98C20
= 0xA0,
1083 SlotTypePC98C24
= 0xA1,
1084 SlotTypePC98E
= 0xA2,
1085 SlotTypePC98LocalBus
= 0xA3,
1086 SlotTypePC98Card
= 0xA4,
1087 SlotTypePciExpress
= 0xA5,
1088 SlotTypePciExpressX1
= 0xA6,
1089 SlotTypePciExpressX2
= 0xA7,
1090 SlotTypePciExpressX4
= 0xA8,
1091 SlotTypePciExpressX8
= 0xA9,
1092 SlotTypePciExpressX16
= 0xAA,
1093 SlotTypePciExpressGen2
= 0xAB,
1094 SlotTypePciExpressGen2X1
= 0xAC,
1095 SlotTypePciExpressGen2X2
= 0xAD,
1096 SlotTypePciExpressGen2X4
= 0xAE,
1097 SlotTypePciExpressGen2X8
= 0xAF,
1098 SlotTypePciExpressGen2X16
= 0xB0,
1099 SlotTypePciExpressGen3
= 0xB1,
1100 SlotTypePciExpressGen3X1
= 0xB2,
1101 SlotTypePciExpressGen3X2
= 0xB3,
1102 SlotTypePciExpressGen3X4
= 0xB4,
1103 SlotTypePciExpressGen3X8
= 0xB5,
1104 SlotTypePciExpressGen3X16
= 0xB6
1108 /// System Slots - Slot Data Bus Width.
1111 SlotDataBusWidthOther
= 0x01,
1112 SlotDataBusWidthUnknown
= 0x02,
1113 SlotDataBusWidth8Bit
= 0x03,
1114 SlotDataBusWidth16Bit
= 0x04,
1115 SlotDataBusWidth32Bit
= 0x05,
1116 SlotDataBusWidth64Bit
= 0x06,
1117 SlotDataBusWidth128Bit
= 0x07,
1118 SlotDataBusWidth1X
= 0x08, ///< Or X1
1119 SlotDataBusWidth2X
= 0x09, ///< Or X2
1120 SlotDataBusWidth4X
= 0x0A, ///< Or X4
1121 SlotDataBusWidth8X
= 0x0B, ///< Or X8
1122 SlotDataBusWidth12X
= 0x0C, ///< Or X12
1123 SlotDataBusWidth16X
= 0x0D, ///< Or X16
1124 SlotDataBusWidth32X
= 0x0E ///< Or X32
1125 } MISC_SLOT_DATA_BUS_WIDTH
;
1128 /// System Slots - Current Usage.
1131 SlotUsageOther
= 0x01,
1132 SlotUsageUnknown
= 0x02,
1133 SlotUsageAvailable
= 0x03,
1134 SlotUsageInUse
= 0x04
1138 /// System Slots - Slot Length.
1141 SlotLengthOther
= 0x01,
1142 SlotLengthUnknown
= 0x02,
1143 SlotLengthShort
= 0x03,
1144 SlotLengthLong
= 0x04
1148 /// System Slots - Slot Characteristics 1.
1151 UINT8 CharacteristicsUnknown
:1;
1152 UINT8 Provides50Volts
:1;
1153 UINT8 Provides33Volts
:1;
1154 UINT8 SharedSlot
:1;
1155 UINT8 PcCard16Supported
:1;
1156 UINT8 CardBusSupported
:1;
1157 UINT8 ZoomVideoSupported
:1;
1158 UINT8 ModemRingResumeSupported
:1;
1159 } MISC_SLOT_CHARACTERISTICS1
;
1161 /// System Slots - Slot Characteristics 2.
1164 UINT8 PmeSignalSupported
:1;
1165 UINT8 HotPlugDevicesSupported
:1;
1166 UINT8 SmbusSignalSupported
:1;
1167 UINT8 Reserved
:5; ///< Set to 0.
1168 } MISC_SLOT_CHARACTERISTICS2
;
1171 /// System Slots (Type 9)
1173 /// The information in this structure defines the attributes of a system slot.
1174 /// One structure is provided for each slot in the system.
1178 SMBIOS_STRUCTURE Hdr
;
1179 SMBIOS_TABLE_STRING SlotDesignation
;
1180 UINT8 SlotType
; ///< The enumeration value from MISC_SLOT_TYPE.
1181 UINT8 SlotDataBusWidth
; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1182 UINT8 CurrentUsage
; ///< The enumeration value from MISC_SLOT_USAGE.
1183 UINT8 SlotLength
; ///< The enumeration value from MISC_SLOT_LENGTH.
1185 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1186 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1188 // Add for smbios 2.6
1190 UINT16 SegmentGroupNum
;
1193 } SMBIOS_TABLE_TYPE9
;
1196 /// On Board Devices Information - Device Types.
1199 OnBoardDeviceTypeOther
= 0x01,
1200 OnBoardDeviceTypeUnknown
= 0x02,
1201 OnBoardDeviceTypeVideo
= 0x03,
1202 OnBoardDeviceTypeScsiController
= 0x04,
1203 OnBoardDeviceTypeEthernet
= 0x05,
1204 OnBoardDeviceTypeTokenRing
= 0x06,
1205 OnBoardDeviceTypeSound
= 0x07,
1206 OnBoardDeviceTypePATAController
= 0x08,
1207 OnBoardDeviceTypeSATAController
= 0x09,
1208 OnBoardDeviceTypeSASController
= 0x0A
1209 } MISC_ONBOARD_DEVICE_TYPE
;
1212 /// Device Item Entry
1215 UINT8 DeviceType
; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1216 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1217 SMBIOS_TABLE_STRING DescriptionString
;
1221 /// On Board Devices Information (Type 10, obsolete).
1223 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1224 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1225 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1226 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1227 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1228 /// has some level of control over the enabling of the associated device for use by the system.
1231 SMBIOS_STRUCTURE Hdr
;
1232 DEVICE_STRUCT Device
[1];
1233 } SMBIOS_TABLE_TYPE10
;
1236 /// OEM Strings (Type 11).
1237 /// This structure contains free form strings defined by the OEM. Examples of this are:
1238 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1241 SMBIOS_STRUCTURE Hdr
;
1243 } SMBIOS_TABLE_TYPE11
;
1246 /// System Configuration Options (Type 12).
1248 /// This structure contains information required to configure the base board's Jumpers and Switches.
1251 SMBIOS_STRUCTURE Hdr
;
1253 } SMBIOS_TABLE_TYPE12
;
1257 /// BIOS Language Information (Type 13).
1259 /// The information in this structure defines the installable language attributes of the BIOS.
1262 SMBIOS_STRUCTURE Hdr
;
1263 UINT8 InstallableLanguages
;
1266 SMBIOS_TABLE_STRING CurrentLanguages
;
1267 } SMBIOS_TABLE_TYPE13
;
1270 /// Group Item Entry
1278 /// Group Associations (Type 14).
1280 /// The Group Associations structure is provided for OEMs who want to specify
1281 /// the arrangement or hierarchy of certain components (including other Group Associations)
1282 /// within the system.
1285 SMBIOS_STRUCTURE Hdr
;
1286 SMBIOS_TABLE_STRING GroupName
;
1287 GROUP_STRUCT Group
[1];
1288 } SMBIOS_TABLE_TYPE14
;
1291 /// System Event Log - Event Log Types.
1294 EventLogTypeReserved
= 0x00,
1295 EventLogTypeSingleBitECC
= 0x01,
1296 EventLogTypeMultiBitECC
= 0x02,
1297 EventLogTypeParityMemErr
= 0x03,
1298 EventLogTypeBusTimeOut
= 0x04,
1299 EventLogTypeIOChannelCheck
= 0x05,
1300 EventLogTypeSoftwareNMI
= 0x06,
1301 EventLogTypePOSTMemResize
= 0x07,
1302 EventLogTypePOSTErr
= 0x08,
1303 EventLogTypePCIParityErr
= 0x09,
1304 EventLogTypePCISystemErr
= 0x0A,
1305 EventLogTypeCPUFailure
= 0x0B,
1306 EventLogTypeEISATimeOut
= 0x0C,
1307 EventLogTypeMemLogDisabled
= 0x0D,
1308 EventLogTypeLoggingDisabled
= 0x0E,
1309 EventLogTypeSysLimitExce
= 0x10,
1310 EventLogTypeAsyncHWTimer
= 0x11,
1311 EventLogTypeSysConfigInfo
= 0x12,
1312 EventLogTypeHDInfo
= 0x13,
1313 EventLogTypeSysReconfig
= 0x14,
1314 EventLogTypeUncorrectCPUErr
= 0x15,
1315 EventLogTypeAreaResetAndClr
= 0x16,
1316 EventLogTypeSystemBoot
= 0x17,
1317 EventLogTypeUnused
= 0x18, ///< 0x18 - 0x7F
1318 EventLogTypeAvailForSys
= 0x80, ///< 0x80 - 0xFE
1319 EventLogTypeEndOfLog
= 0xFF
1320 } EVENT_LOG_TYPE_DATA
;
1323 /// System Event Log - Variable Data Format Types.
1326 EventLogVariableNone
= 0x00,
1327 EventLogVariableHandle
= 0x01,
1328 EventLogVariableMutilEvent
= 0x02,
1329 EventLogVariableMutilEventHandle
= 0x03,
1330 EventLogVariablePOSTResultBitmap
= 0x04,
1331 EventLogVariableSysManagementType
= 0x05,
1332 EventLogVariableMutliEventSysManagmentType
= 0x06,
1333 EventLogVariableUnused
= 0x07,
1334 EventLogVariableOEMAssigned
= 0x80
1335 } EVENT_LOG_VARIABLE_DATA
;
1338 /// Event Log Type Descriptors
1341 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1342 UINT8 DataFormatType
;
1346 /// System Event Log (Type 15).
1348 /// The presence of this structure within the SMBIOS data returned for a system indicates
1349 /// that the system supports an event log. An event log is a fixed-length area within a
1350 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1351 /// record, followed by one or more variable-length log records.
1354 SMBIOS_STRUCTURE Hdr
;
1355 UINT16 LogAreaLength
;
1356 UINT16 LogHeaderStartOffset
;
1357 UINT16 LogDataStartOffset
;
1360 UINT32 LogChangeToken
;
1361 UINT32 AccessMethodAddress
;
1362 UINT8 LogHeaderFormat
;
1363 UINT8 NumberOfSupportedLogTypeDescriptors
;
1364 UINT8 LengthOfLogTypeDescriptor
;
1365 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
1366 } SMBIOS_TABLE_TYPE15
;
1369 /// Physical Memory Array - Location.
1372 MemoryArrayLocationOther
= 0x01,
1373 MemoryArrayLocationUnknown
= 0x02,
1374 MemoryArrayLocationSystemBoard
= 0x03,
1375 MemoryArrayLocationIsaAddonCard
= 0x04,
1376 MemoryArrayLocationEisaAddonCard
= 0x05,
1377 MemoryArrayLocationPciAddonCard
= 0x06,
1378 MemoryArrayLocationMcaAddonCard
= 0x07,
1379 MemoryArrayLocationPcmciaAddonCard
= 0x08,
1380 MemoryArrayLocationProprietaryAddonCard
= 0x09,
1381 MemoryArrayLocationNuBus
= 0x0A,
1382 MemoryArrayLocationPc98C20AddonCard
= 0xA0,
1383 MemoryArrayLocationPc98C24AddonCard
= 0xA1,
1384 MemoryArrayLocationPc98EAddonCard
= 0xA2,
1385 MemoryArrayLocationPc98LocalBusAddonCard
= 0xA3
1386 } MEMORY_ARRAY_LOCATION
;
1389 /// Physical Memory Array - Use.
1392 MemoryArrayUseOther
= 0x01,
1393 MemoryArrayUseUnknown
= 0x02,
1394 MemoryArrayUseSystemMemory
= 0x03,
1395 MemoryArrayUseVideoMemory
= 0x04,
1396 MemoryArrayUseFlashMemory
= 0x05,
1397 MemoryArrayUseNonVolatileRam
= 0x06,
1398 MemoryArrayUseCacheMemory
= 0x07
1402 /// Physical Memory Array - Error Correction Types.
1405 MemoryErrorCorrectionOther
= 0x01,
1406 MemoryErrorCorrectionUnknown
= 0x02,
1407 MemoryErrorCorrectionNone
= 0x03,
1408 MemoryErrorCorrectionParity
= 0x04,
1409 MemoryErrorCorrectionSingleBitEcc
= 0x05,
1410 MemoryErrorCorrectionMultiBitEcc
= 0x06,
1411 MemoryErrorCorrectionCrc
= 0x07
1412 } MEMORY_ERROR_CORRECTION
;
1415 /// Physical Memory Array (Type 16).
1417 /// This structure describes a collection of memory devices that operate
1418 /// together to form a memory address space.
1421 SMBIOS_STRUCTURE Hdr
;
1422 UINT8 Location
; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1423 UINT8 Use
; ///< The enumeration value from MEMORY_ARRAY_USE.
1424 UINT8 MemoryErrorCorrection
; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1425 UINT32 MaximumCapacity
;
1426 UINT16 MemoryErrorInformationHandle
;
1427 UINT16 NumberOfMemoryDevices
;
1429 // Add for smbios 2.7
1431 UINT64 ExtendedMaximumCapacity
;
1432 } SMBIOS_TABLE_TYPE16
;
1435 /// Memory Device - Form Factor.
1438 MemoryFormFactorOther
= 0x01,
1439 MemoryFormFactorUnknown
= 0x02,
1440 MemoryFormFactorSimm
= 0x03,
1441 MemoryFormFactorSip
= 0x04,
1442 MemoryFormFactorChip
= 0x05,
1443 MemoryFormFactorDip
= 0x06,
1444 MemoryFormFactorZip
= 0x07,
1445 MemoryFormFactorProprietaryCard
= 0x08,
1446 MemoryFormFactorDimm
= 0x09,
1447 MemoryFormFactorTsop
= 0x0A,
1448 MemoryFormFactorRowOfChips
= 0x0B,
1449 MemoryFormFactorRimm
= 0x0C,
1450 MemoryFormFactorSodimm
= 0x0D,
1451 MemoryFormFactorSrimm
= 0x0E,
1452 MemoryFormFactorFbDimm
= 0x0F
1453 } MEMORY_FORM_FACTOR
;
1456 /// Memory Device - Type
1459 MemoryTypeOther
= 0x01,
1460 MemoryTypeUnknown
= 0x02,
1461 MemoryTypeDram
= 0x03,
1462 MemoryTypeEdram
= 0x04,
1463 MemoryTypeVram
= 0x05,
1464 MemoryTypeSram
= 0x06,
1465 MemoryTypeRam
= 0x07,
1466 MemoryTypeRom
= 0x08,
1467 MemoryTypeFlash
= 0x09,
1468 MemoryTypeEeprom
= 0x0A,
1469 MemoryTypeFeprom
= 0x0B,
1470 MemoryTypeEprom
= 0x0C,
1471 MemoryTypeCdram
= 0x0D,
1472 MemoryType3Dram
= 0x0E,
1473 MemoryTypeSdram
= 0x0F,
1474 MemoryTypeSgram
= 0x10,
1475 MemoryTypeRdram
= 0x11,
1476 MemoryTypeDdr
= 0x12,
1477 MemoryTypeDdr2
= 0x13,
1478 MemoryTypeDdr2FbDimm
= 0x14,
1479 MemoryTypeDdr3
= 0x18,
1480 MemoryTypeFbd2
= 0x19
1481 } MEMORY_DEVICE_TYPE
;
1487 UINT16 FastPaged
:1;
1488 UINT16 StaticColumn
:1;
1489 UINT16 PseudoStatic
:1;
1491 UINT16 Synchronous
:1;
1494 UINT16 WindowDram
:1;
1495 UINT16 CacheDram
:1;
1496 UINT16 Nonvolatile
:1;
1497 UINT16 Registered
:1;
1498 UINT16 Unbuffered
:1;
1500 } MEMORY_DEVICE_TYPE_DETAIL
;
1503 /// Memory Device (Type 17).
1505 /// This structure describes a single memory device that is part of
1506 /// a larger Physical Memory Array (Type 16).
1507 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1508 /// includes a Memory Device structure instance for each slot, whether or not the
1509 /// socket is currently populated.
1512 SMBIOS_STRUCTURE Hdr
;
1513 UINT16 MemoryArrayHandle
;
1514 UINT16 MemoryErrorInformationHandle
;
1518 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
1520 SMBIOS_TABLE_STRING DeviceLocator
;
1521 SMBIOS_TABLE_STRING BankLocator
;
1522 UINT8 MemoryType
; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1523 MEMORY_DEVICE_TYPE_DETAIL TypeDetail
;
1525 SMBIOS_TABLE_STRING Manufacturer
;
1526 SMBIOS_TABLE_STRING SerialNumber
;
1527 SMBIOS_TABLE_STRING AssetTag
;
1528 SMBIOS_TABLE_STRING PartNumber
;
1530 // Add for smbios 2.6
1534 // Add for smbios 2.7
1536 UINT32 ExtendedSize
;
1537 UINT16 ConfiguredMemoryClockSpeed
;
1539 // Add for smbios 2.8.0
1541 UINT16 MinimumVoltage
;
1542 UINT16 MaximumVoltage
;
1543 UINT16 ConfiguredVoltage
;
1544 } SMBIOS_TABLE_TYPE17
;
1547 /// 32-bit Memory Error Information - Error Type.
1550 MemoryErrorOther
= 0x01,
1551 MemoryErrorUnknown
= 0x02,
1552 MemoryErrorOk
= 0x03,
1553 MemoryErrorBadRead
= 0x04,
1554 MemoryErrorParity
= 0x05,
1555 MemoryErrorSigleBit
= 0x06,
1556 MemoryErrorDoubleBit
= 0x07,
1557 MemoryErrorMultiBit
= 0x08,
1558 MemoryErrorNibble
= 0x09,
1559 MemoryErrorChecksum
= 0x0A,
1560 MemoryErrorCrc
= 0x0B,
1561 MemoryErrorCorrectSingleBit
= 0x0C,
1562 MemoryErrorCorrected
= 0x0D,
1563 MemoryErrorUnCorrectable
= 0x0E
1564 } MEMORY_ERROR_TYPE
;
1567 /// 32-bit Memory Error Information - Error Granularity.
1570 MemoryGranularityOther
= 0x01,
1571 MemoryGranularityOtherUnknown
= 0x02,
1572 MemoryGranularityDeviceLevel
= 0x03,
1573 MemoryGranularityMemPartitionLevel
= 0x04
1574 } MEMORY_ERROR_GRANULARITY
;
1577 /// 32-bit Memory Error Information - Error Operation.
1580 MemoryErrorOperationOther
= 0x01,
1581 MemoryErrorOperationUnknown
= 0x02,
1582 MemoryErrorOperationRead
= 0x03,
1583 MemoryErrorOperationWrite
= 0x04,
1584 MemoryErrorOperationPartialWrite
= 0x05
1585 } MEMORY_ERROR_OPERATION
;
1588 /// 32-bit Memory Error Information (Type 18).
1590 /// This structure identifies the specifics of an error that might be detected
1591 /// within a Physical Memory Array.
1594 SMBIOS_STRUCTURE Hdr
;
1595 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1596 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1597 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1598 UINT32 VendorSyndrome
;
1599 UINT32 MemoryArrayErrorAddress
;
1600 UINT32 DeviceErrorAddress
;
1601 UINT32 ErrorResolution
;
1602 } SMBIOS_TABLE_TYPE18
;
1605 /// Memory Array Mapped Address (Type 19).
1607 /// This structure provides the address mapping for a Physical Memory Array.
1608 /// One structure is present for each contiguous address range described.
1611 SMBIOS_STRUCTURE Hdr
;
1612 UINT32 StartingAddress
;
1613 UINT32 EndingAddress
;
1614 UINT16 MemoryArrayHandle
;
1615 UINT8 PartitionWidth
;
1617 // Add for smbios 2.7
1619 UINT64 ExtendedStartingAddress
;
1620 UINT64 ExtendedEndingAddress
;
1621 } SMBIOS_TABLE_TYPE19
;
1624 /// Memory Device Mapped Address (Type 20).
1626 /// This structure maps memory address space usually to a device-level granularity.
1627 /// One structure is present for each contiguous address range described.
1630 SMBIOS_STRUCTURE Hdr
;
1631 UINT32 StartingAddress
;
1632 UINT32 EndingAddress
;
1633 UINT16 MemoryDeviceHandle
;
1634 UINT16 MemoryArrayMappedAddressHandle
;
1635 UINT8 PartitionRowPosition
;
1636 UINT8 InterleavePosition
;
1637 UINT8 InterleavedDataDepth
;
1639 // Add for smbios 2.7
1641 UINT64 ExtendedStartingAddress
;
1642 UINT64 ExtendedEndingAddress
;
1643 } SMBIOS_TABLE_TYPE20
;
1646 /// Built-in Pointing Device - Type
1649 PointingDeviceTypeOther
= 0x01,
1650 PointingDeviceTypeUnknown
= 0x02,
1651 PointingDeviceTypeMouse
= 0x03,
1652 PointingDeviceTypeTrackBall
= 0x04,
1653 PointingDeviceTypeTrackPoint
= 0x05,
1654 PointingDeviceTypeGlidePoint
= 0x06,
1655 PointingDeviceTouchPad
= 0x07,
1656 PointingDeviceTouchScreen
= 0x08,
1657 PointingDeviceOpticalSensor
= 0x09
1658 } BUILTIN_POINTING_DEVICE_TYPE
;
1661 /// Built-in Pointing Device - Interface.
1664 PointingDeviceInterfaceOther
= 0x01,
1665 PointingDeviceInterfaceUnknown
= 0x02,
1666 PointingDeviceInterfaceSerial
= 0x03,
1667 PointingDeviceInterfacePs2
= 0x04,
1668 PointingDeviceInterfaceInfrared
= 0x05,
1669 PointingDeviceInterfaceHpHil
= 0x06,
1670 PointingDeviceInterfaceBusMouse
= 0x07,
1671 PointingDeviceInterfaceADB
= 0x08,
1672 PointingDeviceInterfaceBusMouseDB9
= 0xA0,
1673 PointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
1674 PointingDeviceInterfaceUsb
= 0xA2
1675 } BUILTIN_POINTING_DEVICE_INTERFACE
;
1678 /// Built-in Pointing Device (Type 21).
1680 /// This structure describes the attributes of the built-in pointing device for the
1681 /// system. The presence of this structure does not imply that the built-in
1682 /// pointing device is active for the system's use!
1685 SMBIOS_STRUCTURE Hdr
;
1686 UINT8 Type
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
1687 UINT8 Interface
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
1688 UINT8 NumberOfButtons
;
1689 } SMBIOS_TABLE_TYPE21
;
1692 /// Portable Battery - Device Chemistry
1695 PortableBatteryDeviceChemistryOther
= 0x01,
1696 PortableBatteryDeviceChemistryUnknown
= 0x02,
1697 PortableBatteryDeviceChemistryLeadAcid
= 0x03,
1698 PortableBatteryDeviceChemistryNickelCadmium
= 0x04,
1699 PortableBatteryDeviceChemistryNickelMetalHydride
= 0x05,
1700 PortableBatteryDeviceChemistryLithiumIon
= 0x06,
1701 PortableBatteryDeviceChemistryZincAir
= 0x07,
1702 PortableBatteryDeviceChemistryLithiumPolymer
= 0x08
1703 } PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
1706 /// Portable Battery (Type 22).
1708 /// This structure describes the attributes of the portable battery(s) for the system.
1709 /// The structure contains the static attributes for the group. Each structure describes
1710 /// a single battery pack's attributes.
1713 SMBIOS_STRUCTURE Hdr
;
1714 SMBIOS_TABLE_STRING Location
;
1715 SMBIOS_TABLE_STRING Manufacturer
;
1716 SMBIOS_TABLE_STRING ManufactureDate
;
1717 SMBIOS_TABLE_STRING SerialNumber
;
1718 SMBIOS_TABLE_STRING DeviceName
;
1719 UINT8 DeviceChemistry
; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
1720 UINT16 DeviceCapacity
;
1721 UINT16 DesignVoltage
;
1722 SMBIOS_TABLE_STRING SBDSVersionNumber
;
1723 UINT8 MaximumErrorInBatteryData
;
1724 UINT16 SBDSSerialNumber
;
1725 UINT16 SBDSManufactureDate
;
1726 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
1727 UINT8 DesignCapacityMultiplier
;
1729 } SMBIOS_TABLE_TYPE22
;
1732 /// System Reset (Type 23)
1734 /// This structure describes whether Automatic System Reset functions enabled (Status).
1735 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
1736 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
1737 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
1738 /// the system will re-boot according to the Boot Option at Limit.
1741 SMBIOS_STRUCTURE Hdr
;
1745 UINT16 TimerInterval
;
1747 } SMBIOS_TABLE_TYPE23
;
1750 /// Hardware Security (Type 24).
1752 /// This structure describes the system-wide hardware security settings.
1755 SMBIOS_STRUCTURE Hdr
;
1756 UINT8 HardwareSecuritySettings
;
1757 } SMBIOS_TABLE_TYPE24
;
1760 /// System Power Controls (Type 25).
1762 /// This structure describes the attributes for controlling the main power supply to the system.
1763 /// Software that interprets this structure uses the month, day, hour, minute, and second values
1764 /// to determine the number of seconds until the next power-on of the system. The presence of
1765 /// this structure implies that a timed power-on facility is available for the system.
1768 SMBIOS_STRUCTURE Hdr
;
1769 UINT8 NextScheduledPowerOnMonth
;
1770 UINT8 NextScheduledPowerOnDayOfMonth
;
1771 UINT8 NextScheduledPowerOnHour
;
1772 UINT8 NextScheduledPowerOnMinute
;
1773 UINT8 NextScheduledPowerOnSecond
;
1774 } SMBIOS_TABLE_TYPE25
;
1777 /// Voltage Probe - Location and Status.
1780 UINT8 VoltageProbeSite
:5;
1781 UINT8 VoltageProbeStatus
:3;
1782 } MISC_VOLTAGE_PROBE_LOCATION
;
1785 /// Voltage Probe (Type 26)
1787 /// This describes the attributes for a voltage probe in the system.
1788 /// Each structure describes a single voltage probe.
1791 SMBIOS_STRUCTURE Hdr
;
1792 SMBIOS_TABLE_STRING Description
;
1793 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
1794 UINT16 MaximumValue
;
1795 UINT16 MinimumValue
;
1800 UINT16 NominalValue
;
1801 } SMBIOS_TABLE_TYPE26
;
1804 /// Cooling Device - Device Type and Status.
1807 UINT8 CoolingDevice
:5;
1808 UINT8 CoolingDeviceStatus
:3;
1809 } MISC_COOLING_DEVICE_TYPE
;
1812 /// Cooling Device (Type 27)
1814 /// This structure describes the attributes for a cooling device in the system.
1815 /// Each structure describes a single cooling device.
1818 SMBIOS_STRUCTURE Hdr
;
1819 UINT16 TemperatureProbeHandle
;
1820 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
1821 UINT8 CoolingUnitGroup
;
1823 UINT16 NominalSpeed
;
1825 // Add for smbios 2.7
1827 SMBIOS_TABLE_STRING Description
;
1828 } SMBIOS_TABLE_TYPE27
;
1831 /// Temperature Probe - Location and Status.
1834 UINT8 TemperatureProbeSite
:5;
1835 UINT8 TemperatureProbeStatus
:3;
1836 } MISC_TEMPERATURE_PROBE_LOCATION
;
1839 /// Temperature Probe (Type 28).
1841 /// This structure describes the attributes for a temperature probe in the system.
1842 /// Each structure describes a single temperature probe.
1845 SMBIOS_STRUCTURE Hdr
;
1846 SMBIOS_TABLE_STRING Description
;
1847 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
1848 UINT16 MaximumValue
;
1849 UINT16 MinimumValue
;
1854 UINT16 NominalValue
;
1855 } SMBIOS_TABLE_TYPE28
;
1858 /// Electrical Current Probe - Location and Status.
1861 UINT8 ElectricalCurrentProbeSite
:5;
1862 UINT8 ElectricalCurrentProbeStatus
:3;
1863 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
1866 /// Electrical Current Probe (Type 29).
1868 /// This structure describes the attributes for an electrical current probe in the system.
1869 /// Each structure describes a single electrical current probe.
1872 SMBIOS_STRUCTURE Hdr
;
1873 SMBIOS_TABLE_STRING Description
;
1874 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
1875 UINT16 MaximumValue
;
1876 UINT16 MinimumValue
;
1881 UINT16 NominalValue
;
1882 } SMBIOS_TABLE_TYPE29
;
1885 /// Out-of-Band Remote Access (Type 30).
1887 /// This structure describes the attributes and policy settings of a hardware facility
1888 /// that may be used to gain remote access to a hardware system when the operating system
1889 /// is not available due to power-down status, hardware failures, or boot failures.
1892 SMBIOS_STRUCTURE Hdr
;
1893 SMBIOS_TABLE_STRING ManufacturerName
;
1895 } SMBIOS_TABLE_TYPE30
;
1898 /// Boot Integrity Services (BIS) Entry Point (Type 31).
1900 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
1903 SMBIOS_STRUCTURE Hdr
;
1911 } SMBIOS_TABLE_TYPE31
;
1914 /// System Boot Information - System Boot Status.
1917 BootInformationStatusNoError
= 0x00,
1918 BootInformationStatusNoBootableMedia
= 0x01,
1919 BootInformationStatusNormalOSFailedLoading
= 0x02,
1920 BootInformationStatusFirmwareDetectedFailure
= 0x03,
1921 BootInformationStatusOSDetectedFailure
= 0x04,
1922 BootInformationStatusUserRequestedBoot
= 0x05,
1923 BootInformationStatusSystemSecurityViolation
= 0x06,
1924 BootInformationStatusPreviousRequestedImage
= 0x07,
1925 BootInformationStatusWatchdogTimerExpired
= 0x08,
1926 BootInformationStatusStartReserved
= 0x09,
1927 BootInformationStatusStartOemSpecific
= 0x80,
1928 BootInformationStatusStartProductSpecific
= 0xC0
1929 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
1932 /// System Boot Information (Type 32).
1934 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
1935 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
1936 /// application via this structure. When used in the PXE environment, for example,
1937 /// this code identifies the reason the PXE was initiated and can be used by boot-image
1938 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
1939 /// could choose to automatically download a hardware-diagnostic image to a client whose
1940 /// reason code indicated either a firmware- or operating system-detected hardware failure.
1943 SMBIOS_STRUCTURE Hdr
;
1945 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
1946 } SMBIOS_TABLE_TYPE32
;
1949 /// 64-bit Memory Error Information (Type 33).
1951 /// This structure describes an error within a Physical Memory Array,
1952 /// when the error address is above 4G (0xFFFFFFFF).
1955 SMBIOS_STRUCTURE Hdr
;
1956 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1957 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1958 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1959 UINT32 VendorSyndrome
;
1960 UINT64 MemoryArrayErrorAddress
;
1961 UINT64 DeviceErrorAddress
;
1962 UINT32 ErrorResolution
;
1963 } SMBIOS_TABLE_TYPE33
;
1966 /// Management Device - Type.
1969 ManagementDeviceTypeOther
= 0x01,
1970 ManagementDeviceTypeUnknown
= 0x02,
1971 ManagementDeviceTypeLm75
= 0x03,
1972 ManagementDeviceTypeLm78
= 0x04,
1973 ManagementDeviceTypeLm79
= 0x05,
1974 ManagementDeviceTypeLm80
= 0x06,
1975 ManagementDeviceTypeLm81
= 0x07,
1976 ManagementDeviceTypeAdm9240
= 0x08,
1977 ManagementDeviceTypeDs1780
= 0x09,
1978 ManagementDeviceTypeMaxim1617
= 0x0A,
1979 ManagementDeviceTypeGl518Sm
= 0x0B,
1980 ManagementDeviceTypeW83781D
= 0x0C,
1981 ManagementDeviceTypeHt82H791
= 0x0D
1982 } MISC_MANAGEMENT_DEVICE_TYPE
;
1985 /// Management Device - Address Type.
1988 ManagementDeviceAddressTypeOther
= 0x01,
1989 ManagementDeviceAddressTypeUnknown
= 0x02,
1990 ManagementDeviceAddressTypeIOPort
= 0x03,
1991 ManagementDeviceAddressTypeMemory
= 0x04,
1992 ManagementDeviceAddressTypeSmbus
= 0x05
1993 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
1996 /// Management Device (Type 34).
1998 /// The information in this structure defines the attributes of a Management Device.
1999 /// A Management Device might control one or more fans or voltage, current, or temperature
2000 /// probes as defined by one or more Management Device Component structures.
2003 SMBIOS_STRUCTURE Hdr
;
2004 SMBIOS_TABLE_STRING Description
;
2005 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
2007 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
2008 } SMBIOS_TABLE_TYPE34
;
2011 /// Management Device Component (Type 35)
2013 /// This structure associates a cooling device or environmental probe with structures
2014 /// that define the controlling hardware device and (optionally) the component's thresholds.
2017 SMBIOS_STRUCTURE Hdr
;
2018 SMBIOS_TABLE_STRING Description
;
2019 UINT16 ManagementDeviceHandle
;
2020 UINT16 ComponentHandle
;
2021 UINT16 ThresholdHandle
;
2022 } SMBIOS_TABLE_TYPE35
;
2025 /// Management Device Threshold Data (Type 36).
2027 /// The information in this structure defines threshold information for
2028 /// a component (probe or cooling-unit) contained within a Management Device.
2031 SMBIOS_STRUCTURE Hdr
;
2032 UINT16 LowerThresholdNonCritical
;
2033 UINT16 UpperThresholdNonCritical
;
2034 UINT16 LowerThresholdCritical
;
2035 UINT16 UpperThresholdCritical
;
2036 UINT16 LowerThresholdNonRecoverable
;
2037 UINT16 UpperThresholdNonRecoverable
;
2038 } SMBIOS_TABLE_TYPE36
;
2041 /// Memory Channel Entry.
2045 UINT16 DeviceHandle
;
2049 /// Memory Channel - Channel Type.
2052 MemoryChannelTypeOther
= 0x01,
2053 MemoryChannelTypeUnknown
= 0x02,
2054 MemoryChannelTypeRambus
= 0x03,
2055 MemoryChannelTypeSyncLink
= 0x04
2056 } MEMORY_CHANNEL_TYPE
;
2059 /// Memory Channel (Type 37)
2061 /// The information in this structure provides the correlation between a Memory Channel
2062 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
2063 /// The sum of all device loads cannot exceed the channel's defined maximum.
2066 SMBIOS_STRUCTURE Hdr
;
2068 UINT8 MaximumChannelLoad
;
2069 UINT8 MemoryDeviceCount
;
2070 MEMORY_DEVICE MemoryDevice
[1];
2071 } SMBIOS_TABLE_TYPE37
;
2074 /// IPMI Device Information - BMC Interface Type
2077 IPMIDeviceInfoInterfaceTypeUnknown
= 0x00,
2078 IPMIDeviceInfoInterfaceTypeKCS
= 0x01, ///< The Keyboard Controller Style.
2079 IPMIDeviceInfoInterfaceTypeSMIC
= 0x02, ///< The Server Management Interface Chip.
2080 IPMIDeviceInfoInterfaceTypeBT
= 0x03, ///< The Block Transfer
2081 IPMIDeviceInfoInterfaceTypeReserved
= 0x04
2082 } BMC_INTERFACE_TYPE
;
2085 /// IPMI Device Information (Type 38).
2087 /// The information in this structure defines the attributes of an
2088 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
2090 /// The Type 42 structure can also be used to describe a physical management controller
2091 /// host interface and one or more protocols that share that interface. If IPMI is not
2092 /// shared with other protocols, either the Type 38 or Type 42 structures can be used.
2093 /// Providing Type 38 is recommended for backward compatibility.
2096 SMBIOS_STRUCTURE Hdr
;
2097 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
2098 UINT8 IPMISpecificationRevision
;
2099 UINT8 I2CSlaveAddress
;
2100 UINT8 NVStorageDeviceAddress
;
2102 UINT8 BaseAddressModifier_InterruptInfo
;
2103 UINT8 InterruptNumber
;
2104 } SMBIOS_TABLE_TYPE38
;
2107 /// System Power Supply - Power Supply Characteristics.
2110 UINT16 PowerSupplyHotReplaceable
:1;
2111 UINT16 PowerSupplyPresent
:1;
2112 UINT16 PowerSupplyUnplugged
:1;
2113 UINT16 InputVoltageRangeSwitch
:4;
2114 UINT16 PowerSupplyStatus
:3;
2115 UINT16 PowerSupplyType
:4;
2117 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2120 /// System Power Supply (Type 39).
2122 /// This structure identifies attributes of a system power supply. One instance
2123 /// of this record is present for each possible power supply in a system.
2126 SMBIOS_STRUCTURE Hdr
;
2127 UINT8 PowerUnitGroup
;
2128 SMBIOS_TABLE_STRING Location
;
2129 SMBIOS_TABLE_STRING DeviceName
;
2130 SMBIOS_TABLE_STRING Manufacturer
;
2131 SMBIOS_TABLE_STRING SerialNumber
;
2132 SMBIOS_TABLE_STRING AssetTagNumber
;
2133 SMBIOS_TABLE_STRING ModelPartNumber
;
2134 SMBIOS_TABLE_STRING RevisionLevel
;
2135 UINT16 MaxPowerCapacity
;
2136 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2137 UINT16 InputVoltageProbeHandle
;
2138 UINT16 CoolingDeviceHandle
;
2139 UINT16 InputCurrentProbeHandle
;
2140 } SMBIOS_TABLE_TYPE39
;
2143 /// Additional Information Entry Format.
2147 UINT16 ReferencedHandle
;
2148 UINT8 ReferencedOffset
;
2149 SMBIOS_TABLE_STRING EntryString
;
2151 }ADDITIONAL_INFORMATION_ENTRY
;
2154 /// Additional Information (Type 40).
2156 /// This structure is intended to provide additional information for handling unspecified
2157 /// enumerated values and interim field updates in another structure.
2160 SMBIOS_STRUCTURE Hdr
;
2161 UINT8 NumberOfAdditionalInformationEntries
;
2162 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2163 } SMBIOS_TABLE_TYPE40
;
2166 /// Onboard Devices Extended Information - Onboard Device Types.
2169 OnBoardDeviceExtendedTypeOther
= 0x01,
2170 OnBoardDeviceExtendedTypeUnknown
= 0x02,
2171 OnBoardDeviceExtendedTypeVideo
= 0x03,
2172 OnBoardDeviceExtendedTypeScsiController
= 0x04,
2173 OnBoardDeviceExtendedTypeEthernet
= 0x05,
2174 OnBoardDeviceExtendedTypeTokenRing
= 0x06,
2175 OnBoardDeviceExtendedTypeSound
= 0x07,
2176 OnBoardDeviceExtendedTypePATAController
= 0x08,
2177 OnBoardDeviceExtendedTypeSATAController
= 0x09,
2178 OnBoardDeviceExtendedTypeSASController
= 0x0A
2179 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE
;
2182 /// Onboard Devices Extended Information (Type 41).
2184 /// The information in this structure defines the attributes of devices that
2185 /// are onboard (soldered onto) a system element, usually the baseboard.
2186 /// In general, an entry in this table implies that the BIOS has some level of
2187 /// control over the enabling of the associated device for use by the system.
2190 SMBIOS_STRUCTURE Hdr
;
2191 SMBIOS_TABLE_STRING ReferenceDesignation
;
2192 UINT8 DeviceType
; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2193 UINT8 DeviceTypeInstance
;
2194 UINT16 SegmentGroupNum
;
2197 } SMBIOS_TABLE_TYPE41
;
2200 /// Management Controller Host Interface (Type 42).
2202 /// The information in this structure defines the attributes of a Management
2203 /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.
2205 /// Type 42 should be used for management controller host interfaces that use protocols
2206 /// other than IPMI or that use multiple protocols on a single host interface type.
2208 /// This structure should also be provided if IPMI is shared with other protocols
2209 /// over the same interface hardware. If IPMI is not shared with other protocols,
2210 /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is
2211 /// recommended for backward compatibility. The structures are not required to
2212 /// be mutually exclusive. Type 38 and Type 42 structures may be implemented
2213 /// simultaneously to provide backward compatibility with IPMI applications or drivers
2214 /// that do not yet recognize the Type 42 structure.
2217 SMBIOS_STRUCTURE Hdr
;
2218 UINT8 InterfaceType
;
2219 UINT8 MCHostInterfaceData
[1]; ///< This field has a minimum of four bytes
2220 } SMBIOS_TABLE_TYPE42
;
2223 /// Inactive (Type 126)
2226 SMBIOS_STRUCTURE Hdr
;
2227 } SMBIOS_TABLE_TYPE126
;
2230 /// End-of-Table (Type 127)
2233 SMBIOS_STRUCTURE Hdr
;
2234 } SMBIOS_TABLE_TYPE127
;
2237 /// Union of all the possible SMBIOS record types.
2240 SMBIOS_STRUCTURE
*Hdr
;
2241 SMBIOS_TABLE_TYPE0
*Type0
;
2242 SMBIOS_TABLE_TYPE1
*Type1
;
2243 SMBIOS_TABLE_TYPE2
*Type2
;
2244 SMBIOS_TABLE_TYPE3
*Type3
;
2245 SMBIOS_TABLE_TYPE4
*Type4
;
2246 SMBIOS_TABLE_TYPE5
*Type5
;
2247 SMBIOS_TABLE_TYPE6
*Type6
;
2248 SMBIOS_TABLE_TYPE7
*Type7
;
2249 SMBIOS_TABLE_TYPE8
*Type8
;
2250 SMBIOS_TABLE_TYPE9
*Type9
;
2251 SMBIOS_TABLE_TYPE10
*Type10
;
2252 SMBIOS_TABLE_TYPE11
*Type11
;
2253 SMBIOS_TABLE_TYPE12
*Type12
;
2254 SMBIOS_TABLE_TYPE13
*Type13
;
2255 SMBIOS_TABLE_TYPE14
*Type14
;
2256 SMBIOS_TABLE_TYPE15
*Type15
;
2257 SMBIOS_TABLE_TYPE16
*Type16
;
2258 SMBIOS_TABLE_TYPE17
*Type17
;
2259 SMBIOS_TABLE_TYPE18
*Type18
;
2260 SMBIOS_TABLE_TYPE19
*Type19
;
2261 SMBIOS_TABLE_TYPE20
*Type20
;
2262 SMBIOS_TABLE_TYPE21
*Type21
;
2263 SMBIOS_TABLE_TYPE22
*Type22
;
2264 SMBIOS_TABLE_TYPE23
*Type23
;
2265 SMBIOS_TABLE_TYPE24
*Type24
;
2266 SMBIOS_TABLE_TYPE25
*Type25
;
2267 SMBIOS_TABLE_TYPE26
*Type26
;
2268 SMBIOS_TABLE_TYPE27
*Type27
;
2269 SMBIOS_TABLE_TYPE28
*Type28
;
2270 SMBIOS_TABLE_TYPE29
*Type29
;
2271 SMBIOS_TABLE_TYPE30
*Type30
;
2272 SMBIOS_TABLE_TYPE31
*Type31
;
2273 SMBIOS_TABLE_TYPE32
*Type32
;
2274 SMBIOS_TABLE_TYPE33
*Type33
;
2275 SMBIOS_TABLE_TYPE34
*Type34
;
2276 SMBIOS_TABLE_TYPE35
*Type35
;
2277 SMBIOS_TABLE_TYPE36
*Type36
;
2278 SMBIOS_TABLE_TYPE37
*Type37
;
2279 SMBIOS_TABLE_TYPE38
*Type38
;
2280 SMBIOS_TABLE_TYPE39
*Type39
;
2281 SMBIOS_TABLE_TYPE40
*Type40
;
2282 SMBIOS_TABLE_TYPE41
*Type41
;
2283 SMBIOS_TABLE_TYPE42
*Type42
;
2284 SMBIOS_TABLE_TYPE126
*Type126
;
2285 SMBIOS_TABLE_TYPE127
*Type127
;
2287 } SMBIOS_STRUCTURE_POINTER
;