2 Industry Standard Definitions of SMBIOS Table Specification v2.6.1
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.
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.6, chapter 3.1.3.
27 /// Each text string is limited to 64 significant characters due to system MIF limitations.
29 #define SMBIOS_STRING_MAX_LENGTH 64
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.
36 #define SMBIOS_TYPE_INACTIVE 0x007E
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
42 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
45 /// Smbios Table Entry Point Structure.
49 UINT8 AnchorString
[4];
50 UINT8 EntryPointStructureChecksum
;
51 UINT8 EntryPointLength
;
54 UINT16 MaxStructureSize
;
55 UINT8 EntryPointRevision
;
56 UINT8 FormattedArea
[5];
57 UINT8 IntermediateAnchorString
[5];
58 UINT8 IntermediateChecksum
;
61 UINT16 NumberOfSmbiosStructures
;
62 UINT8 SmbiosBcdRevision
;
63 } SMBIOS_TABLE_ENTRY_POINT
;
66 /// The Smbios structure header.
75 /// String Number for a Null terminated string, 00h stands for no string available.
77 typedef UINT8 SMBIOS_TABLE_STRING
;
80 /// BIOS Characteristics
81 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
84 UINT32 Reserved
:2; ///< Bits 0-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;
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
;
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.
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
;
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.
141 UINT8 BiosBootSpecIsSupported
:1;
142 UINT8 FunctionKeyNetworkBootIsSupported
:1;
143 UINT8 TargetContentDistributionEnabled
:1;
144 UINT8 ExtensionByte2Reserved
:1;
145 } MBCE_SYSTEM_RESERVED
;
148 /// BIOS Characteristics Extension Bytes.
151 MBCE_BIOS_RESERVED BiosReserved
;
152 MBCE_SYSTEM_RESERVED SystemReserved
;
154 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
157 /// BIOS Information (Type 0).
160 SMBIOS_STRUCTURE Hdr
;
161 SMBIOS_TABLE_STRING Vendor
;
162 SMBIOS_TABLE_STRING BiosVersion
;
164 SMBIOS_TABLE_STRING BiosReleaseDate
;
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
;
175 /// System Wake-up Type.
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
;
190 /// System Information (Type 1).
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.
198 SMBIOS_STRUCTURE Hdr
;
199 SMBIOS_TABLE_STRING Manufacturer
;
200 SMBIOS_TABLE_STRING ProductName
;
201 SMBIOS_TABLE_STRING Version
;
202 SMBIOS_TABLE_STRING SerialNumber
;
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
;
210 /// Base Board - Feature Flags.
213 UINT8 Motherboard
:1;
214 UINT8 RequiresDaughterCard
:1;
216 UINT8 Replaceable
:1;
217 UINT8 HotSwappable
:1;
219 } BASE_BOARD_FEATURE_FLAGS
;
222 /// Base Board - Board Type.
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
241 /// Base Board (or Module) Information (Type 2).
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.
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
;
262 /// System Enclosure or Chassis Types
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
297 /// System Enclosure or Chassis States .
300 ChassisStateOther
= 0x01,
301 ChassisStateUnknown
= 0x02,
302 ChassisStateSafe
= 0x03,
303 ChassisStateWarning
= 0x04,
304 ChassisStateCritical
= 0x05,
305 ChassisStateNonRecoverable
= 0x06
306 } MISC_CHASSIS_STATE
;
309 /// System Enclosure or Chassis Security Status.
312 ChassisSecurityStatusOther
= 0x01,
313 ChassisSecurityStatusUnknown
= 0x02,
314 ChassisSecurityStatusNone
= 0x03,
315 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
316 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
317 } MISC_CHASSIS_SECURITY_STATE
;
320 /// Contained Element record
323 UINT8 ContainedElementType
;
324 UINT8 ContainedElementMinimum
;
325 UINT8 ContainedElementMaximum
;
330 /// System Enclosure or Chassis (Type 3).
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.
339 SMBIOS_STRUCTURE Hdr
;
340 SMBIOS_TABLE_STRING Manufacturer
;
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.
351 UINT8 NumberofPowerCords
;
352 UINT8 ContainedElementCount
;
353 UINT8 ContainedElementRecordLength
;
354 CONTAINED_ELEMENT ContainedElements
[1];
355 } SMBIOS_TABLE_TYPE3
;
358 /// Processor Information - Processor Type.
361 ProcessorOther
= 0x01,
362 ProcessorUnknown
= 0x02,
363 CentralProcessor
= 0x03,
364 MathProcessor
= 0x04,
366 VideoProcessor
= 0x06
367 } PROCESSOR_TYPE_DATA
;
370 /// Processor Information - Processor Family.
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
;
541 /// Processor Information - Voltage.
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;
553 /// Processor Information - Processor Upgrade.
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
584 /// Processor ID Field Description
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
;
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
;
632 PROCESSOR_SIGNATURE Signature
;
633 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
637 /// Processor Information (Type 4).
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.
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
;
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
;
666 // Add for smbios 2.5
669 UINT8 EnabledCoreCount
;
671 UINT16 ProcessorCharacteristics
;
673 // Add for smbios 2.6
675 UINT16 ProcessorFamily2
;
676 } SMBIOS_TABLE_TYPE4
;
679 /// Memory Controller Error Detecting Method.
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
;
693 /// Memory Controller Error Correcting Capability.
699 UINT8 SingleBitErrorCorrect
:1;
700 UINT8 DoubleBitErrorCorrect
:1;
701 UINT8 ErrorScrubbing
:1;
703 } MEMORY_ERROR_CORRECT_CAPABILITY
;
706 /// Memory Controller Information - Interleave Support.
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
;
719 /// Memory Controller Information - Memory Speeds.
731 /// Memory Controller Information (Type 5, Obsolete).
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
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.
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
;
757 /// Memory Module Information - Memory Types
763 UINT16 FastPageMode
:1;
772 } MEMORY_CURRENT_TYPE
;
775 /// Memory Module Information - Memory Size.
778 UINT8 InstalledOrEnabledSize
:7; ///< Size (n), where 2**n is the size in MB.
779 UINT8 SingleOrDoubleBank
:1;
780 } MEMORY_INSTALLED_ENABLED_SIZE
;
783 /// Memory Module Information (Type 6, Obsolete)
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.
794 SMBIOS_STRUCTURE Hdr
;
795 SMBIOS_TABLE_STRING SocketDesignation
;
796 UINT8 BankConnections
;
798 MEMORY_CURRENT_TYPE CurrentMemoryType
;
799 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
800 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
802 } SMBIOS_TABLE_TYPE6
;
805 /// Cache Information - SRAM Type.
812 UINT16 PipelineBurst
:1;
813 UINT16 Asynchronous
:1;
814 UINT16 Synchronous
:1;
816 } CACHE_SRAM_TYPE_DATA
;
819 /// Cache Information - Error Correction Type.
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
;
831 /// Cache Information - System Cache Type.
834 CacheTypeOther
= 0x01,
835 CacheTypeUnknown
= 0x02,
836 CacheTypeInstruction
= 0x03,
837 CacheTypeData
= 0x04,
838 CacheTypeUnified
= 0x05
842 /// Cache Information - Associativity.
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
;
861 /// Cache Information (Type 7).
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.
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
;
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
;
883 /// Port Connector Information - Connector Types.
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
;
929 /// Port Connector Information - Port Types
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,
944 PortTypeJoyStick
= 0x0C,
945 PortTypeKeyboard
= 0x0D,
946 PortTypeMouse
= 0x0E,
947 PortTypeSsaScsi
= 0x0F,
949 PortTypeFireWire
= 0x11,
950 PortTypePcmciaTypeI
= 0x12,
951 PortTypePcmciaTypeII
= 0x13,
952 PortTypePcmciaTypeIII
= 0x14,
953 PortTypeCardBus
= 0x15,
954 PortTypeAccessBusPort
= 0x16,
955 PortTypeScsiII
= 0x17,
956 PortTypeScsiWide
= 0x18,
958 PortTypePC98Hireso
= 0x1A,
959 PortTypePCH98
= 0x1B,
960 PortTypeVideoPort
= 0x1C,
961 PortTypeAudioPort
= 0x1D,
962 PortTypeModemPort
= 0x1E,
963 PortTypeNetworkPort
= 0x1F,
964 PortType8251Compatible
= 0xA0,
965 PortType8251FifoCompatible
= 0xA1,
970 /// Port Connector Information (Type 8).
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.
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
;
986 /// System Slots - Slot Type
989 SlotTypeOther
= 0x01,
990 SlotTypeUnknown
= 0x02,
995 SlotTypePcmcia
= 0x07,
996 SlotTypeVlVesa
= 0x08,
997 SlotTypeProprietary
= 0x09,
998 SlotTypeProcessorCardSlot
= 0x0A,
999 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1000 SlotTypeIORiserCardSlot
= 0x0C,
1001 SlotTypeNuBus
= 0x0D,
1002 SlotTypePci66MhzCapable
= 0x0E,
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
1028 /// System Slots - Slot Data Bus Width.
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
;
1048 /// System Slots - Current Usage.
1051 SlotUsageOther
= 0x01,
1052 SlotUsageUnknown
= 0x02,
1053 SlotUsageAvailable
= 0x03,
1054 SlotUsageInUse
= 0x04
1058 /// System Slots - Slot Length.
1061 SlotLengthOther
= 0x01,
1062 SlotLengthUnknown
= 0x02,
1063 SlotLengthShort
= 0x03,
1064 SlotLengthLong
= 0x04
1068 /// System Slots - Slot Characteristics 1.
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
;
1081 /// System Slots - Slot Characteristics 2.
1084 UINT8 PmeSignalSupported
:1;
1085 UINT8 HotPlugDevicesSupported
:1;
1086 UINT8 SmbusSignalSupported
:1;
1087 UINT8 Reserved
:5; ///< Set to 0.
1088 } MISC_SLOT_CHARACTERISTICS2
;
1091 /// System Slots (Type 9)
1093 /// The information in this structure defines the attributes of a system slot.
1094 /// One structure is provided for each slot in the system.
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.
1105 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1106 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1108 // Add for smbios 2.6
1110 UINT16 SegmentGroupNum
;
1113 } SMBIOS_TABLE_TYPE9
;
1116 /// On Board Devices Information - Device Types.
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
;
1129 /// Device Item Entry
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
;
1138 /// On Board Devices Information (Type 10, obsolete).
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.
1148 SMBIOS_STRUCTURE Hdr
;
1149 DEVICE_STRUCT Device
[1];
1150 } SMBIOS_TABLE_TYPE10
;
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.
1158 SMBIOS_STRUCTURE Hdr
;
1160 } SMBIOS_TABLE_TYPE11
;
1163 /// System Configuration Options (Type 12).
1165 /// This structure contains information required to configure the base board's Jumpers and Switches.
1168 SMBIOS_STRUCTURE Hdr
;
1170 } SMBIOS_TABLE_TYPE12
;
1174 /// BIOS Language Information (Type 13).
1176 /// The information in this structure defines the installable language attributes of the BIOS.
1179 SMBIOS_STRUCTURE Hdr
;
1180 UINT8 InstallableLanguages
;
1183 SMBIOS_TABLE_STRING CurrentLanguages
;
1184 } SMBIOS_TABLE_TYPE13
;
1187 /// System Event Log - Event Log Types.
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
;
1219 /// System Event Log - Variable Data Format Types.
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
;
1234 /// Group Item Entry
1242 /// Event Log Type Descriptors
1245 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1246 UINT8 DataFormatType
;
1250 /// Group Associations (Type 14).
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.
1257 SMBIOS_STRUCTURE Hdr
;
1258 SMBIOS_TABLE_STRING GroupName
;
1259 GROUP_STRUCT Group
[1];
1260 } SMBIOS_TABLE_TYPE14
;
1263 /// System Event Log (Type 15).
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.
1271 SMBIOS_STRUCTURE Hdr
;
1272 UINT16 LogAreaLength
;
1273 UINT16 LogHeaderStartOffset
;
1274 UINT16 LogDataStartOffset
;
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
;
1286 /// Physical Memory Array - Location.
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
;
1306 /// Physical Memory Array - Use.
1309 MemoryArrayUseOther
= 0x01,
1310 MemoryArrayUseUnknown
= 0x02,
1311 MemoryArrayUseSystemMemory
= 0x03,
1312 MemoryArrayUseVideoMemory
= 0x04,
1313 MemoryArrayUseFlashMemory
= 0x05,
1314 MemoryArrayUseNonVolatileRam
= 0x06,
1315 MemoryArrayUseCacheMemory
= 0x07
1319 /// Physical Memory Array - Error Correction Types.
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
;
1332 /// Physical Memory Array (Type 16).
1334 /// This structure describes a collection of memory devices that operate
1335 /// together to form a memory address space.
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
;
1348 /// Memory Device - Form Factor.
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
;
1369 /// Memory Device - Type
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
;
1400 UINT16 FastPaged
:1;
1401 UINT16 StaticColumn
:1;
1402 UINT16 PseudoStatic
:1;
1404 UINT16 Synchronous
:1;
1407 UINT16 WindowDram
:1;
1408 UINT16 CacheDram
:1;
1409 UINT16 Nonvolatile
:1;
1410 UINT16 Reserved1
:3;
1411 } MEMORY_DEVICE_TYPE_DETAIL
;
1414 /// Memory Device (Type 17).
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.
1423 SMBIOS_STRUCTURE Hdr
;
1424 UINT16 MemoryArrayHandle
;
1425 UINT16 MemoryErrorInformationHandle
;
1429 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
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
;
1436 SMBIOS_TABLE_STRING Manufacturer
;
1437 SMBIOS_TABLE_STRING SerialNumber
;
1438 SMBIOS_TABLE_STRING AssetTag
;
1439 SMBIOS_TABLE_STRING PartNumber
;
1441 // Add for smbios 2.6
1444 } SMBIOS_TABLE_TYPE17
;
1447 /// 32-bit Memory Error Information - Error Type.
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
;
1467 /// 32-bit Memory Error Information - Error Granularity.
1470 MemoryGranularityOther
= 0x01,
1471 MemoryGranularityOtherUnknown
= 0x02,
1472 MemoryGranularityDeviceLevel
= 0x03,
1473 MemoryGranularityMemPartitionLevel
= 0x04
1474 } MEMORY_ERROR_GRANULARITY
;
1477 /// 32-bit Memory Error Information - Error Operation.
1480 MemoryErrorOperationOther
= 0x01,
1481 MemoryErrorOperationUnknown
= 0x02,
1482 MemoryErrorOperationRead
= 0x03,
1483 MemoryErrorOperationWrite
= 0x04,
1484 MemoryErrorOperationPartialWrite
= 0x05
1485 } MEMORY_ERROR_OPERATION
;
1488 /// 32-bit Memory Error Information (Type 18).
1490 /// This structure identifies the specifics of an error that might be detected
1491 /// within a Physical Memory Array.
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
;
1505 /// Memory Array Mapped Address (Type 19).
1507 /// This structure provides the address mapping for a Physical Memory Array.
1508 /// One structure is present for each contiguous address range described.
1511 SMBIOS_STRUCTURE Hdr
;
1512 UINT32 StartingAddress
;
1513 UINT32 EndingAddress
;
1514 UINT16 MemoryArrayHandle
;
1515 UINT8 PartitionWidth
;
1516 } SMBIOS_TABLE_TYPE19
;
1519 /// Memory Device Mapped Address (Type 20).
1521 /// This structure maps memory address space usually to a device-level granularity.
1522 /// One structure is present for each contiguous address range described.
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
;
1536 /// Built-in Pointing Device - Type
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
;
1551 /// Built-in Pointing Device - Interface.
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
;
1568 /// Built-in Pointing Device (Type 21).
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!
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
;
1582 /// Portable Battery - Device Chemistry
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
;
1596 /// Portable Battery (Type 22).
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.
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
;
1619 } SMBIOS_TABLE_TYPE22
;
1622 /// System Reset (Type 23)
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.
1631 SMBIOS_STRUCTURE Hdr
;
1635 UINT16 TimerInterval
;
1637 } SMBIOS_TABLE_TYPE23
;
1640 /// Hardware Security (Type 24).
1642 /// This structure describes the system-wide hardware security settings.
1645 SMBIOS_STRUCTURE Hdr
;
1646 UINT8 HardwareSecuritySettings
;
1647 } SMBIOS_TABLE_TYPE24
;
1650 /// System Power Controls (Type 25).
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.
1658 SMBIOS_STRUCTURE Hdr
;
1659 UINT8 NextScheduledPowerOnMonth
;
1660 UINT8 NextScheduledPowerOnDayOfMonth
;
1661 UINT8 NextScheduledPowerOnHour
;
1662 UINT8 NextScheduledPowerOnMinute
;
1663 UINT8 NextScheduledPowerOnSecond
;
1664 } SMBIOS_TABLE_TYPE25
;
1667 /// Voltage Probe - Location and Status.
1670 UINT8 VoltageProbeSite
:5;
1671 UINT8 VoltageProbeStatus
:3;
1672 } MISC_VOLTAGE_PROBE_LOCATION
;
1675 /// Voltage Probe (Type 26)
1677 /// This describes the attributes for a voltage probe in the system.
1678 /// Each structure describes a single voltage probe.
1681 SMBIOS_STRUCTURE Hdr
;
1682 SMBIOS_TABLE_STRING Description
;
1683 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
1684 UINT16 MaximumValue
;
1685 UINT16 MinimumValue
;
1690 UINT16 NominalValue
;
1691 } SMBIOS_TABLE_TYPE26
;
1694 /// Cooling Device - Device Type and Status.
1697 UINT8 CoolingDevice
:5;
1698 UINT8 CoolingDeviceStatus
:3;
1699 } MISC_COOLING_DEVICE_TYPE
;
1702 /// Cooling Device (Type 27)
1704 /// This structure describes the attributes for a cooling device in the system.
1705 /// Each structure describes a single cooling device.
1708 SMBIOS_STRUCTURE Hdr
;
1709 UINT16 TemperatureProbeHandle
;
1710 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
1711 UINT8 CoolingUnitGroup
;
1713 UINT16 NominalSpeed
;
1714 } SMBIOS_TABLE_TYPE27
;
1717 /// Temperature Probe - Location and Status.
1720 UINT8 TemperatureProbeSite
:5;
1721 UINT8 TemperatureProbeStatus
:3;
1722 } MISC_TEMPERATURE_PROBE_LOCATION
;
1725 /// Temperature Probe (Type 28).
1727 /// This structure describes the attributes for a temperature probe in the system.
1728 /// Each structure describes a single temperature probe.
1731 SMBIOS_STRUCTURE Hdr
;
1732 SMBIOS_TABLE_STRING Description
;
1733 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
1734 UINT16 MaximumValue
;
1735 UINT16 MinimumValue
;
1740 UINT16 NominalValue
;
1741 } SMBIOS_TABLE_TYPE28
;
1744 /// Electrical Current Probe - Location and Status.
1747 UINT8 ElectricalCurrentProbeSite
:5;
1748 UINT8 ElectricalCurrentProbeStatus
:3;
1749 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
1752 /// Electrical Current Probe (Type 29).
1754 /// This structure describes the attributes for an electrical current probe in the system.
1755 /// Each structure describes a single electrical current probe.
1758 SMBIOS_STRUCTURE Hdr
;
1759 SMBIOS_TABLE_STRING Description
;
1760 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
1761 UINT16 MaximumValue
;
1762 UINT16 MinimumValue
;
1767 UINT16 NominalValue
;
1768 } SMBIOS_TABLE_TYPE29
;
1771 /// Out-of-Band Remote Access (Type 30).
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.
1778 SMBIOS_STRUCTURE Hdr
;
1779 SMBIOS_TABLE_STRING ManufacturerName
;
1781 } SMBIOS_TABLE_TYPE30
;
1784 /// Boot Integrity Services (BIS) Entry Point (Type 31).
1786 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
1789 SMBIOS_STRUCTURE Hdr
;
1797 } SMBIOS_TABLE_TYPE31
;
1800 /// System Boot Information - System Boot Status.
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
;
1818 /// System Boot Information (Type 32).
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.
1829 SMBIOS_STRUCTURE Hdr
;
1831 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
1832 } SMBIOS_TABLE_TYPE32
;
1835 /// 64-bit Memory Error Information (Type 33).
1837 /// This structure describes an error within a Physical Memory Array,
1838 /// when the error address is above 4G (0xFFFFFFFF).
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
;
1852 /// Management Device - Type.
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
;
1871 /// Management Device - Address Type.
1874 ManagementDeviceAddressTypeOther
= 0x01,
1875 ManagementDeviceAddressTypeUnknown
= 0x02,
1876 ManagementDeviceAddressTypeIOPort
= 0x03,
1877 ManagementDeviceAddressTypeMemory
= 0x04,
1878 ManagementDeviceAddressTypeSmbus
= 0x05
1879 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
1882 /// Management Device (Type 34).
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.
1889 SMBIOS_STRUCTURE Hdr
;
1890 SMBIOS_TABLE_STRING Description
;
1891 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
1893 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
1894 } SMBIOS_TABLE_TYPE34
;
1897 /// Management Device Component (Type 35)
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.
1903 SMBIOS_STRUCTURE Hdr
;
1904 SMBIOS_TABLE_STRING Description
;
1905 UINT16 ManagementDeviceHandle
;
1906 UINT16 ComponentHandle
;
1907 UINT16 ThresholdHandle
;
1908 } SMBIOS_TABLE_TYPE35
;
1911 /// Management Device Threshold Data (Type 36).
1913 /// The information in this structure defines threshold information for
1914 /// a component (probe or cooling-unit) contained within a Management Device.
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
;
1927 /// Memory Channel Entry.
1931 UINT16 DeviceHandle
;
1935 /// Memory Channel - Channel Type.
1938 MemoryChannelTypeOther
= 0x01,
1939 MemoryChannelTypeUnknown
= 0x02,
1940 MemoryChannelTypeRambus
= 0x03,
1941 MemoryChannelTypeSyncLink
= 0x04
1942 } MEMORY_CHANNEL_TYPE
;
1945 /// Memory Channel (Type 37)
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.
1952 SMBIOS_STRUCTURE Hdr
;
1954 UINT8 MaximumChannelLoad
;
1955 UINT8 MemoryDeviceCount
;
1956 MEMORY_DEVICE MemoryDevice
[1];
1957 } SMBIOS_TABLE_TYPE37
;
1960 /// IPMI Device Information - BMC Interface Type
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
;
1971 /// IPMI Device Information (Type 38).
1973 /// The information in this structure defines the attributes of an
1974 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
1977 SMBIOS_STRUCTURE Hdr
;
1978 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
1979 UINT8 IPMISpecificationRevision
;
1980 UINT8 I2CSlaveAddress
;
1981 UINT8 NVStorageDeviceAddress
;
1983 UINT8 BaseAddressModifier_InterruptInfo
;
1984 UINT8 InterruptNumber
;
1985 } SMBIOS_TABLE_TYPE38
;
1988 /// System Power Supply - Power Supply Characteristics.
1991 UINT16 PowerSupplyHotReplaceable
:1;
1992 UINT16 PowerSupplyPresent
:1;
1993 UINT16 PowerSupplyUnplugged
:1;
1994 UINT16 InputVoltageRangeSwitch
:4;
1995 UINT16 PowerSupplyStatus
:3;
1996 UINT16 PowerSupplyType
:4;
1998 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2001 /// System Power Supply (Type 39).
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.
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
;
2024 /// Additional Information Entry Format.
2028 UINT16 ReferencedHandle
;
2029 UINT8 ReferencedOffset
;
2030 SMBIOS_TABLE_STRING EntryString
;
2032 }ADDITIONAL_INFORMATION_ENTRY
;
2035 /// Additional Information (Type 40).
2037 /// This structure is intended to provide additional information for handling unspecified
2038 /// enumerated values and interim field updates in another structure.
2041 SMBIOS_STRUCTURE Hdr
;
2042 UINT8 NumberOfAdditionalInformationEntries
;
2043 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2044 } SMBIOS_TABLE_TYPE40
;
2047 /// Onboard Devices Extended Information - Onboard Device Types.
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
;
2063 /// Onboard Devices Extended Information (Type 41).
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.
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
;
2078 } SMBIOS_TABLE_TYPE41
;
2081 /// Inactive (Type 126)
2084 SMBIOS_STRUCTURE Hdr
;
2085 } SMBIOS_TABLE_TYPE126
;
2088 /// End-of-Table (Type 127)
2091 SMBIOS_STRUCTURE Hdr
;
2092 } SMBIOS_TABLE_TYPE127
;
2095 /// Union of all the possible SMBIOS record types.
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
;
2144 } SMBIOS_STRUCTURE_POINTER
;