2 Industry Standard Definitions of SMBIOS Table Specification v3.0.0.
4 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
6 This program and the accompanying materials are licensed and made available under
7 the terms and conditions of the BSD License that accompanies this distribution.
8 The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #ifndef __SMBIOS_STANDARD_H__
17 #define __SMBIOS_STANDARD_H__
20 /// Reference SMBIOS 2.6, chapter 3.1.2.
21 /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
22 /// use by this specification.
24 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
27 /// Reference SMBIOS 2.7, chapter 6.1.2.
28 /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its
29 /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."
30 /// This number is not used for any other purpose by the SMBIOS specification.
32 #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
35 /// Reference SMBIOS 2.6, chapter 3.1.3.
36 /// Each text string is limited to 64 significant characters due to system MIF limitations.
37 /// Reference SMBIOS 2.7, chapter 6.1.3.
38 /// It will have no limit on the length of each individual text string.
40 #define SMBIOS_STRING_MAX_LENGTH 64
43 // The length of the entire structure table (including all strings) must be reported
44 // in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
45 // which is a WORD field limited to 65,535 bytes.
47 #define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
50 // For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
52 #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
55 // SMBIOS type macros which is according to SMBIOS 2.7 specification.
57 #define SMBIOS_TYPE_BIOS_INFORMATION 0
58 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
59 #define SMBIOS_TYPE_BASEBOARD_INFORMATION 2
60 #define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3
61 #define SMBIOS_TYPE_PROCESSOR_INFORMATION 4
62 #define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5
63 #define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6
64 #define SMBIOS_TYPE_CACHE_INFORMATION 7
65 #define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8
66 #define SMBIOS_TYPE_SYSTEM_SLOTS 9
67 #define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10
68 #define SMBIOS_TYPE_OEM_STRINGS 11
69 #define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12
70 #define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13
71 #define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14
72 #define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15
73 #define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16
74 #define SMBIOS_TYPE_MEMORY_DEVICE 17
75 #define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18
76 #define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19
77 #define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20
78 #define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21
79 #define SMBIOS_TYPE_PORTABLE_BATTERY 22
80 #define SMBIOS_TYPE_SYSTEM_RESET 23
81 #define SMBIOS_TYPE_HARDWARE_SECURITY 24
82 #define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25
83 #define SMBIOS_TYPE_VOLTAGE_PROBE 26
84 #define SMBIOS_TYPE_COOLING_DEVICE 27
85 #define SMBIOS_TYPE_TEMPERATURE_PROBE 28
86 #define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29
87 #define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30
88 #define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31
89 #define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32
90 #define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33
91 #define SMBIOS_TYPE_MANAGEMENT_DEVICE 34
92 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35
93 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36
94 #define SMBIOS_TYPE_MEMORY_CHANNEL 37
95 #define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38
96 #define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39
97 #define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40
98 #define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
99 #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
102 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
103 /// Upper-level software that interprets the SMBIOS structure-table should bypass an
104 /// Inactive structure just like a structure type that the software does not recognize.
106 #define SMBIOS_TYPE_INACTIVE 0x007E
109 /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
110 /// The end-of-table indicator is used in the last physical structure in a table
112 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
114 #define SMBIOS_OEM_BEGIN 128
115 #define SMBIOS_OEM_END 255
118 /// Types 0 through 127 (7Fh) are reserved for and defined by this
119 /// specification. Types 128 through 256 (80h to FFh) are available for system- and OEM-specific information.
121 typedef UINT8 SMBIOS_TYPE
;
124 /// Specifies the structure's handle, a unique 16-bit number in the range 0 to 0FFFEh (for version
125 /// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used with the Get SMBIOS
126 /// Structure function to retrieve a specific structure; the handle numbers are not required to be
127 /// contiguous. For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
128 /// use by this specification.
129 /// If the system configuration changes, a previously assigned handle might no longer exist.
130 /// However once a handle has been assigned by the BIOS, the BIOS cannot re-assign that handle
131 /// number to another structure.
133 typedef UINT16 SMBIOS_HANDLE
;
136 /// Smbios Table Entry Point Structure.
140 UINT8 AnchorString
[4];
141 UINT8 EntryPointStructureChecksum
;
142 UINT8 EntryPointLength
;
145 UINT16 MaxStructureSize
;
146 UINT8 EntryPointRevision
;
147 UINT8 FormattedArea
[5];
148 UINT8 IntermediateAnchorString
[5];
149 UINT8 IntermediateChecksum
;
152 UINT16 NumberOfSmbiosStructures
;
153 UINT8 SmbiosBcdRevision
;
154 } SMBIOS_TABLE_ENTRY_POINT
;
157 UINT8 AnchorString
[5];
158 UINT8 EntryPointStructureChecksum
;
159 UINT8 EntryPointLength
;
163 UINT8 EntryPointRevision
;
165 UINT32 TableMaximumSize
;
167 } SMBIOS_TABLE_3_0_ENTRY_POINT
;
170 /// The Smbios structure header.
175 SMBIOS_HANDLE Handle
;
179 /// Text strings associated with a given SMBIOS structure are returned in the dmiStrucBuffer, appended directly after
180 /// the formatted portion of the structure. This method of returning string information eliminates the need for
181 /// application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null
182 /// (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of
183 /// a SMBIOS structure references a string, it does so by specifying a non-zero string number within the structure's
184 /// string-set. For example, if a string field contains 02h, it references the second string following the formatted portion
185 /// of the SMBIOS structure. If a string field references no string, a null (0) is placed in that string field. If the
186 /// formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string
187 /// references), the formatted section of the structure is followed by two null (00h) BYTES.
189 typedef UINT8 SMBIOS_TABLE_STRING
;
192 /// BIOS Characteristics
193 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
196 UINT32 Reserved
:2; ///< Bits 0-1.
198 UINT32 BiosCharacteristicsNotSupported
:1;
199 UINT32 IsaIsSupported
:1;
200 UINT32 McaIsSupported
:1;
201 UINT32 EisaIsSupported
:1;
202 UINT32 PciIsSupported
:1;
203 UINT32 PcmciaIsSupported
:1;
204 UINT32 PlugAndPlayIsSupported
:1;
205 UINT32 ApmIsSupported
:1;
206 UINT32 BiosIsUpgradable
:1;
207 UINT32 BiosShadowingAllowed
:1;
208 UINT32 VlVesaIsSupported
:1;
209 UINT32 EscdSupportIsAvailable
:1;
210 UINT32 BootFromCdIsSupported
:1;
211 UINT32 SelectableBootIsSupported
:1;
212 UINT32 RomBiosIsSocketed
:1;
213 UINT32 BootFromPcmciaIsSupported
:1;
214 UINT32 EDDSpecificationIsSupported
:1;
215 UINT32 JapaneseNecFloppyIsSupported
:1;
216 UINT32 JapaneseToshibaFloppyIsSupported
:1;
217 UINT32 Floppy525_360IsSupported
:1;
218 UINT32 Floppy525_12IsSupported
:1;
219 UINT32 Floppy35_720IsSupported
:1;
220 UINT32 Floppy35_288IsSupported
:1;
221 UINT32 PrintScreenIsSupported
:1;
222 UINT32 Keyboard8042IsSupported
:1;
223 UINT32 SerialIsSupported
:1;
224 UINT32 PrinterIsSupported
:1;
225 UINT32 CgaMonoIsSupported
:1;
227 UINT32 ReservedForVendor
:32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
228 ///< and bits 48-63 reserved for System Vendor.
229 } MISC_BIOS_CHARACTERISTICS
;
232 /// BIOS Characteristics Extension Byte 1.
233 /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h
234 /// within the BIOS Information structure.
237 UINT8 AcpiIsSupported
:1;
238 UINT8 UsbLegacyIsSupported
:1;
239 UINT8 AgpIsSupported
:1;
240 UINT8 I2OBootIsSupported
:1;
241 UINT8 Ls120BootIsSupported
:1;
242 UINT8 AtapiZipDriveBootIsSupported
:1;
243 UINT8 Boot1394IsSupported
:1;
244 UINT8 SmartBatteryIsSupported
:1;
245 } MBCE_BIOS_RESERVED
;
248 /// BIOS Characteristics Extension Byte 2.
249 /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h
250 /// within the BIOS Information structure.
253 UINT8 BiosBootSpecIsSupported
:1;
254 UINT8 FunctionKeyNetworkBootIsSupported
:1;
255 UINT8 TargetContentDistributionEnabled
:1;
256 UINT8 UefiSpecificationSupported
:1;
257 UINT8 VirtualMachineSupported
:1;
258 UINT8 ExtensionByte2Reserved
:3;
259 } MBCE_SYSTEM_RESERVED
;
262 /// BIOS Characteristics Extension Bytes.
265 MBCE_BIOS_RESERVED BiosReserved
;
266 MBCE_SYSTEM_RESERVED SystemReserved
;
267 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
270 /// BIOS Information (Type 0).
273 SMBIOS_STRUCTURE Hdr
;
274 SMBIOS_TABLE_STRING Vendor
;
275 SMBIOS_TABLE_STRING BiosVersion
;
277 SMBIOS_TABLE_STRING BiosReleaseDate
;
279 MISC_BIOS_CHARACTERISTICS BiosCharacteristics
;
280 UINT8 BIOSCharacteristicsExtensionBytes
[2];
281 UINT8 SystemBiosMajorRelease
;
282 UINT8 SystemBiosMinorRelease
;
283 UINT8 EmbeddedControllerFirmwareMajorRelease
;
284 UINT8 EmbeddedControllerFirmwareMinorRelease
;
285 } SMBIOS_TABLE_TYPE0
;
288 /// System Wake-up Type.
291 SystemWakeupTypeReserved
= 0x00,
292 SystemWakeupTypeOther
= 0x01,
293 SystemWakeupTypeUnknown
= 0x02,
294 SystemWakeupTypeApmTimer
= 0x03,
295 SystemWakeupTypeModemRing
= 0x04,
296 SystemWakeupTypeLanRemote
= 0x05,
297 SystemWakeupTypePowerSwitch
= 0x06,
298 SystemWakeupTypePciPme
= 0x07,
299 SystemWakeupTypeAcPowerRestored
= 0x08
300 } MISC_SYSTEM_WAKEUP_TYPE
;
303 /// System Information (Type 1).
305 /// The information in this structure defines attributes of the overall system and is
306 /// intended to be associated with the Component ID group of the system's MIF.
307 /// An SMBIOS implementation is associated with a single system instance and contains
308 /// one and only one System Information (Type 1) structure.
311 SMBIOS_STRUCTURE Hdr
;
312 SMBIOS_TABLE_STRING Manufacturer
;
313 SMBIOS_TABLE_STRING ProductName
;
314 SMBIOS_TABLE_STRING Version
;
315 SMBIOS_TABLE_STRING SerialNumber
;
317 UINT8 WakeUpType
; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
318 SMBIOS_TABLE_STRING SKUNumber
;
319 SMBIOS_TABLE_STRING Family
;
320 } SMBIOS_TABLE_TYPE1
;
323 /// Base Board - Feature Flags.
326 UINT8 Motherboard
:1;
327 UINT8 RequiresDaughterCard
:1;
329 UINT8 Replaceable
:1;
330 UINT8 HotSwappable
:1;
332 } BASE_BOARD_FEATURE_FLAGS
;
335 /// Base Board - Board Type.
338 BaseBoardTypeUnknown
= 0x1,
339 BaseBoardTypeOther
= 0x2,
340 BaseBoardTypeServerBlade
= 0x3,
341 BaseBoardTypeConnectivitySwitch
= 0x4,
342 BaseBoardTypeSystemManagementModule
= 0x5,
343 BaseBoardTypeProcessorModule
= 0x6,
344 BaseBoardTypeIOModule
= 0x7,
345 BaseBoardTypeMemoryModule
= 0x8,
346 BaseBoardTypeDaughterBoard
= 0x9,
347 BaseBoardTypeMotherBoard
= 0xA,
348 BaseBoardTypeProcessorMemoryModule
= 0xB,
349 BaseBoardTypeProcessorIOModule
= 0xC,
350 BaseBoardTypeInterconnectBoard
= 0xD
354 /// Base Board (or Module) Information (Type 2).
356 /// The information in this structure defines attributes of a system baseboard -
357 /// for example a motherboard, planar, or server blade or other standard system module.
360 SMBIOS_STRUCTURE Hdr
;
361 SMBIOS_TABLE_STRING Manufacturer
;
362 SMBIOS_TABLE_STRING ProductName
;
363 SMBIOS_TABLE_STRING Version
;
364 SMBIOS_TABLE_STRING SerialNumber
;
365 SMBIOS_TABLE_STRING AssetTag
;
366 BASE_BOARD_FEATURE_FLAGS FeatureFlag
;
367 SMBIOS_TABLE_STRING LocationInChassis
;
368 UINT16 ChassisHandle
;
369 UINT8 BoardType
; ///< The enumeration value from BASE_BOARD_TYPE.
370 UINT8 NumberOfContainedObjectHandles
;
371 UINT16 ContainedObjectHandles
[1];
372 } SMBIOS_TABLE_TYPE2
;
375 /// System Enclosure or Chassis Types
378 MiscChassisTypeOther
= 0x01,
379 MiscChassisTypeUnknown
= 0x02,
380 MiscChassisTypeDeskTop
= 0x03,
381 MiscChassisTypeLowProfileDesktop
= 0x04,
382 MiscChassisTypePizzaBox
= 0x05,
383 MiscChassisTypeMiniTower
= 0x06,
384 MiscChassisTypeTower
= 0x07,
385 MiscChassisTypePortable
= 0x08,
386 MiscChassisTypeLapTop
= 0x09,
387 MiscChassisTypeNotebook
= 0x0A,
388 MiscChassisTypeHandHeld
= 0x0B,
389 MiscChassisTypeDockingStation
= 0x0C,
390 MiscChassisTypeAllInOne
= 0x0D,
391 MiscChassisTypeSubNotebook
= 0x0E,
392 MiscChassisTypeSpaceSaving
= 0x0F,
393 MiscChassisTypeLunchBox
= 0x10,
394 MiscChassisTypeMainServerChassis
= 0x11,
395 MiscChassisTypeExpansionChassis
= 0x12,
396 MiscChassisTypeSubChassis
= 0x13,
397 MiscChassisTypeBusExpansionChassis
= 0x14,
398 MiscChassisTypePeripheralChassis
= 0x15,
399 MiscChassisTypeRaidChassis
= 0x16,
400 MiscChassisTypeRackMountChassis
= 0x17,
401 MiscChassisTypeSealedCasePc
= 0x18,
402 MiscChassisMultiSystemChassis
= 0x19,
403 MiscChassisCompactPCI
= 0x1A,
404 MiscChassisAdvancedTCA
= 0x1B,
405 MiscChassisBlade
= 0x1C,
406 MiscChassisBladeEnclosure
= 0x1D,
407 MiscChassisTablet
= 0x1E,
408 MiscChassisConvertible
= 0x1F,
409 MiscChassisDetachable
= 0x20
413 /// System Enclosure or Chassis States .
416 ChassisStateOther
= 0x01,
417 ChassisStateUnknown
= 0x02,
418 ChassisStateSafe
= 0x03,
419 ChassisStateWarning
= 0x04,
420 ChassisStateCritical
= 0x05,
421 ChassisStateNonRecoverable
= 0x06
422 } MISC_CHASSIS_STATE
;
425 /// System Enclosure or Chassis Security Status.
428 ChassisSecurityStatusOther
= 0x01,
429 ChassisSecurityStatusUnknown
= 0x02,
430 ChassisSecurityStatusNone
= 0x03,
431 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
432 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
433 } MISC_CHASSIS_SECURITY_STATE
;
436 /// Contained Element record
439 UINT8 ContainedElementType
;
440 UINT8 ContainedElementMinimum
;
441 UINT8 ContainedElementMaximum
;
446 /// System Enclosure or Chassis (Type 3).
448 /// The information in this structure defines attributes of the system's mechanical enclosure(s).
449 /// For example, if a system included a separate enclosure for its peripheral devices,
450 /// two structures would be returned: one for the main, system enclosure and the second for
451 /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification
452 /// support the population of the CIM_Chassis class.
455 SMBIOS_STRUCTURE Hdr
;
456 SMBIOS_TABLE_STRING Manufacturer
;
458 SMBIOS_TABLE_STRING Version
;
459 SMBIOS_TABLE_STRING SerialNumber
;
460 SMBIOS_TABLE_STRING AssetTag
;
461 UINT8 BootupState
; ///< The enumeration value from MISC_CHASSIS_STATE.
462 UINT8 PowerSupplyState
; ///< The enumeration value from MISC_CHASSIS_STATE.
463 UINT8 ThermalState
; ///< The enumeration value from MISC_CHASSIS_STATE.
464 UINT8 SecurityStatus
; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.
467 UINT8 NumberofPowerCords
;
468 UINT8 ContainedElementCount
;
469 UINT8 ContainedElementRecordLength
;
470 CONTAINED_ELEMENT ContainedElements
[1];
471 } SMBIOS_TABLE_TYPE3
;
474 /// Processor Information - Processor Type.
477 ProcessorOther
= 0x01,
478 ProcessorUnknown
= 0x02,
479 CentralProcessor
= 0x03,
480 MathProcessor
= 0x04,
482 VideoProcessor
= 0x06
483 } PROCESSOR_TYPE_DATA
;
486 /// Processor Information - Processor Family.
489 ProcessorFamilyOther
= 0x01,
490 ProcessorFamilyUnknown
= 0x02,
491 ProcessorFamily8086
= 0x03,
492 ProcessorFamily80286
= 0x04,
493 ProcessorFamilyIntel386
= 0x05,
494 ProcessorFamilyIntel486
= 0x06,
495 ProcessorFamily8087
= 0x07,
496 ProcessorFamily80287
= 0x08,
497 ProcessorFamily80387
= 0x09,
498 ProcessorFamily80487
= 0x0A,
499 ProcessorFamilyPentium
= 0x0B,
500 ProcessorFamilyPentiumPro
= 0x0C,
501 ProcessorFamilyPentiumII
= 0x0D,
502 ProcessorFamilyPentiumMMX
= 0x0E,
503 ProcessorFamilyCeleron
= 0x0F,
504 ProcessorFamilyPentiumIIXeon
= 0x10,
505 ProcessorFamilyPentiumIII
= 0x11,
506 ProcessorFamilyM1
= 0x12,
507 ProcessorFamilyM2
= 0x13,
508 ProcessorFamilyIntelCeleronM
= 0x14,
509 ProcessorFamilyIntelPentium4Ht
= 0x15,
510 ProcessorFamilyAmdDuron
= 0x18,
511 ProcessorFamilyK5
= 0x19,
512 ProcessorFamilyK6
= 0x1A,
513 ProcessorFamilyK6_2
= 0x1B,
514 ProcessorFamilyK6_3
= 0x1C,
515 ProcessorFamilyAmdAthlon
= 0x1D,
516 ProcessorFamilyAmd29000
= 0x1E,
517 ProcessorFamilyK6_2Plus
= 0x1F,
518 ProcessorFamilyPowerPC
= 0x20,
519 ProcessorFamilyPowerPC601
= 0x21,
520 ProcessorFamilyPowerPC603
= 0x22,
521 ProcessorFamilyPowerPC603Plus
= 0x23,
522 ProcessorFamilyPowerPC604
= 0x24,
523 ProcessorFamilyPowerPC620
= 0x25,
524 ProcessorFamilyPowerPCx704
= 0x26,
525 ProcessorFamilyPowerPC750
= 0x27,
526 ProcessorFamilyIntelCoreDuo
= 0x28,
527 ProcessorFamilyIntelCoreDuoMobile
= 0x29,
528 ProcessorFamilyIntelCoreSoloMobile
= 0x2A,
529 ProcessorFamilyIntelAtom
= 0x2B,
530 ProcessorFamilyIntelCoreM
= 0x2C,
531 ProcessorFamilyAlpha
= 0x30,
532 ProcessorFamilyAlpha21064
= 0x31,
533 ProcessorFamilyAlpha21066
= 0x32,
534 ProcessorFamilyAlpha21164
= 0x33,
535 ProcessorFamilyAlpha21164PC
= 0x34,
536 ProcessorFamilyAlpha21164a
= 0x35,
537 ProcessorFamilyAlpha21264
= 0x36,
538 ProcessorFamilyAlpha21364
= 0x37,
539 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM
= 0x38,
540 ProcessorFamilyAmdTurionIIDualCoreMobileM
= 0x39,
541 ProcessorFamilyAmdAthlonIIDualCoreM
= 0x3A,
542 ProcessorFamilyAmdOpteron6100Series
= 0x3B,
543 ProcessorFamilyAmdOpteron4100Series
= 0x3C,
544 ProcessorFamilyAmdOpteron6200Series
= 0x3D,
545 ProcessorFamilyAmdOpteron4200Series
= 0x3E,
546 ProcessorFamilyAmdFxSeries
= 0x3F,
547 ProcessorFamilyMips
= 0x40,
548 ProcessorFamilyMIPSR4000
= 0x41,
549 ProcessorFamilyMIPSR4200
= 0x42,
550 ProcessorFamilyMIPSR4400
= 0x43,
551 ProcessorFamilyMIPSR4600
= 0x44,
552 ProcessorFamilyMIPSR10000
= 0x45,
553 ProcessorFamilyAmdCSeries
= 0x46,
554 ProcessorFamilyAmdESeries
= 0x47,
555 ProcessorFamilyAmdASeries
= 0x48, ///< SMBIOS spec 2.8.0 updated the name
556 ProcessorFamilyAmdGSeries
= 0x49,
557 ProcessorFamilyAmdZSeries
= 0x4A,
558 ProcessorFamilyAmdRSeries
= 0x4B,
559 ProcessorFamilyAmdOpteron4300
= 0x4C,
560 ProcessorFamilyAmdOpteron6300
= 0x4D,
561 ProcessorFamilyAmdOpteron3300
= 0x4E,
562 ProcessorFamilyAmdFireProSeries
= 0x4F,
563 ProcessorFamilySparc
= 0x50,
564 ProcessorFamilySuperSparc
= 0x51,
565 ProcessorFamilymicroSparcII
= 0x52,
566 ProcessorFamilymicroSparcIIep
= 0x53,
567 ProcessorFamilyUltraSparc
= 0x54,
568 ProcessorFamilyUltraSparcII
= 0x55,
569 ProcessorFamilyUltraSparcIii
= 0x56,
570 ProcessorFamilyUltraSparcIII
= 0x57,
571 ProcessorFamilyUltraSparcIIIi
= 0x58,
572 ProcessorFamily68040
= 0x60,
573 ProcessorFamily68xxx
= 0x61,
574 ProcessorFamily68000
= 0x62,
575 ProcessorFamily68010
= 0x63,
576 ProcessorFamily68020
= 0x64,
577 ProcessorFamily68030
= 0x65,
578 ProcessorFamilyAmdAthlonX4QuadCore
= 0x66,
579 ProcessorFamilyAmdOpteronX1000Series
= 0x67,
580 ProcessorFamilyAmdOpteronX2000Series
= 0x68,
581 ProcessorFamilyHobbit
= 0x70,
582 ProcessorFamilyCrusoeTM5000
= 0x78,
583 ProcessorFamilyCrusoeTM3000
= 0x79,
584 ProcessorFamilyEfficeonTM8000
= 0x7A,
585 ProcessorFamilyWeitek
= 0x80,
586 ProcessorFamilyItanium
= 0x82,
587 ProcessorFamilyAmdAthlon64
= 0x83,
588 ProcessorFamilyAmdOpteron
= 0x84,
589 ProcessorFamilyAmdSempron
= 0x85,
590 ProcessorFamilyAmdTurion64Mobile
= 0x86,
591 ProcessorFamilyDualCoreAmdOpteron
= 0x87,
592 ProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
593 ProcessorFamilyAmdTurion64X2Mobile
= 0x89,
594 ProcessorFamilyQuadCoreAmdOpteron
= 0x8A,
595 ProcessorFamilyThirdGenerationAmdOpteron
= 0x8B,
596 ProcessorFamilyAmdPhenomFxQuadCore
= 0x8C,
597 ProcessorFamilyAmdPhenomX4QuadCore
= 0x8D,
598 ProcessorFamilyAmdPhenomX2DualCore
= 0x8E,
599 ProcessorFamilyAmdAthlonX2DualCore
= 0x8F,
600 ProcessorFamilyPARISC
= 0x90,
601 ProcessorFamilyPaRisc8500
= 0x91,
602 ProcessorFamilyPaRisc8000
= 0x92,
603 ProcessorFamilyPaRisc7300LC
= 0x93,
604 ProcessorFamilyPaRisc7200
= 0x94,
605 ProcessorFamilyPaRisc7100LC
= 0x95,
606 ProcessorFamilyPaRisc7100
= 0x96,
607 ProcessorFamilyV30
= 0xA0,
608 ProcessorFamilyQuadCoreIntelXeon3200Series
= 0xA1,
609 ProcessorFamilyDualCoreIntelXeon3000Series
= 0xA2,
610 ProcessorFamilyQuadCoreIntelXeon5300Series
= 0xA3,
611 ProcessorFamilyDualCoreIntelXeon5100Series
= 0xA4,
612 ProcessorFamilyDualCoreIntelXeon5000Series
= 0xA5,
613 ProcessorFamilyDualCoreIntelXeonLV
= 0xA6,
614 ProcessorFamilyDualCoreIntelXeonULV
= 0xA7,
615 ProcessorFamilyDualCoreIntelXeon7100Series
= 0xA8,
616 ProcessorFamilyQuadCoreIntelXeon5400Series
= 0xA9,
617 ProcessorFamilyQuadCoreIntelXeon
= 0xAA,
618 ProcessorFamilyDualCoreIntelXeon5200Series
= 0xAB,
619 ProcessorFamilyDualCoreIntelXeon7200Series
= 0xAC,
620 ProcessorFamilyQuadCoreIntelXeon7300Series
= 0xAD,
621 ProcessorFamilyQuadCoreIntelXeon7400Series
= 0xAE,
622 ProcessorFamilyMultiCoreIntelXeon7400Series
= 0xAF,
623 ProcessorFamilyPentiumIIIXeon
= 0xB0,
624 ProcessorFamilyPentiumIIISpeedStep
= 0xB1,
625 ProcessorFamilyPentium4
= 0xB2,
626 ProcessorFamilyIntelXeon
= 0xB3,
627 ProcessorFamilyAS400
= 0xB4,
628 ProcessorFamilyIntelXeonMP
= 0xB5,
629 ProcessorFamilyAMDAthlonXP
= 0xB6,
630 ProcessorFamilyAMDAthlonMP
= 0xB7,
631 ProcessorFamilyIntelItanium2
= 0xB8,
632 ProcessorFamilyIntelPentiumM
= 0xB9,
633 ProcessorFamilyIntelCeleronD
= 0xBA,
634 ProcessorFamilyIntelPentiumD
= 0xBB,
635 ProcessorFamilyIntelPentiumEx
= 0xBC,
636 ProcessorFamilyIntelCoreSolo
= 0xBD, ///< SMBIOS spec 2.6 updated this value
637 ProcessorFamilyReserved
= 0xBE,
638 ProcessorFamilyIntelCore2
= 0xBF,
639 ProcessorFamilyIntelCore2Solo
= 0xC0,
640 ProcessorFamilyIntelCore2Extreme
= 0xC1,
641 ProcessorFamilyIntelCore2Quad
= 0xC2,
642 ProcessorFamilyIntelCore2ExtremeMobile
= 0xC3,
643 ProcessorFamilyIntelCore2DuoMobile
= 0xC4,
644 ProcessorFamilyIntelCore2SoloMobile
= 0xC5,
645 ProcessorFamilyIntelCoreI7
= 0xC6,
646 ProcessorFamilyDualCoreIntelCeleron
= 0xC7,
647 ProcessorFamilyIBM390
= 0xC8,
648 ProcessorFamilyG4
= 0xC9,
649 ProcessorFamilyG5
= 0xCA,
650 ProcessorFamilyG6
= 0xCB,
651 ProcessorFamilyzArchitecture
= 0xCC,
652 ProcessorFamilyIntelCoreI5
= 0xCD,
653 ProcessorFamilyIntelCoreI3
= 0xCE,
654 ProcessorFamilyViaC7M
= 0xD2,
655 ProcessorFamilyViaC7D
= 0xD3,
656 ProcessorFamilyViaC7
= 0xD4,
657 ProcessorFamilyViaEden
= 0xD5,
658 ProcessorFamilyMultiCoreIntelXeon
= 0xD6,
659 ProcessorFamilyDualCoreIntelXeon3Series
= 0xD7,
660 ProcessorFamilyQuadCoreIntelXeon3Series
= 0xD8,
661 ProcessorFamilyViaNano
= 0xD9,
662 ProcessorFamilyDualCoreIntelXeon5Series
= 0xDA,
663 ProcessorFamilyQuadCoreIntelXeon5Series
= 0xDB,
664 ProcessorFamilyDualCoreIntelXeon7Series
= 0xDD,
665 ProcessorFamilyQuadCoreIntelXeon7Series
= 0xDE,
666 ProcessorFamilyMultiCoreIntelXeon7Series
= 0xDF,
667 ProcessorFamilyMultiCoreIntelXeon3400Series
= 0xE0,
668 ProcessorFamilyAmdOpteron3000Series
= 0xE4,
669 ProcessorFamilyAmdSempronII
= 0xE5,
670 ProcessorFamilyEmbeddedAmdOpteronQuadCore
= 0xE6,
671 ProcessorFamilyAmdPhenomTripleCore
= 0xE7,
672 ProcessorFamilyAmdTurionUltraDualCoreMobile
= 0xE8,
673 ProcessorFamilyAmdTurionDualCoreMobile
= 0xE9,
674 ProcessorFamilyAmdAthlonDualCore
= 0xEA,
675 ProcessorFamilyAmdSempronSI
= 0xEB,
676 ProcessorFamilyAmdPhenomII
= 0xEC,
677 ProcessorFamilyAmdAthlonII
= 0xED,
678 ProcessorFamilySixCoreAmdOpteron
= 0xEE,
679 ProcessorFamilyAmdSempronM
= 0xEF,
680 ProcessorFamilyi860
= 0xFA,
681 ProcessorFamilyi960
= 0xFB,
682 ProcessorFamilyIndicatorFamily2
= 0xFE,
683 ProcessorFamilyReserved1
= 0xFF
684 } PROCESSOR_FAMILY_DATA
;
687 /// Processor Information2 - Processor Family2.
690 ProcessorFamilySH3
= 0x0104,
691 ProcessorFamilySH4
= 0x0105,
692 ProcessorFamilyARM
= 0x0118,
693 ProcessorFamilyStrongARM
= 0x0119,
694 ProcessorFamily6x86
= 0x012C,
695 ProcessorFamilyMediaGX
= 0x012D,
696 ProcessorFamilyMII
= 0x012E,
697 ProcessorFamilyWinChip
= 0x0140,
698 ProcessorFamilyDSP
= 0x015E,
699 ProcessorFamilyVideoProcessor
= 0x01F4
700 } PROCESSOR_FAMILY2_DATA
;
703 /// Processor Information - Voltage.
706 UINT8 ProcessorVoltageCapability5V
:1;
707 UINT8 ProcessorVoltageCapability3_3V
:1;
708 UINT8 ProcessorVoltageCapability2_9V
:1;
709 UINT8 ProcessorVoltageCapabilityReserved
:1; ///< Bit 3, must be zero.
710 UINT8 ProcessorVoltageReserved
:3; ///< Bits 4-6, must be zero.
711 UINT8 ProcessorVoltageIndicateLegacy
:1;
715 /// Processor Information - Processor Upgrade.
718 ProcessorUpgradeOther
= 0x01,
719 ProcessorUpgradeUnknown
= 0x02,
720 ProcessorUpgradeDaughterBoard
= 0x03,
721 ProcessorUpgradeZIFSocket
= 0x04,
722 ProcessorUpgradePiggyBack
= 0x05, ///< Replaceable.
723 ProcessorUpgradeNone
= 0x06,
724 ProcessorUpgradeLIFSocket
= 0x07,
725 ProcessorUpgradeSlot1
= 0x08,
726 ProcessorUpgradeSlot2
= 0x09,
727 ProcessorUpgrade370PinSocket
= 0x0A,
728 ProcessorUpgradeSlotA
= 0x0B,
729 ProcessorUpgradeSlotM
= 0x0C,
730 ProcessorUpgradeSocket423
= 0x0D,
731 ProcessorUpgradeSocketA
= 0x0E, ///< Socket 462.
732 ProcessorUpgradeSocket478
= 0x0F,
733 ProcessorUpgradeSocket754
= 0x10,
734 ProcessorUpgradeSocket940
= 0x11,
735 ProcessorUpgradeSocket939
= 0x12,
736 ProcessorUpgradeSocketmPGA604
= 0x13,
737 ProcessorUpgradeSocketLGA771
= 0x14,
738 ProcessorUpgradeSocketLGA775
= 0x15,
739 ProcessorUpgradeSocketS1
= 0x16,
740 ProcessorUpgradeAM2
= 0x17,
741 ProcessorUpgradeF1207
= 0x18,
742 ProcessorSocketLGA1366
= 0x19,
743 ProcessorUpgradeSocketG34
= 0x1A,
744 ProcessorUpgradeSocketAM3
= 0x1B,
745 ProcessorUpgradeSocketC32
= 0x1C,
746 ProcessorUpgradeSocketLGA1156
= 0x1D,
747 ProcessorUpgradeSocketLGA1567
= 0x1E,
748 ProcessorUpgradeSocketPGA988A
= 0x1F,
749 ProcessorUpgradeSocketBGA1288
= 0x20,
750 ProcessorUpgradeSocketrPGA988B
= 0x21,
751 ProcessorUpgradeSocketBGA1023
= 0x22,
752 ProcessorUpgradeSocketBGA1224
= 0x23,
753 ProcessorUpgradeSocketLGA1155
= 0x24, ///< SMBIOS spec 2.8.0 updated the name
754 ProcessorUpgradeSocketLGA1356
= 0x25,
755 ProcessorUpgradeSocketLGA2011
= 0x26,
756 ProcessorUpgradeSocketFS1
= 0x27,
757 ProcessorUpgradeSocketFS2
= 0x28,
758 ProcessorUpgradeSocketFM1
= 0x29,
759 ProcessorUpgradeSocketFM2
= 0x2A,
760 ProcessorUpgradeSocketLGA2011_3
= 0x2B,
761 ProcessorUpgradeSocketLGA1356_3
= 0x2C,
762 ProcessorUpgradeSocketLGA1150
= 0x2D,
763 ProcessorUpgradeSocketBGA1168
= 0x2E,
764 ProcessorUpgradeSocketBGA1234
= 0x2F,
765 ProcessorUpgradeSocketBGA1364
= 0x30
769 /// Processor ID Field Description
772 UINT32 ProcessorSteppingId
:4;
773 UINT32 ProcessorModel
: 4;
774 UINT32 ProcessorFamily
: 4;
775 UINT32 ProcessorType
: 2;
776 UINT32 ProcessorReserved1
: 2;
777 UINT32 ProcessorXModel
: 4;
778 UINT32 ProcessorXFamily
: 8;
779 UINT32 ProcessorReserved2
: 4;
780 } PROCESSOR_SIGNATURE
;
783 UINT32 ProcessorFpu
:1;
784 UINT32 ProcessorVme
:1;
785 UINT32 ProcessorDe
:1;
786 UINT32 ProcessorPse
:1;
787 UINT32 ProcessorTsc
:1;
788 UINT32 ProcessorMsr
:1;
789 UINT32 ProcessorPae
:1;
790 UINT32 ProcessorMce
:1;
791 UINT32 ProcessorCx8
:1;
792 UINT32 ProcessorApic
:1;
793 UINT32 ProcessorReserved1
:1;
794 UINT32 ProcessorSep
:1;
795 UINT32 ProcessorMtrr
:1;
796 UINT32 ProcessorPge
:1;
797 UINT32 ProcessorMca
:1;
798 UINT32 ProcessorCmov
:1;
799 UINT32 ProcessorPat
:1;
800 UINT32 ProcessorPse36
:1;
801 UINT32 ProcessorPsn
:1;
802 UINT32 ProcessorClfsh
:1;
803 UINT32 ProcessorReserved2
:1;
804 UINT32 ProcessorDs
:1;
805 UINT32 ProcessorAcpi
:1;
806 UINT32 ProcessorMmx
:1;
807 UINT32 ProcessorFxsr
:1;
808 UINT32 ProcessorSse
:1;
809 UINT32 ProcessorSse2
:1;
810 UINT32 ProcessorSs
:1;
811 UINT32 ProcessorReserved3
:1;
812 UINT32 ProcessorTm
:1;
813 UINT32 ProcessorReserved4
:2;
814 } PROCESSOR_FEATURE_FLAGS
;
817 PROCESSOR_SIGNATURE Signature
;
818 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
822 /// Processor Information (Type 4).
824 /// The information in this structure defines the attributes of a single processor;
825 /// a separate structure instance is provided for each system processor socket/slot.
826 /// For example, a system with an IntelDX2 processor would have a single
827 /// structure instance, while a system with an IntelSX2 processor would have a structure
828 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
831 SMBIOS_STRUCTURE Hdr
;
832 SMBIOS_TABLE_STRING Socket
;
833 UINT8 ProcessorType
; ///< The enumeration value from PROCESSOR_TYPE_DATA.
834 UINT8 ProcessorFamily
; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
835 SMBIOS_TABLE_STRING ProcessorManufacture
;
836 PROCESSOR_ID_DATA ProcessorId
;
837 SMBIOS_TABLE_STRING ProcessorVersion
;
838 PROCESSOR_VOLTAGE Voltage
;
839 UINT16 ExternalClock
;
843 UINT8 ProcessorUpgrade
; ///< The enumeration value from PROCESSOR_UPGRADE.
844 UINT16 L1CacheHandle
;
845 UINT16 L2CacheHandle
;
846 UINT16 L3CacheHandle
;
847 SMBIOS_TABLE_STRING SerialNumber
;
848 SMBIOS_TABLE_STRING AssetTag
;
849 SMBIOS_TABLE_STRING PartNumber
;
851 // Add for smbios 2.5
854 UINT8 EnabledCoreCount
;
856 UINT16 ProcessorCharacteristics
;
858 // Add for smbios 2.6
860 UINT16 ProcessorFamily2
;
862 // Add for smbios 3.0
865 UINT16 EnabledCoreCount2
;
867 } SMBIOS_TABLE_TYPE4
;
870 /// Memory Controller Error Detecting Method.
873 ErrorDetectingMethodOther
= 0x01,
874 ErrorDetectingMethodUnknown
= 0x02,
875 ErrorDetectingMethodNone
= 0x03,
876 ErrorDetectingMethodParity
= 0x04,
877 ErrorDetectingMethod32Ecc
= 0x05,
878 ErrorDetectingMethod64Ecc
= 0x06,
879 ErrorDetectingMethod128Ecc
= 0x07,
880 ErrorDetectingMethodCrc
= 0x08
881 } MEMORY_ERROR_DETECT_METHOD
;
884 /// Memory Controller Error Correcting Capability.
890 UINT8 SingleBitErrorCorrect
:1;
891 UINT8 DoubleBitErrorCorrect
:1;
892 UINT8 ErrorScrubbing
:1;
894 } MEMORY_ERROR_CORRECT_CAPABILITY
;
897 /// Memory Controller Information - Interleave Support.
900 MemoryInterleaveOther
= 0x01,
901 MemoryInterleaveUnknown
= 0x02,
902 MemoryInterleaveOneWay
= 0x03,
903 MemoryInterleaveTwoWay
= 0x04,
904 MemoryInterleaveFourWay
= 0x05,
905 MemoryInterleaveEightWay
= 0x06,
906 MemoryInterleaveSixteenWay
= 0x07
907 } MEMORY_SUPPORT_INTERLEAVE_TYPE
;
910 /// Memory Controller Information - Memory Speeds.
922 /// Memory Controller Information (Type 5, Obsolete).
924 /// The information in this structure defines the attributes of the system's memory controller(s)
925 /// and the supported attributes of any memory-modules present in the sockets controlled by
927 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
928 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
929 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
930 /// choose to implement both memory description types to allow existing DMI browsers
931 /// to properly display the system's memory attributes.
934 SMBIOS_STRUCTURE Hdr
;
935 UINT8 ErrDetectMethod
; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
936 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability
;
937 UINT8 SupportInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
938 UINT8 CurrentInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
939 UINT8 MaxMemoryModuleSize
;
940 MEMORY_SPEED_TYPE SupportSpeed
;
941 UINT16 SupportMemoryType
;
942 UINT8 MemoryModuleVoltage
;
943 UINT8 AssociatedMemorySlotNum
;
944 UINT16 MemoryModuleConfigHandles
[1];
945 } SMBIOS_TABLE_TYPE5
;
948 /// Memory Module Information - Memory Types
954 UINT16 FastPageMode
:1;
963 } MEMORY_CURRENT_TYPE
;
966 /// Memory Module Information - Memory Size.
969 UINT8 InstalledOrEnabledSize
:7; ///< Size (n), where 2**n is the size in MB.
970 UINT8 SingleOrDoubleBank
:1;
971 } MEMORY_INSTALLED_ENABLED_SIZE
;
974 /// Memory Module Information (Type 6, Obsolete)
976 /// One Memory Module Information structure is included for each memory-module socket
977 /// in the system. The structure describes the speed, type, size, and error status
978 /// of each system memory module. The supported attributes of each module are described
979 /// by the "owning" Memory Controller Information structure.
980 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
981 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
982 /// and Memory Device (Type 17) structures should be used instead.
985 SMBIOS_STRUCTURE Hdr
;
986 SMBIOS_TABLE_STRING SocketDesignation
;
987 UINT8 BankConnections
;
989 MEMORY_CURRENT_TYPE CurrentMemoryType
;
990 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
991 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
993 } SMBIOS_TABLE_TYPE6
;
996 /// Cache Information - SRAM Type.
1003 UINT16 PipelineBurst
:1;
1004 UINT16 Synchronous
:1;
1005 UINT16 Asynchronous
:1;
1007 } CACHE_SRAM_TYPE_DATA
;
1010 /// Cache Information - Error Correction Type.
1013 CacheErrorOther
= 0x01,
1014 CacheErrorUnknown
= 0x02,
1015 CacheErrorNone
= 0x03,
1016 CacheErrorParity
= 0x04,
1017 CacheErrorSingleBit
= 0x05, ///< ECC
1018 CacheErrorMultiBit
= 0x06 ///< ECC
1019 } CACHE_ERROR_TYPE_DATA
;
1022 /// Cache Information - System Cache Type.
1025 CacheTypeOther
= 0x01,
1026 CacheTypeUnknown
= 0x02,
1027 CacheTypeInstruction
= 0x03,
1028 CacheTypeData
= 0x04,
1029 CacheTypeUnified
= 0x05
1033 /// Cache Information - Associativity.
1036 CacheAssociativityOther
= 0x01,
1037 CacheAssociativityUnknown
= 0x02,
1038 CacheAssociativityDirectMapped
= 0x03,
1039 CacheAssociativity2Way
= 0x04,
1040 CacheAssociativity4Way
= 0x05,
1041 CacheAssociativityFully
= 0x06,
1042 CacheAssociativity8Way
= 0x07,
1043 CacheAssociativity16Way
= 0x08,
1044 CacheAssociativity12Way
= 0x09,
1045 CacheAssociativity24Way
= 0x0A,
1046 CacheAssociativity32Way
= 0x0B,
1047 CacheAssociativity48Way
= 0x0C,
1048 CacheAssociativity64Way
= 0x0D,
1049 CacheAssociativity20Way
= 0x0E
1050 } CACHE_ASSOCIATIVITY_DATA
;
1053 /// Cache Information (Type 7).
1055 /// The information in this structure defines the attributes of CPU cache device in the system.
1056 /// One structure is specified for each such device, whether the device is internal to
1057 /// or external to the CPU module. Cache modules can be associated with a processor structure
1058 /// in one or two ways, depending on the SMBIOS version.
1061 SMBIOS_STRUCTURE Hdr
;
1062 SMBIOS_TABLE_STRING SocketDesignation
;
1063 UINT16 CacheConfiguration
;
1064 UINT16 MaximumCacheSize
;
1065 UINT16 InstalledSize
;
1066 CACHE_SRAM_TYPE_DATA SupportedSRAMType
;
1067 CACHE_SRAM_TYPE_DATA CurrentSRAMType
;
1069 UINT8 ErrorCorrectionType
; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
1070 UINT8 SystemCacheType
; ///< The enumeration value from CACHE_TYPE_DATA.
1071 UINT8 Associativity
; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
1072 } SMBIOS_TABLE_TYPE7
;
1075 /// Port Connector Information - Connector Types.
1078 PortConnectorTypeNone
= 0x00,
1079 PortConnectorTypeCentronics
= 0x01,
1080 PortConnectorTypeMiniCentronics
= 0x02,
1081 PortConnectorTypeProprietary
= 0x03,
1082 PortConnectorTypeDB25Male
= 0x04,
1083 PortConnectorTypeDB25Female
= 0x05,
1084 PortConnectorTypeDB15Male
= 0x06,
1085 PortConnectorTypeDB15Female
= 0x07,
1086 PortConnectorTypeDB9Male
= 0x08,
1087 PortConnectorTypeDB9Female
= 0x09,
1088 PortConnectorTypeRJ11
= 0x0A,
1089 PortConnectorTypeRJ45
= 0x0B,
1090 PortConnectorType50PinMiniScsi
= 0x0C,
1091 PortConnectorTypeMiniDin
= 0x0D,
1092 PortConnectorTypeMicroDin
= 0x0E,
1093 PortConnectorTypePS2
= 0x0F,
1094 PortConnectorTypeInfrared
= 0x10,
1095 PortConnectorTypeHpHil
= 0x11,
1096 PortConnectorTypeUsb
= 0x12,
1097 PortConnectorTypeSsaScsi
= 0x13,
1098 PortConnectorTypeCircularDin8Male
= 0x14,
1099 PortConnectorTypeCircularDin8Female
= 0x15,
1100 PortConnectorTypeOnboardIde
= 0x16,
1101 PortConnectorTypeOnboardFloppy
= 0x17,
1102 PortConnectorType9PinDualInline
= 0x18,
1103 PortConnectorType25PinDualInline
= 0x19,
1104 PortConnectorType50PinDualInline
= 0x1A,
1105 PortConnectorType68PinDualInline
= 0x1B,
1106 PortConnectorTypeOnboardSoundInput
= 0x1C,
1107 PortConnectorTypeMiniCentronicsType14
= 0x1D,
1108 PortConnectorTypeMiniCentronicsType26
= 0x1E,
1109 PortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1110 PortConnectorTypeBNC
= 0x20,
1111 PortConnectorType1394
= 0x21,
1112 PortConnectorTypeSasSata
= 0x22,
1113 PortConnectorTypePC98
= 0xA0,
1114 PortConnectorTypePC98Hireso
= 0xA1,
1115 PortConnectorTypePCH98
= 0xA2,
1116 PortConnectorTypePC98Note
= 0xA3,
1117 PortConnectorTypePC98Full
= 0xA4,
1118 PortConnectorTypeOther
= 0xFF
1119 } MISC_PORT_CONNECTOR_TYPE
;
1122 /// Port Connector Information - Port Types
1125 PortTypeNone
= 0x00,
1126 PortTypeParallelXtAtCompatible
= 0x01,
1127 PortTypeParallelPortPs2
= 0x02,
1128 PortTypeParallelPortEcp
= 0x03,
1129 PortTypeParallelPortEpp
= 0x04,
1130 PortTypeParallelPortEcpEpp
= 0x05,
1131 PortTypeSerialXtAtCompatible
= 0x06,
1132 PortTypeSerial16450Compatible
= 0x07,
1133 PortTypeSerial16550Compatible
= 0x08,
1134 PortTypeSerial16550ACompatible
= 0x09,
1135 PortTypeScsi
= 0x0A,
1136 PortTypeMidi
= 0x0B,
1137 PortTypeJoyStick
= 0x0C,
1138 PortTypeKeyboard
= 0x0D,
1139 PortTypeMouse
= 0x0E,
1140 PortTypeSsaScsi
= 0x0F,
1142 PortTypeFireWire
= 0x11,
1143 PortTypePcmciaTypeI
= 0x12,
1144 PortTypePcmciaTypeII
= 0x13,
1145 PortTypePcmciaTypeIII
= 0x14,
1146 PortTypeCardBus
= 0x15,
1147 PortTypeAccessBusPort
= 0x16,
1148 PortTypeScsiII
= 0x17,
1149 PortTypeScsiWide
= 0x18,
1150 PortTypePC98
= 0x19,
1151 PortTypePC98Hireso
= 0x1A,
1152 PortTypePCH98
= 0x1B,
1153 PortTypeVideoPort
= 0x1C,
1154 PortTypeAudioPort
= 0x1D,
1155 PortTypeModemPort
= 0x1E,
1156 PortTypeNetworkPort
= 0x1F,
1157 PortTypeSata
= 0x20,
1159 PortType8251Compatible
= 0xA0,
1160 PortType8251FifoCompatible
= 0xA1,
1161 PortTypeOther
= 0xFF
1165 /// Port Connector Information (Type 8).
1167 /// The information in this structure defines the attributes of a system port connector,
1168 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
1169 /// are provided. One structure is present for each port provided by the system.
1172 SMBIOS_STRUCTURE Hdr
;
1173 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
1174 UINT8 InternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1175 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
1176 UINT8 ExternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1177 UINT8 PortType
; ///< The enumeration value from MISC_PORT_TYPE.
1178 } SMBIOS_TABLE_TYPE8
;
1181 /// System Slots - Slot Type
1184 SlotTypeOther
= 0x01,
1185 SlotTypeUnknown
= 0x02,
1188 SlotTypeEisa
= 0x05,
1190 SlotTypePcmcia
= 0x07,
1191 SlotTypeVlVesa
= 0x08,
1192 SlotTypeProprietary
= 0x09,
1193 SlotTypeProcessorCardSlot
= 0x0A,
1194 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1195 SlotTypeIORiserCardSlot
= 0x0C,
1196 SlotTypeNuBus
= 0x0D,
1197 SlotTypePci66MhzCapable
= 0x0E,
1199 SlotTypeApg2X
= 0x10,
1200 SlotTypeAgp4X
= 0x11,
1201 SlotTypePciX
= 0x12,
1202 SlotTypeAgp8X
= 0x13,
1203 SlotTypeM2Socket1_DP
= 0x14,
1204 SlotTypeM2Socket1_SD
= 0x15,
1205 SlotTypeM2Socket2
= 0x16,
1206 SlotTypeM2Socket3
= 0x17,
1207 SlotTypeMxmTypeI
= 0x18,
1208 SlotTypeMxmTypeII
= 0x19,
1209 SlotTypeMxmTypeIIIStandard
= 0x1A,
1210 SlotTypeMxmTypeIIIHe
= 0x1B,
1211 SlotTypeMxmTypeIV
= 0x1C,
1212 SlotTypeMxm30TypeA
= 0x1D,
1213 SlotTypeMxm30TypeB
= 0x1E,
1214 SlotTypePciExpressGen2Sff_8639
= 0x1F,
1215 SlotTypePciExpressGen3Sff_8639
= 0x20,
1216 SlotTypePC98C20
= 0xA0,
1217 SlotTypePC98C24
= 0xA1,
1218 SlotTypePC98E
= 0xA2,
1219 SlotTypePC98LocalBus
= 0xA3,
1220 SlotTypePC98Card
= 0xA4,
1221 SlotTypePciExpress
= 0xA5,
1222 SlotTypePciExpressX1
= 0xA6,
1223 SlotTypePciExpressX2
= 0xA7,
1224 SlotTypePciExpressX4
= 0xA8,
1225 SlotTypePciExpressX8
= 0xA9,
1226 SlotTypePciExpressX16
= 0xAA,
1227 SlotTypePciExpressGen2
= 0xAB,
1228 SlotTypePciExpressGen2X1
= 0xAC,
1229 SlotTypePciExpressGen2X2
= 0xAD,
1230 SlotTypePciExpressGen2X4
= 0xAE,
1231 SlotTypePciExpressGen2X8
= 0xAF,
1232 SlotTypePciExpressGen2X16
= 0xB0,
1233 SlotTypePciExpressGen3
= 0xB1,
1234 SlotTypePciExpressGen3X1
= 0xB2,
1235 SlotTypePciExpressGen3X2
= 0xB3,
1236 SlotTypePciExpressGen3X4
= 0xB4,
1237 SlotTypePciExpressGen3X8
= 0xB5,
1238 SlotTypePciExpressGen3X16
= 0xB6
1242 /// System Slots - Slot Data Bus Width.
1245 SlotDataBusWidthOther
= 0x01,
1246 SlotDataBusWidthUnknown
= 0x02,
1247 SlotDataBusWidth8Bit
= 0x03,
1248 SlotDataBusWidth16Bit
= 0x04,
1249 SlotDataBusWidth32Bit
= 0x05,
1250 SlotDataBusWidth64Bit
= 0x06,
1251 SlotDataBusWidth128Bit
= 0x07,
1252 SlotDataBusWidth1X
= 0x08, ///< Or X1
1253 SlotDataBusWidth2X
= 0x09, ///< Or X2
1254 SlotDataBusWidth4X
= 0x0A, ///< Or X4
1255 SlotDataBusWidth8X
= 0x0B, ///< Or X8
1256 SlotDataBusWidth12X
= 0x0C, ///< Or X12
1257 SlotDataBusWidth16X
= 0x0D, ///< Or X16
1258 SlotDataBusWidth32X
= 0x0E ///< Or X32
1259 } MISC_SLOT_DATA_BUS_WIDTH
;
1262 /// System Slots - Current Usage.
1265 SlotUsageOther
= 0x01,
1266 SlotUsageUnknown
= 0x02,
1267 SlotUsageAvailable
= 0x03,
1268 SlotUsageInUse
= 0x04
1272 /// System Slots - Slot Length.
1275 SlotLengthOther
= 0x01,
1276 SlotLengthUnknown
= 0x02,
1277 SlotLengthShort
= 0x03,
1278 SlotLengthLong
= 0x04
1282 /// System Slots - Slot Characteristics 1.
1285 UINT8 CharacteristicsUnknown
:1;
1286 UINT8 Provides50Volts
:1;
1287 UINT8 Provides33Volts
:1;
1288 UINT8 SharedSlot
:1;
1289 UINT8 PcCard16Supported
:1;
1290 UINT8 CardBusSupported
:1;
1291 UINT8 ZoomVideoSupported
:1;
1292 UINT8 ModemRingResumeSupported
:1;
1293 } MISC_SLOT_CHARACTERISTICS1
;
1295 /// System Slots - Slot Characteristics 2.
1298 UINT8 PmeSignalSupported
:1;
1299 UINT8 HotPlugDevicesSupported
:1;
1300 UINT8 SmbusSignalSupported
:1;
1301 UINT8 Reserved
:5; ///< Set to 0.
1302 } MISC_SLOT_CHARACTERISTICS2
;
1305 /// System Slots (Type 9)
1307 /// The information in this structure defines the attributes of a system slot.
1308 /// One structure is provided for each slot in the system.
1312 SMBIOS_STRUCTURE Hdr
;
1313 SMBIOS_TABLE_STRING SlotDesignation
;
1314 UINT8 SlotType
; ///< The enumeration value from MISC_SLOT_TYPE.
1315 UINT8 SlotDataBusWidth
; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1316 UINT8 CurrentUsage
; ///< The enumeration value from MISC_SLOT_USAGE.
1317 UINT8 SlotLength
; ///< The enumeration value from MISC_SLOT_LENGTH.
1319 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1320 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1322 // Add for smbios 2.6
1324 UINT16 SegmentGroupNum
;
1327 } SMBIOS_TABLE_TYPE9
;
1330 /// On Board Devices Information - Device Types.
1333 OnBoardDeviceTypeOther
= 0x01,
1334 OnBoardDeviceTypeUnknown
= 0x02,
1335 OnBoardDeviceTypeVideo
= 0x03,
1336 OnBoardDeviceTypeScsiController
= 0x04,
1337 OnBoardDeviceTypeEthernet
= 0x05,
1338 OnBoardDeviceTypeTokenRing
= 0x06,
1339 OnBoardDeviceTypeSound
= 0x07,
1340 OnBoardDeviceTypePATAController
= 0x08,
1341 OnBoardDeviceTypeSATAController
= 0x09,
1342 OnBoardDeviceTypeSASController
= 0x0A
1343 } MISC_ONBOARD_DEVICE_TYPE
;
1346 /// Device Item Entry
1349 UINT8 DeviceType
; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1350 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1351 SMBIOS_TABLE_STRING DescriptionString
;
1355 /// On Board Devices Information (Type 10, obsolete).
1357 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1358 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1359 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1360 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1361 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1362 /// has some level of control over the enabling of the associated device for use by the system.
1365 SMBIOS_STRUCTURE Hdr
;
1366 DEVICE_STRUCT Device
[1];
1367 } SMBIOS_TABLE_TYPE10
;
1370 /// OEM Strings (Type 11).
1371 /// This structure contains free form strings defined by the OEM. Examples of this are:
1372 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1375 SMBIOS_STRUCTURE Hdr
;
1377 } SMBIOS_TABLE_TYPE11
;
1380 /// System Configuration Options (Type 12).
1382 /// This structure contains information required to configure the base board's Jumpers and Switches.
1385 SMBIOS_STRUCTURE Hdr
;
1387 } SMBIOS_TABLE_TYPE12
;
1391 /// BIOS Language Information (Type 13).
1393 /// The information in this structure defines the installable language attributes of the BIOS.
1396 SMBIOS_STRUCTURE Hdr
;
1397 UINT8 InstallableLanguages
;
1400 SMBIOS_TABLE_STRING CurrentLanguages
;
1401 } SMBIOS_TABLE_TYPE13
;
1404 /// Group Item Entry
1412 /// Group Associations (Type 14).
1414 /// The Group Associations structure is provided for OEMs who want to specify
1415 /// the arrangement or hierarchy of certain components (including other Group Associations)
1416 /// within the system.
1419 SMBIOS_STRUCTURE Hdr
;
1420 SMBIOS_TABLE_STRING GroupName
;
1421 GROUP_STRUCT Group
[1];
1422 } SMBIOS_TABLE_TYPE14
;
1425 /// System Event Log - Event Log Types.
1428 EventLogTypeReserved
= 0x00,
1429 EventLogTypeSingleBitECC
= 0x01,
1430 EventLogTypeMultiBitECC
= 0x02,
1431 EventLogTypeParityMemErr
= 0x03,
1432 EventLogTypeBusTimeOut
= 0x04,
1433 EventLogTypeIOChannelCheck
= 0x05,
1434 EventLogTypeSoftwareNMI
= 0x06,
1435 EventLogTypePOSTMemResize
= 0x07,
1436 EventLogTypePOSTErr
= 0x08,
1437 EventLogTypePCIParityErr
= 0x09,
1438 EventLogTypePCISystemErr
= 0x0A,
1439 EventLogTypeCPUFailure
= 0x0B,
1440 EventLogTypeEISATimeOut
= 0x0C,
1441 EventLogTypeMemLogDisabled
= 0x0D,
1442 EventLogTypeLoggingDisabled
= 0x0E,
1443 EventLogTypeSysLimitExce
= 0x10,
1444 EventLogTypeAsyncHWTimer
= 0x11,
1445 EventLogTypeSysConfigInfo
= 0x12,
1446 EventLogTypeHDInfo
= 0x13,
1447 EventLogTypeSysReconfig
= 0x14,
1448 EventLogTypeUncorrectCPUErr
= 0x15,
1449 EventLogTypeAreaResetAndClr
= 0x16,
1450 EventLogTypeSystemBoot
= 0x17,
1451 EventLogTypeUnused
= 0x18, ///< 0x18 - 0x7F
1452 EventLogTypeAvailForSys
= 0x80, ///< 0x80 - 0xFE
1453 EventLogTypeEndOfLog
= 0xFF
1454 } EVENT_LOG_TYPE_DATA
;
1457 /// System Event Log - Variable Data Format Types.
1460 EventLogVariableNone
= 0x00,
1461 EventLogVariableHandle
= 0x01,
1462 EventLogVariableMutilEvent
= 0x02,
1463 EventLogVariableMutilEventHandle
= 0x03,
1464 EventLogVariablePOSTResultBitmap
= 0x04,
1465 EventLogVariableSysManagementType
= 0x05,
1466 EventLogVariableMutliEventSysManagmentType
= 0x06,
1467 EventLogVariableUnused
= 0x07,
1468 EventLogVariableOEMAssigned
= 0x80
1469 } EVENT_LOG_VARIABLE_DATA
;
1472 /// Event Log Type Descriptors
1475 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1476 UINT8 DataFormatType
;
1480 /// System Event Log (Type 15).
1482 /// The presence of this structure within the SMBIOS data returned for a system indicates
1483 /// that the system supports an event log. An event log is a fixed-length area within a
1484 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1485 /// record, followed by one or more variable-length log records.
1488 SMBIOS_STRUCTURE Hdr
;
1489 UINT16 LogAreaLength
;
1490 UINT16 LogHeaderStartOffset
;
1491 UINT16 LogDataStartOffset
;
1494 UINT32 LogChangeToken
;
1495 UINT32 AccessMethodAddress
;
1496 UINT8 LogHeaderFormat
;
1497 UINT8 NumberOfSupportedLogTypeDescriptors
;
1498 UINT8 LengthOfLogTypeDescriptor
;
1499 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
1500 } SMBIOS_TABLE_TYPE15
;
1503 /// Physical Memory Array - Location.
1506 MemoryArrayLocationOther
= 0x01,
1507 MemoryArrayLocationUnknown
= 0x02,
1508 MemoryArrayLocationSystemBoard
= 0x03,
1509 MemoryArrayLocationIsaAddonCard
= 0x04,
1510 MemoryArrayLocationEisaAddonCard
= 0x05,
1511 MemoryArrayLocationPciAddonCard
= 0x06,
1512 MemoryArrayLocationMcaAddonCard
= 0x07,
1513 MemoryArrayLocationPcmciaAddonCard
= 0x08,
1514 MemoryArrayLocationProprietaryAddonCard
= 0x09,
1515 MemoryArrayLocationNuBus
= 0x0A,
1516 MemoryArrayLocationPc98C20AddonCard
= 0xA0,
1517 MemoryArrayLocationPc98C24AddonCard
= 0xA1,
1518 MemoryArrayLocationPc98EAddonCard
= 0xA2,
1519 MemoryArrayLocationPc98LocalBusAddonCard
= 0xA3
1520 } MEMORY_ARRAY_LOCATION
;
1523 /// Physical Memory Array - Use.
1526 MemoryArrayUseOther
= 0x01,
1527 MemoryArrayUseUnknown
= 0x02,
1528 MemoryArrayUseSystemMemory
= 0x03,
1529 MemoryArrayUseVideoMemory
= 0x04,
1530 MemoryArrayUseFlashMemory
= 0x05,
1531 MemoryArrayUseNonVolatileRam
= 0x06,
1532 MemoryArrayUseCacheMemory
= 0x07
1536 /// Physical Memory Array - Error Correction Types.
1539 MemoryErrorCorrectionOther
= 0x01,
1540 MemoryErrorCorrectionUnknown
= 0x02,
1541 MemoryErrorCorrectionNone
= 0x03,
1542 MemoryErrorCorrectionParity
= 0x04,
1543 MemoryErrorCorrectionSingleBitEcc
= 0x05,
1544 MemoryErrorCorrectionMultiBitEcc
= 0x06,
1545 MemoryErrorCorrectionCrc
= 0x07
1546 } MEMORY_ERROR_CORRECTION
;
1549 /// Physical Memory Array (Type 16).
1551 /// This structure describes a collection of memory devices that operate
1552 /// together to form a memory address space.
1555 SMBIOS_STRUCTURE Hdr
;
1556 UINT8 Location
; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1557 UINT8 Use
; ///< The enumeration value from MEMORY_ARRAY_USE.
1558 UINT8 MemoryErrorCorrection
; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1559 UINT32 MaximumCapacity
;
1560 UINT16 MemoryErrorInformationHandle
;
1561 UINT16 NumberOfMemoryDevices
;
1563 // Add for smbios 2.7
1565 UINT64 ExtendedMaximumCapacity
;
1566 } SMBIOS_TABLE_TYPE16
;
1569 /// Memory Device - Form Factor.
1572 MemoryFormFactorOther
= 0x01,
1573 MemoryFormFactorUnknown
= 0x02,
1574 MemoryFormFactorSimm
= 0x03,
1575 MemoryFormFactorSip
= 0x04,
1576 MemoryFormFactorChip
= 0x05,
1577 MemoryFormFactorDip
= 0x06,
1578 MemoryFormFactorZip
= 0x07,
1579 MemoryFormFactorProprietaryCard
= 0x08,
1580 MemoryFormFactorDimm
= 0x09,
1581 MemoryFormFactorTsop
= 0x0A,
1582 MemoryFormFactorRowOfChips
= 0x0B,
1583 MemoryFormFactorRimm
= 0x0C,
1584 MemoryFormFactorSodimm
= 0x0D,
1585 MemoryFormFactorSrimm
= 0x0E,
1586 MemoryFormFactorFbDimm
= 0x0F
1587 } MEMORY_FORM_FACTOR
;
1590 /// Memory Device - Type
1593 MemoryTypeOther
= 0x01,
1594 MemoryTypeUnknown
= 0x02,
1595 MemoryTypeDram
= 0x03,
1596 MemoryTypeEdram
= 0x04,
1597 MemoryTypeVram
= 0x05,
1598 MemoryTypeSram
= 0x06,
1599 MemoryTypeRam
= 0x07,
1600 MemoryTypeRom
= 0x08,
1601 MemoryTypeFlash
= 0x09,
1602 MemoryTypeEeprom
= 0x0A,
1603 MemoryTypeFeprom
= 0x0B,
1604 MemoryTypeEprom
= 0x0C,
1605 MemoryTypeCdram
= 0x0D,
1606 MemoryType3Dram
= 0x0E,
1607 MemoryTypeSdram
= 0x0F,
1608 MemoryTypeSgram
= 0x10,
1609 MemoryTypeRdram
= 0x11,
1610 MemoryTypeDdr
= 0x12,
1611 MemoryTypeDdr2
= 0x13,
1612 MemoryTypeDdr2FbDimm
= 0x14,
1613 MemoryTypeDdr3
= 0x18,
1614 MemoryTypeFbd2
= 0x19,
1615 MemoryTypeDdr4
= 0x1A,
1616 MemoryTypeLpddr
= 0x1B,
1617 MemoryTypeLpddr2
= 0x1C,
1618 MemoryTypeLpddr3
= 0x1D,
1619 MemoryTypeLpddr4
= 0x1E
1620 } MEMORY_DEVICE_TYPE
;
1626 UINT16 FastPaged
:1;
1627 UINT16 StaticColumn
:1;
1628 UINT16 PseudoStatic
:1;
1630 UINT16 Synchronous
:1;
1633 UINT16 WindowDram
:1;
1634 UINT16 CacheDram
:1;
1635 UINT16 Nonvolatile
:1;
1636 UINT16 Registered
:1;
1637 UINT16 Unbuffered
:1;
1639 } MEMORY_DEVICE_TYPE_DETAIL
;
1642 /// Memory Device (Type 17).
1644 /// This structure describes a single memory device that is part of
1645 /// a larger Physical Memory Array (Type 16).
1646 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1647 /// includes a Memory Device structure instance for each slot, whether or not the
1648 /// socket is currently populated.
1651 SMBIOS_STRUCTURE Hdr
;
1652 UINT16 MemoryArrayHandle
;
1653 UINT16 MemoryErrorInformationHandle
;
1657 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
1659 SMBIOS_TABLE_STRING DeviceLocator
;
1660 SMBIOS_TABLE_STRING BankLocator
;
1661 UINT8 MemoryType
; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1662 MEMORY_DEVICE_TYPE_DETAIL TypeDetail
;
1664 SMBIOS_TABLE_STRING Manufacturer
;
1665 SMBIOS_TABLE_STRING SerialNumber
;
1666 SMBIOS_TABLE_STRING AssetTag
;
1667 SMBIOS_TABLE_STRING PartNumber
;
1669 // Add for smbios 2.6
1673 // Add for smbios 2.7
1675 UINT32 ExtendedSize
;
1676 UINT16 ConfiguredMemoryClockSpeed
;
1678 // Add for smbios 2.8.0
1680 UINT16 MinimumVoltage
;
1681 UINT16 MaximumVoltage
;
1682 UINT16 ConfiguredVoltage
;
1683 } SMBIOS_TABLE_TYPE17
;
1686 /// 32-bit Memory Error Information - Error Type.
1689 MemoryErrorOther
= 0x01,
1690 MemoryErrorUnknown
= 0x02,
1691 MemoryErrorOk
= 0x03,
1692 MemoryErrorBadRead
= 0x04,
1693 MemoryErrorParity
= 0x05,
1694 MemoryErrorSigleBit
= 0x06,
1695 MemoryErrorDoubleBit
= 0x07,
1696 MemoryErrorMultiBit
= 0x08,
1697 MemoryErrorNibble
= 0x09,
1698 MemoryErrorChecksum
= 0x0A,
1699 MemoryErrorCrc
= 0x0B,
1700 MemoryErrorCorrectSingleBit
= 0x0C,
1701 MemoryErrorCorrected
= 0x0D,
1702 MemoryErrorUnCorrectable
= 0x0E
1703 } MEMORY_ERROR_TYPE
;
1706 /// 32-bit Memory Error Information - Error Granularity.
1709 MemoryGranularityOther
= 0x01,
1710 MemoryGranularityOtherUnknown
= 0x02,
1711 MemoryGranularityDeviceLevel
= 0x03,
1712 MemoryGranularityMemPartitionLevel
= 0x04
1713 } MEMORY_ERROR_GRANULARITY
;
1716 /// 32-bit Memory Error Information - Error Operation.
1719 MemoryErrorOperationOther
= 0x01,
1720 MemoryErrorOperationUnknown
= 0x02,
1721 MemoryErrorOperationRead
= 0x03,
1722 MemoryErrorOperationWrite
= 0x04,
1723 MemoryErrorOperationPartialWrite
= 0x05
1724 } MEMORY_ERROR_OPERATION
;
1727 /// 32-bit Memory Error Information (Type 18).
1729 /// This structure identifies the specifics of an error that might be detected
1730 /// within a Physical Memory Array.
1733 SMBIOS_STRUCTURE Hdr
;
1734 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1735 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1736 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1737 UINT32 VendorSyndrome
;
1738 UINT32 MemoryArrayErrorAddress
;
1739 UINT32 DeviceErrorAddress
;
1740 UINT32 ErrorResolution
;
1741 } SMBIOS_TABLE_TYPE18
;
1744 /// Memory Array Mapped Address (Type 19).
1746 /// This structure provides the address mapping for a Physical Memory Array.
1747 /// One structure is present for each contiguous address range described.
1750 SMBIOS_STRUCTURE Hdr
;
1751 UINT32 StartingAddress
;
1752 UINT32 EndingAddress
;
1753 UINT16 MemoryArrayHandle
;
1754 UINT8 PartitionWidth
;
1756 // Add for smbios 2.7
1758 UINT64 ExtendedStartingAddress
;
1759 UINT64 ExtendedEndingAddress
;
1760 } SMBIOS_TABLE_TYPE19
;
1763 /// Memory Device Mapped Address (Type 20).
1765 /// This structure maps memory address space usually to a device-level granularity.
1766 /// One structure is present for each contiguous address range described.
1769 SMBIOS_STRUCTURE Hdr
;
1770 UINT32 StartingAddress
;
1771 UINT32 EndingAddress
;
1772 UINT16 MemoryDeviceHandle
;
1773 UINT16 MemoryArrayMappedAddressHandle
;
1774 UINT8 PartitionRowPosition
;
1775 UINT8 InterleavePosition
;
1776 UINT8 InterleavedDataDepth
;
1778 // Add for smbios 2.7
1780 UINT64 ExtendedStartingAddress
;
1781 UINT64 ExtendedEndingAddress
;
1782 } SMBIOS_TABLE_TYPE20
;
1785 /// Built-in Pointing Device - Type
1788 PointingDeviceTypeOther
= 0x01,
1789 PointingDeviceTypeUnknown
= 0x02,
1790 PointingDeviceTypeMouse
= 0x03,
1791 PointingDeviceTypeTrackBall
= 0x04,
1792 PointingDeviceTypeTrackPoint
= 0x05,
1793 PointingDeviceTypeGlidePoint
= 0x06,
1794 PointingDeviceTouchPad
= 0x07,
1795 PointingDeviceTouchScreen
= 0x08,
1796 PointingDeviceOpticalSensor
= 0x09
1797 } BUILTIN_POINTING_DEVICE_TYPE
;
1800 /// Built-in Pointing Device - Interface.
1803 PointingDeviceInterfaceOther
= 0x01,
1804 PointingDeviceInterfaceUnknown
= 0x02,
1805 PointingDeviceInterfaceSerial
= 0x03,
1806 PointingDeviceInterfacePs2
= 0x04,
1807 PointingDeviceInterfaceInfrared
= 0x05,
1808 PointingDeviceInterfaceHpHil
= 0x06,
1809 PointingDeviceInterfaceBusMouse
= 0x07,
1810 PointingDeviceInterfaceADB
= 0x08,
1811 PointingDeviceInterfaceBusMouseDB9
= 0xA0,
1812 PointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
1813 PointingDeviceInterfaceUsb
= 0xA2
1814 } BUILTIN_POINTING_DEVICE_INTERFACE
;
1817 /// Built-in Pointing Device (Type 21).
1819 /// This structure describes the attributes of the built-in pointing device for the
1820 /// system. The presence of this structure does not imply that the built-in
1821 /// pointing device is active for the system's use!
1824 SMBIOS_STRUCTURE Hdr
;
1825 UINT8 Type
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
1826 UINT8 Interface
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
1827 UINT8 NumberOfButtons
;
1828 } SMBIOS_TABLE_TYPE21
;
1831 /// Portable Battery - Device Chemistry
1834 PortableBatteryDeviceChemistryOther
= 0x01,
1835 PortableBatteryDeviceChemistryUnknown
= 0x02,
1836 PortableBatteryDeviceChemistryLeadAcid
= 0x03,
1837 PortableBatteryDeviceChemistryNickelCadmium
= 0x04,
1838 PortableBatteryDeviceChemistryNickelMetalHydride
= 0x05,
1839 PortableBatteryDeviceChemistryLithiumIon
= 0x06,
1840 PortableBatteryDeviceChemistryZincAir
= 0x07,
1841 PortableBatteryDeviceChemistryLithiumPolymer
= 0x08
1842 } PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
1845 /// Portable Battery (Type 22).
1847 /// This structure describes the attributes of the portable battery(s) for the system.
1848 /// The structure contains the static attributes for the group. Each structure describes
1849 /// a single battery pack's attributes.
1852 SMBIOS_STRUCTURE Hdr
;
1853 SMBIOS_TABLE_STRING Location
;
1854 SMBIOS_TABLE_STRING Manufacturer
;
1855 SMBIOS_TABLE_STRING ManufactureDate
;
1856 SMBIOS_TABLE_STRING SerialNumber
;
1857 SMBIOS_TABLE_STRING DeviceName
;
1858 UINT8 DeviceChemistry
; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
1859 UINT16 DeviceCapacity
;
1860 UINT16 DesignVoltage
;
1861 SMBIOS_TABLE_STRING SBDSVersionNumber
;
1862 UINT8 MaximumErrorInBatteryData
;
1863 UINT16 SBDSSerialNumber
;
1864 UINT16 SBDSManufactureDate
;
1865 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
1866 UINT8 DesignCapacityMultiplier
;
1868 } SMBIOS_TABLE_TYPE22
;
1871 /// System Reset (Type 23)
1873 /// This structure describes whether Automatic System Reset functions enabled (Status).
1874 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
1875 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
1876 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
1877 /// the system will re-boot according to the Boot Option at Limit.
1880 SMBIOS_STRUCTURE Hdr
;
1884 UINT16 TimerInterval
;
1886 } SMBIOS_TABLE_TYPE23
;
1889 /// Hardware Security (Type 24).
1891 /// This structure describes the system-wide hardware security settings.
1894 SMBIOS_STRUCTURE Hdr
;
1895 UINT8 HardwareSecuritySettings
;
1896 } SMBIOS_TABLE_TYPE24
;
1899 /// System Power Controls (Type 25).
1901 /// This structure describes the attributes for controlling the main power supply to the system.
1902 /// Software that interprets this structure uses the month, day, hour, minute, and second values
1903 /// to determine the number of seconds until the next power-on of the system. The presence of
1904 /// this structure implies that a timed power-on facility is available for the system.
1907 SMBIOS_STRUCTURE Hdr
;
1908 UINT8 NextScheduledPowerOnMonth
;
1909 UINT8 NextScheduledPowerOnDayOfMonth
;
1910 UINT8 NextScheduledPowerOnHour
;
1911 UINT8 NextScheduledPowerOnMinute
;
1912 UINT8 NextScheduledPowerOnSecond
;
1913 } SMBIOS_TABLE_TYPE25
;
1916 /// Voltage Probe - Location and Status.
1919 UINT8 VoltageProbeSite
:5;
1920 UINT8 VoltageProbeStatus
:3;
1921 } MISC_VOLTAGE_PROBE_LOCATION
;
1924 /// Voltage Probe (Type 26)
1926 /// This describes the attributes for a voltage probe in the system.
1927 /// Each structure describes a single voltage probe.
1930 SMBIOS_STRUCTURE Hdr
;
1931 SMBIOS_TABLE_STRING Description
;
1932 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
1933 UINT16 MaximumValue
;
1934 UINT16 MinimumValue
;
1939 UINT16 NominalValue
;
1940 } SMBIOS_TABLE_TYPE26
;
1943 /// Cooling Device - Device Type and Status.
1946 UINT8 CoolingDevice
:5;
1947 UINT8 CoolingDeviceStatus
:3;
1948 } MISC_COOLING_DEVICE_TYPE
;
1951 /// Cooling Device (Type 27)
1953 /// This structure describes the attributes for a cooling device in the system.
1954 /// Each structure describes a single cooling device.
1957 SMBIOS_STRUCTURE Hdr
;
1958 UINT16 TemperatureProbeHandle
;
1959 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
1960 UINT8 CoolingUnitGroup
;
1962 UINT16 NominalSpeed
;
1964 // Add for smbios 2.7
1966 SMBIOS_TABLE_STRING Description
;
1967 } SMBIOS_TABLE_TYPE27
;
1970 /// Temperature Probe - Location and Status.
1973 UINT8 TemperatureProbeSite
:5;
1974 UINT8 TemperatureProbeStatus
:3;
1975 } MISC_TEMPERATURE_PROBE_LOCATION
;
1978 /// Temperature Probe (Type 28).
1980 /// This structure describes the attributes for a temperature probe in the system.
1981 /// Each structure describes a single temperature probe.
1984 SMBIOS_STRUCTURE Hdr
;
1985 SMBIOS_TABLE_STRING Description
;
1986 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
1987 UINT16 MaximumValue
;
1988 UINT16 MinimumValue
;
1993 UINT16 NominalValue
;
1994 } SMBIOS_TABLE_TYPE28
;
1997 /// Electrical Current Probe - Location and Status.
2000 UINT8 ElectricalCurrentProbeSite
:5;
2001 UINT8 ElectricalCurrentProbeStatus
:3;
2002 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2005 /// Electrical Current Probe (Type 29).
2007 /// This structure describes the attributes for an electrical current probe in the system.
2008 /// Each structure describes a single electrical current probe.
2011 SMBIOS_STRUCTURE Hdr
;
2012 SMBIOS_TABLE_STRING Description
;
2013 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
2014 UINT16 MaximumValue
;
2015 UINT16 MinimumValue
;
2020 UINT16 NominalValue
;
2021 } SMBIOS_TABLE_TYPE29
;
2024 /// Out-of-Band Remote Access (Type 30).
2026 /// This structure describes the attributes and policy settings of a hardware facility
2027 /// that may be used to gain remote access to a hardware system when the operating system
2028 /// is not available due to power-down status, hardware failures, or boot failures.
2031 SMBIOS_STRUCTURE Hdr
;
2032 SMBIOS_TABLE_STRING ManufacturerName
;
2034 } SMBIOS_TABLE_TYPE30
;
2037 /// Boot Integrity Services (BIS) Entry Point (Type 31).
2039 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
2042 SMBIOS_STRUCTURE Hdr
;
2050 } SMBIOS_TABLE_TYPE31
;
2053 /// System Boot Information - System Boot Status.
2056 BootInformationStatusNoError
= 0x00,
2057 BootInformationStatusNoBootableMedia
= 0x01,
2058 BootInformationStatusNormalOSFailedLoading
= 0x02,
2059 BootInformationStatusFirmwareDetectedFailure
= 0x03,
2060 BootInformationStatusOSDetectedFailure
= 0x04,
2061 BootInformationStatusUserRequestedBoot
= 0x05,
2062 BootInformationStatusSystemSecurityViolation
= 0x06,
2063 BootInformationStatusPreviousRequestedImage
= 0x07,
2064 BootInformationStatusWatchdogTimerExpired
= 0x08,
2065 BootInformationStatusStartReserved
= 0x09,
2066 BootInformationStatusStartOemSpecific
= 0x80,
2067 BootInformationStatusStartProductSpecific
= 0xC0
2068 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2071 /// System Boot Information (Type 32).
2073 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
2074 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
2075 /// application via this structure. When used in the PXE environment, for example,
2076 /// this code identifies the reason the PXE was initiated and can be used by boot-image
2077 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
2078 /// could choose to automatically download a hardware-diagnostic image to a client whose
2079 /// reason code indicated either a firmware- or operating system-detected hardware failure.
2082 SMBIOS_STRUCTURE Hdr
;
2084 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
2085 } SMBIOS_TABLE_TYPE32
;
2088 /// 64-bit Memory Error Information (Type 33).
2090 /// This structure describes an error within a Physical Memory Array,
2091 /// when the error address is above 4G (0xFFFFFFFF).
2094 SMBIOS_STRUCTURE Hdr
;
2095 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
2096 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
2097 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
2098 UINT32 VendorSyndrome
;
2099 UINT64 MemoryArrayErrorAddress
;
2100 UINT64 DeviceErrorAddress
;
2101 UINT32 ErrorResolution
;
2102 } SMBIOS_TABLE_TYPE33
;
2105 /// Management Device - Type.
2108 ManagementDeviceTypeOther
= 0x01,
2109 ManagementDeviceTypeUnknown
= 0x02,
2110 ManagementDeviceTypeLm75
= 0x03,
2111 ManagementDeviceTypeLm78
= 0x04,
2112 ManagementDeviceTypeLm79
= 0x05,
2113 ManagementDeviceTypeLm80
= 0x06,
2114 ManagementDeviceTypeLm81
= 0x07,
2115 ManagementDeviceTypeAdm9240
= 0x08,
2116 ManagementDeviceTypeDs1780
= 0x09,
2117 ManagementDeviceTypeMaxim1617
= 0x0A,
2118 ManagementDeviceTypeGl518Sm
= 0x0B,
2119 ManagementDeviceTypeW83781D
= 0x0C,
2120 ManagementDeviceTypeHt82H791
= 0x0D
2121 } MISC_MANAGEMENT_DEVICE_TYPE
;
2124 /// Management Device - Address Type.
2127 ManagementDeviceAddressTypeOther
= 0x01,
2128 ManagementDeviceAddressTypeUnknown
= 0x02,
2129 ManagementDeviceAddressTypeIOPort
= 0x03,
2130 ManagementDeviceAddressTypeMemory
= 0x04,
2131 ManagementDeviceAddressTypeSmbus
= 0x05
2132 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2135 /// Management Device (Type 34).
2137 /// The information in this structure defines the attributes of a Management Device.
2138 /// A Management Device might control one or more fans or voltage, current, or temperature
2139 /// probes as defined by one or more Management Device Component structures.
2142 SMBIOS_STRUCTURE Hdr
;
2143 SMBIOS_TABLE_STRING Description
;
2144 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
2146 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
2147 } SMBIOS_TABLE_TYPE34
;
2150 /// Management Device Component (Type 35)
2152 /// This structure associates a cooling device or environmental probe with structures
2153 /// that define the controlling hardware device and (optionally) the component's thresholds.
2156 SMBIOS_STRUCTURE Hdr
;
2157 SMBIOS_TABLE_STRING Description
;
2158 UINT16 ManagementDeviceHandle
;
2159 UINT16 ComponentHandle
;
2160 UINT16 ThresholdHandle
;
2161 } SMBIOS_TABLE_TYPE35
;
2164 /// Management Device Threshold Data (Type 36).
2166 /// The information in this structure defines threshold information for
2167 /// a component (probe or cooling-unit) contained within a Management Device.
2170 SMBIOS_STRUCTURE Hdr
;
2171 UINT16 LowerThresholdNonCritical
;
2172 UINT16 UpperThresholdNonCritical
;
2173 UINT16 LowerThresholdCritical
;
2174 UINT16 UpperThresholdCritical
;
2175 UINT16 LowerThresholdNonRecoverable
;
2176 UINT16 UpperThresholdNonRecoverable
;
2177 } SMBIOS_TABLE_TYPE36
;
2180 /// Memory Channel Entry.
2184 UINT16 DeviceHandle
;
2188 /// Memory Channel - Channel Type.
2191 MemoryChannelTypeOther
= 0x01,
2192 MemoryChannelTypeUnknown
= 0x02,
2193 MemoryChannelTypeRambus
= 0x03,
2194 MemoryChannelTypeSyncLink
= 0x04
2195 } MEMORY_CHANNEL_TYPE
;
2198 /// Memory Channel (Type 37)
2200 /// The information in this structure provides the correlation between a Memory Channel
2201 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
2202 /// The sum of all device loads cannot exceed the channel's defined maximum.
2205 SMBIOS_STRUCTURE Hdr
;
2207 UINT8 MaximumChannelLoad
;
2208 UINT8 MemoryDeviceCount
;
2209 MEMORY_DEVICE MemoryDevice
[1];
2210 } SMBIOS_TABLE_TYPE37
;
2213 /// IPMI Device Information - BMC Interface Type
2216 IPMIDeviceInfoInterfaceTypeUnknown
= 0x00,
2217 IPMIDeviceInfoInterfaceTypeKCS
= 0x01, ///< The Keyboard Controller Style.
2218 IPMIDeviceInfoInterfaceTypeSMIC
= 0x02, ///< The Server Management Interface Chip.
2219 IPMIDeviceInfoInterfaceTypeBT
= 0x03, ///< The Block Transfer
2220 IPMIDeviceInfoInterfaceTypeReserved
= 0x04
2221 } BMC_INTERFACE_TYPE
;
2224 /// IPMI Device Information (Type 38).
2226 /// The information in this structure defines the attributes of an
2227 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
2229 /// The Type 42 structure can also be used to describe a physical management controller
2230 /// host interface and one or more protocols that share that interface. If IPMI is not
2231 /// shared with other protocols, either the Type 38 or Type 42 structures can be used.
2232 /// Providing Type 38 is recommended for backward compatibility.
2235 SMBIOS_STRUCTURE Hdr
;
2236 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
2237 UINT8 IPMISpecificationRevision
;
2238 UINT8 I2CSlaveAddress
;
2239 UINT8 NVStorageDeviceAddress
;
2241 UINT8 BaseAddressModifier_InterruptInfo
;
2242 UINT8 InterruptNumber
;
2243 } SMBIOS_TABLE_TYPE38
;
2246 /// System Power Supply - Power Supply Characteristics.
2249 UINT16 PowerSupplyHotReplaceable
:1;
2250 UINT16 PowerSupplyPresent
:1;
2251 UINT16 PowerSupplyUnplugged
:1;
2252 UINT16 InputVoltageRangeSwitch
:4;
2253 UINT16 PowerSupplyStatus
:3;
2254 UINT16 PowerSupplyType
:4;
2256 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2259 /// System Power Supply (Type 39).
2261 /// This structure identifies attributes of a system power supply. One instance
2262 /// of this record is present for each possible power supply in a system.
2265 SMBIOS_STRUCTURE Hdr
;
2266 UINT8 PowerUnitGroup
;
2267 SMBIOS_TABLE_STRING Location
;
2268 SMBIOS_TABLE_STRING DeviceName
;
2269 SMBIOS_TABLE_STRING Manufacturer
;
2270 SMBIOS_TABLE_STRING SerialNumber
;
2271 SMBIOS_TABLE_STRING AssetTagNumber
;
2272 SMBIOS_TABLE_STRING ModelPartNumber
;
2273 SMBIOS_TABLE_STRING RevisionLevel
;
2274 UINT16 MaxPowerCapacity
;
2275 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2276 UINT16 InputVoltageProbeHandle
;
2277 UINT16 CoolingDeviceHandle
;
2278 UINT16 InputCurrentProbeHandle
;
2279 } SMBIOS_TABLE_TYPE39
;
2282 /// Additional Information Entry Format.
2286 UINT16 ReferencedHandle
;
2287 UINT8 ReferencedOffset
;
2288 SMBIOS_TABLE_STRING EntryString
;
2290 }ADDITIONAL_INFORMATION_ENTRY
;
2293 /// Additional Information (Type 40).
2295 /// This structure is intended to provide additional information for handling unspecified
2296 /// enumerated values and interim field updates in another structure.
2299 SMBIOS_STRUCTURE Hdr
;
2300 UINT8 NumberOfAdditionalInformationEntries
;
2301 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2302 } SMBIOS_TABLE_TYPE40
;
2305 /// Onboard Devices Extended Information - Onboard Device Types.
2308 OnBoardDeviceExtendedTypeOther
= 0x01,
2309 OnBoardDeviceExtendedTypeUnknown
= 0x02,
2310 OnBoardDeviceExtendedTypeVideo
= 0x03,
2311 OnBoardDeviceExtendedTypeScsiController
= 0x04,
2312 OnBoardDeviceExtendedTypeEthernet
= 0x05,
2313 OnBoardDeviceExtendedTypeTokenRing
= 0x06,
2314 OnBoardDeviceExtendedTypeSound
= 0x07,
2315 OnBoardDeviceExtendedTypePATAController
= 0x08,
2316 OnBoardDeviceExtendedTypeSATAController
= 0x09,
2317 OnBoardDeviceExtendedTypeSASController
= 0x0A
2318 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE
;
2321 /// Onboard Devices Extended Information (Type 41).
2323 /// The information in this structure defines the attributes of devices that
2324 /// are onboard (soldered onto) a system element, usually the baseboard.
2325 /// In general, an entry in this table implies that the BIOS has some level of
2326 /// control over the enabling of the associated device for use by the system.
2329 SMBIOS_STRUCTURE Hdr
;
2330 SMBIOS_TABLE_STRING ReferenceDesignation
;
2331 UINT8 DeviceType
; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2332 UINT8 DeviceTypeInstance
;
2333 UINT16 SegmentGroupNum
;
2336 } SMBIOS_TABLE_TYPE41
;
2339 /// Management Controller Host Interface (Type 42).
2341 /// The information in this structure defines the attributes of a Management
2342 /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.
2344 /// Type 42 should be used for management controller host interfaces that use protocols
2345 /// other than IPMI or that use multiple protocols on a single host interface type.
2347 /// This structure should also be provided if IPMI is shared with other protocols
2348 /// over the same interface hardware. If IPMI is not shared with other protocols,
2349 /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is
2350 /// recommended for backward compatibility. The structures are not required to
2351 /// be mutually exclusive. Type 38 and Type 42 structures may be implemented
2352 /// simultaneously to provide backward compatibility with IPMI applications or drivers
2353 /// that do not yet recognize the Type 42 structure.
2356 SMBIOS_STRUCTURE Hdr
;
2357 UINT8 InterfaceType
;
2358 UINT8 MCHostInterfaceData
[1]; ///< This field has a minimum of four bytes
2359 } SMBIOS_TABLE_TYPE42
;
2362 /// Inactive (Type 126)
2365 SMBIOS_STRUCTURE Hdr
;
2366 } SMBIOS_TABLE_TYPE126
;
2369 /// End-of-Table (Type 127)
2372 SMBIOS_STRUCTURE Hdr
;
2373 } SMBIOS_TABLE_TYPE127
;
2376 /// Union of all the possible SMBIOS record types.
2379 SMBIOS_STRUCTURE
*Hdr
;
2380 SMBIOS_TABLE_TYPE0
*Type0
;
2381 SMBIOS_TABLE_TYPE1
*Type1
;
2382 SMBIOS_TABLE_TYPE2
*Type2
;
2383 SMBIOS_TABLE_TYPE3
*Type3
;
2384 SMBIOS_TABLE_TYPE4
*Type4
;
2385 SMBIOS_TABLE_TYPE5
*Type5
;
2386 SMBIOS_TABLE_TYPE6
*Type6
;
2387 SMBIOS_TABLE_TYPE7
*Type7
;
2388 SMBIOS_TABLE_TYPE8
*Type8
;
2389 SMBIOS_TABLE_TYPE9
*Type9
;
2390 SMBIOS_TABLE_TYPE10
*Type10
;
2391 SMBIOS_TABLE_TYPE11
*Type11
;
2392 SMBIOS_TABLE_TYPE12
*Type12
;
2393 SMBIOS_TABLE_TYPE13
*Type13
;
2394 SMBIOS_TABLE_TYPE14
*Type14
;
2395 SMBIOS_TABLE_TYPE15
*Type15
;
2396 SMBIOS_TABLE_TYPE16
*Type16
;
2397 SMBIOS_TABLE_TYPE17
*Type17
;
2398 SMBIOS_TABLE_TYPE18
*Type18
;
2399 SMBIOS_TABLE_TYPE19
*Type19
;
2400 SMBIOS_TABLE_TYPE20
*Type20
;
2401 SMBIOS_TABLE_TYPE21
*Type21
;
2402 SMBIOS_TABLE_TYPE22
*Type22
;
2403 SMBIOS_TABLE_TYPE23
*Type23
;
2404 SMBIOS_TABLE_TYPE24
*Type24
;
2405 SMBIOS_TABLE_TYPE25
*Type25
;
2406 SMBIOS_TABLE_TYPE26
*Type26
;
2407 SMBIOS_TABLE_TYPE27
*Type27
;
2408 SMBIOS_TABLE_TYPE28
*Type28
;
2409 SMBIOS_TABLE_TYPE29
*Type29
;
2410 SMBIOS_TABLE_TYPE30
*Type30
;
2411 SMBIOS_TABLE_TYPE31
*Type31
;
2412 SMBIOS_TABLE_TYPE32
*Type32
;
2413 SMBIOS_TABLE_TYPE33
*Type33
;
2414 SMBIOS_TABLE_TYPE34
*Type34
;
2415 SMBIOS_TABLE_TYPE35
*Type35
;
2416 SMBIOS_TABLE_TYPE36
*Type36
;
2417 SMBIOS_TABLE_TYPE37
*Type37
;
2418 SMBIOS_TABLE_TYPE38
*Type38
;
2419 SMBIOS_TABLE_TYPE39
*Type39
;
2420 SMBIOS_TABLE_TYPE40
*Type40
;
2421 SMBIOS_TABLE_TYPE41
*Type41
;
2422 SMBIOS_TABLE_TYPE42
*Type42
;
2423 SMBIOS_TABLE_TYPE126
*Type126
;
2424 SMBIOS_TABLE_TYPE127
*Type127
;
2426 } SMBIOS_STRUCTURE_POINTER
;