2 Industry Standard Definitions of SMBIOS Table Specification v3.5.0.
4 Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
6 (C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR>
7 Copyright (c) 2022, AMD Incorporated. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #ifndef __SMBIOS_STANDARD_H__
13 #define __SMBIOS_STANDARD_H__
16 /// Reference SMBIOS 2.6, chapter 3.1.2.
17 /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
18 /// use by this specification.
20 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
23 /// Reference SMBIOS 2.7, chapter 6.1.2.
24 /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its
25 /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."
26 /// This number is not used for any other purpose by the SMBIOS specification.
28 #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
31 /// Reference SMBIOS 2.6, chapter 3.1.3.
32 /// Each text string is limited to 64 significant characters due to system MIF limitations.
33 /// Reference SMBIOS 2.7, chapter 6.1.3.
34 /// It will have no limit on the length of each individual text string.
36 #define SMBIOS_STRING_MAX_LENGTH 64
39 // The length of the entire structure table (including all strings) must be reported
40 // in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
41 // which is a WORD field limited to 65,535 bytes.
43 #define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
46 // For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
48 #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
51 // SMBIOS type macros which is according to SMBIOS 3.3.0 specification.
53 #define SMBIOS_TYPE_BIOS_INFORMATION 0
54 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
55 #define SMBIOS_TYPE_BASEBOARD_INFORMATION 2
56 #define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3
57 #define SMBIOS_TYPE_PROCESSOR_INFORMATION 4
58 #define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5
59 #define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6
60 #define SMBIOS_TYPE_CACHE_INFORMATION 7
61 #define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8
62 #define SMBIOS_TYPE_SYSTEM_SLOTS 9
63 #define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10
64 #define SMBIOS_TYPE_OEM_STRINGS 11
65 #define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12
66 #define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13
67 #define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14
68 #define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15
69 #define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16
70 #define SMBIOS_TYPE_MEMORY_DEVICE 17
71 #define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18
72 #define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19
73 #define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20
74 #define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21
75 #define SMBIOS_TYPE_PORTABLE_BATTERY 22
76 #define SMBIOS_TYPE_SYSTEM_RESET 23
77 #define SMBIOS_TYPE_HARDWARE_SECURITY 24
78 #define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25
79 #define SMBIOS_TYPE_VOLTAGE_PROBE 26
80 #define SMBIOS_TYPE_COOLING_DEVICE 27
81 #define SMBIOS_TYPE_TEMPERATURE_PROBE 28
82 #define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29
83 #define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30
84 #define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31
85 #define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32
86 #define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33
87 #define SMBIOS_TYPE_MANAGEMENT_DEVICE 34
88 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35
89 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36
90 #define SMBIOS_TYPE_MEMORY_CHANNEL 37
91 #define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38
92 #define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39
93 #define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40
94 #define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
95 #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
96 #define SMBIOS_TYPE_TPM_DEVICE 43
97 #define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44
98 #define SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION 45
99 #define SMBIOS_TYPE_STRING_PROPERTY_INFORMATION 46
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 ManufacturingModeSupported
: 1;
259 UINT8 ManufacturingModeEnabled
: 1;
260 UINT8 ExtensionByte2Reserved
: 1;
261 } MBCE_SYSTEM_RESERVED
;
264 /// BIOS Characteristics Extension Bytes.
267 MBCE_BIOS_RESERVED BiosReserved
;
268 MBCE_SYSTEM_RESERVED SystemReserved
;
269 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
272 /// Extended BIOS ROM size.
277 } EXTENDED_BIOS_ROM_SIZE
;
280 /// BIOS Information (Type 0).
283 SMBIOS_STRUCTURE Hdr
;
284 SMBIOS_TABLE_STRING Vendor
;
285 SMBIOS_TABLE_STRING BiosVersion
;
287 SMBIOS_TABLE_STRING BiosReleaseDate
;
289 MISC_BIOS_CHARACTERISTICS BiosCharacteristics
;
290 UINT8 BIOSCharacteristicsExtensionBytes
[2];
291 UINT8 SystemBiosMajorRelease
;
292 UINT8 SystemBiosMinorRelease
;
293 UINT8 EmbeddedControllerFirmwareMajorRelease
;
294 UINT8 EmbeddedControllerFirmwareMinorRelease
;
296 // Add for smbios 3.1.0
298 EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize
;
299 } SMBIOS_TABLE_TYPE0
;
302 /// System Wake-up Type.
305 SystemWakeupTypeReserved
= 0x00,
306 SystemWakeupTypeOther
= 0x01,
307 SystemWakeupTypeUnknown
= 0x02,
308 SystemWakeupTypeApmTimer
= 0x03,
309 SystemWakeupTypeModemRing
= 0x04,
310 SystemWakeupTypeLanRemote
= 0x05,
311 SystemWakeupTypePowerSwitch
= 0x06,
312 SystemWakeupTypePciPme
= 0x07,
313 SystemWakeupTypeAcPowerRestored
= 0x08
314 } MISC_SYSTEM_WAKEUP_TYPE
;
317 /// System Information (Type 1).
319 /// The information in this structure defines attributes of the overall system and is
320 /// intended to be associated with the Component ID group of the system's MIF.
321 /// An SMBIOS implementation is associated with a single system instance and contains
322 /// one and only one System Information (Type 1) structure.
325 SMBIOS_STRUCTURE Hdr
;
326 SMBIOS_TABLE_STRING Manufacturer
;
327 SMBIOS_TABLE_STRING ProductName
;
328 SMBIOS_TABLE_STRING Version
;
329 SMBIOS_TABLE_STRING SerialNumber
;
331 UINT8 WakeUpType
; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
332 SMBIOS_TABLE_STRING SKUNumber
;
333 SMBIOS_TABLE_STRING Family
;
334 } SMBIOS_TABLE_TYPE1
;
337 /// Base Board - Feature Flags.
340 UINT8 Motherboard
: 1;
341 UINT8 RequiresDaughterCard
: 1;
343 UINT8 Replaceable
: 1;
344 UINT8 HotSwappable
: 1;
346 } BASE_BOARD_FEATURE_FLAGS
;
349 /// Base Board - Board Type.
352 BaseBoardTypeUnknown
= 0x1,
353 BaseBoardTypeOther
= 0x2,
354 BaseBoardTypeServerBlade
= 0x3,
355 BaseBoardTypeConnectivitySwitch
= 0x4,
356 BaseBoardTypeSystemManagementModule
= 0x5,
357 BaseBoardTypeProcessorModule
= 0x6,
358 BaseBoardTypeIOModule
= 0x7,
359 BaseBoardTypeMemoryModule
= 0x8,
360 BaseBoardTypeDaughterBoard
= 0x9,
361 BaseBoardTypeMotherBoard
= 0xA,
362 BaseBoardTypeProcessorMemoryModule
= 0xB,
363 BaseBoardTypeProcessorIOModule
= 0xC,
364 BaseBoardTypeInterconnectBoard
= 0xD
368 /// Base Board (or Module) Information (Type 2).
370 /// The information in this structure defines attributes of a system baseboard -
371 /// for example a motherboard, planar, or server blade or other standard system module.
374 SMBIOS_STRUCTURE Hdr
;
375 SMBIOS_TABLE_STRING Manufacturer
;
376 SMBIOS_TABLE_STRING ProductName
;
377 SMBIOS_TABLE_STRING Version
;
378 SMBIOS_TABLE_STRING SerialNumber
;
379 SMBIOS_TABLE_STRING AssetTag
;
380 BASE_BOARD_FEATURE_FLAGS FeatureFlag
;
381 SMBIOS_TABLE_STRING LocationInChassis
;
382 UINT16 ChassisHandle
;
383 UINT8 BoardType
; ///< The enumeration value from BASE_BOARD_TYPE.
384 UINT8 NumberOfContainedObjectHandles
;
385 UINT16 ContainedObjectHandles
[1];
386 } SMBIOS_TABLE_TYPE2
;
389 /// System Enclosure or Chassis Types
392 MiscChassisTypeOther
= 0x01,
393 MiscChassisTypeUnknown
= 0x02,
394 MiscChassisTypeDeskTop
= 0x03,
395 MiscChassisTypeLowProfileDesktop
= 0x04,
396 MiscChassisTypePizzaBox
= 0x05,
397 MiscChassisTypeMiniTower
= 0x06,
398 MiscChassisTypeTower
= 0x07,
399 MiscChassisTypePortable
= 0x08,
400 MiscChassisTypeLapTop
= 0x09,
401 MiscChassisTypeNotebook
= 0x0A,
402 MiscChassisTypeHandHeld
= 0x0B,
403 MiscChassisTypeDockingStation
= 0x0C,
404 MiscChassisTypeAllInOne
= 0x0D,
405 MiscChassisTypeSubNotebook
= 0x0E,
406 MiscChassisTypeSpaceSaving
= 0x0F,
407 MiscChassisTypeLunchBox
= 0x10,
408 MiscChassisTypeMainServerChassis
= 0x11,
409 MiscChassisTypeExpansionChassis
= 0x12,
410 MiscChassisTypeSubChassis
= 0x13,
411 MiscChassisTypeBusExpansionChassis
= 0x14,
412 MiscChassisTypePeripheralChassis
= 0x15,
413 MiscChassisTypeRaidChassis
= 0x16,
414 MiscChassisTypeRackMountChassis
= 0x17,
415 MiscChassisTypeSealedCasePc
= 0x18,
416 MiscChassisMultiSystemChassis
= 0x19,
417 MiscChassisCompactPCI
= 0x1A,
418 MiscChassisAdvancedTCA
= 0x1B,
419 MiscChassisBlade
= 0x1C,
420 MiscChassisBladeEnclosure
= 0x1D,
421 MiscChassisTablet
= 0x1E,
422 MiscChassisConvertible
= 0x1F,
423 MiscChassisDetachable
= 0x20,
424 MiscChassisIoTGateway
= 0x21,
425 MiscChassisEmbeddedPc
= 0x22,
426 MiscChassisMiniPc
= 0x23,
427 MiscChassisStickPc
= 0x24
431 /// System Enclosure or Chassis States .
434 ChassisStateOther
= 0x01,
435 ChassisStateUnknown
= 0x02,
436 ChassisStateSafe
= 0x03,
437 ChassisStateWarning
= 0x04,
438 ChassisStateCritical
= 0x05,
439 ChassisStateNonRecoverable
= 0x06
440 } MISC_CHASSIS_STATE
;
443 /// System Enclosure or Chassis Security Status.
446 ChassisSecurityStatusOther
= 0x01,
447 ChassisSecurityStatusUnknown
= 0x02,
448 ChassisSecurityStatusNone
= 0x03,
449 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
450 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
451 } MISC_CHASSIS_SECURITY_STATE
;
454 /// Contained Element record
457 UINT8 ContainedElementType
;
458 UINT8 ContainedElementMinimum
;
459 UINT8 ContainedElementMaximum
;
463 /// System Enclosure or Chassis (Type 3).
465 /// The information in this structure defines attributes of the system's mechanical enclosure(s).
466 /// For example, if a system included a separate enclosure for its peripheral devices,
467 /// two structures would be returned: one for the main, system enclosure and the second for
468 /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification
469 /// support the population of the CIM_Chassis class.
472 SMBIOS_STRUCTURE Hdr
;
473 SMBIOS_TABLE_STRING Manufacturer
;
475 SMBIOS_TABLE_STRING Version
;
476 SMBIOS_TABLE_STRING SerialNumber
;
477 SMBIOS_TABLE_STRING AssetTag
;
478 UINT8 BootupState
; ///< The enumeration value from MISC_CHASSIS_STATE.
479 UINT8 PowerSupplyState
; ///< The enumeration value from MISC_CHASSIS_STATE.
480 UINT8 ThermalState
; ///< The enumeration value from MISC_CHASSIS_STATE.
481 UINT8 SecurityStatus
; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.
484 UINT8 NumberofPowerCords
;
485 UINT8 ContainedElementCount
;
486 UINT8 ContainedElementRecordLength
;
488 // Can have 0 to (ContainedElementCount * ContainedElementRecordLength) contained elements
490 CONTAINED_ELEMENT ContainedElements
[1];
492 // Add for smbios 2.7
494 // Since ContainedElements has a variable number of entries, must not define SKUNumber in
495 // the structure. Need to reference it by starting at offset 0x15 and adding
496 // (ContainedElementCount * ContainedElementRecordLength) bytes.
498 // SMBIOS_TABLE_STRING SKUNumber;
499 } SMBIOS_TABLE_TYPE3
;
502 /// Processor Information - Processor Type.
505 ProcessorOther
= 0x01,
506 ProcessorUnknown
= 0x02,
507 CentralProcessor
= 0x03,
508 MathProcessor
= 0x04,
510 VideoProcessor
= 0x06
511 } PROCESSOR_TYPE_DATA
;
514 /// Processor Information - Processor Family.
517 ProcessorFamilyOther
= 0x01,
518 ProcessorFamilyUnknown
= 0x02,
519 ProcessorFamily8086
= 0x03,
520 ProcessorFamily80286
= 0x04,
521 ProcessorFamilyIntel386
= 0x05,
522 ProcessorFamilyIntel486
= 0x06,
523 ProcessorFamily8087
= 0x07,
524 ProcessorFamily80287
= 0x08,
525 ProcessorFamily80387
= 0x09,
526 ProcessorFamily80487
= 0x0A,
527 ProcessorFamilyPentium
= 0x0B,
528 ProcessorFamilyPentiumPro
= 0x0C,
529 ProcessorFamilyPentiumII
= 0x0D,
530 ProcessorFamilyPentiumMMX
= 0x0E,
531 ProcessorFamilyCeleron
= 0x0F,
532 ProcessorFamilyPentiumIIXeon
= 0x10,
533 ProcessorFamilyPentiumIII
= 0x11,
534 ProcessorFamilyM1
= 0x12,
535 ProcessorFamilyM2
= 0x13,
536 ProcessorFamilyIntelCeleronM
= 0x14,
537 ProcessorFamilyIntelPentium4Ht
= 0x15,
538 ProcessorFamilyAmdDuron
= 0x18,
539 ProcessorFamilyK5
= 0x19,
540 ProcessorFamilyK6
= 0x1A,
541 ProcessorFamilyK6_2
= 0x1B,
542 ProcessorFamilyK6_3
= 0x1C,
543 ProcessorFamilyAmdAthlon
= 0x1D,
544 ProcessorFamilyAmd29000
= 0x1E,
545 ProcessorFamilyK6_2Plus
= 0x1F,
546 ProcessorFamilyPowerPC
= 0x20,
547 ProcessorFamilyPowerPC601
= 0x21,
548 ProcessorFamilyPowerPC603
= 0x22,
549 ProcessorFamilyPowerPC603Plus
= 0x23,
550 ProcessorFamilyPowerPC604
= 0x24,
551 ProcessorFamilyPowerPC620
= 0x25,
552 ProcessorFamilyPowerPCx704
= 0x26,
553 ProcessorFamilyPowerPC750
= 0x27,
554 ProcessorFamilyIntelCoreDuo
= 0x28,
555 ProcessorFamilyIntelCoreDuoMobile
= 0x29,
556 ProcessorFamilyIntelCoreSoloMobile
= 0x2A,
557 ProcessorFamilyIntelAtom
= 0x2B,
558 ProcessorFamilyIntelCoreM
= 0x2C,
559 ProcessorFamilyIntelCorem3
= 0x2D,
560 ProcessorFamilyIntelCorem5
= 0x2E,
561 ProcessorFamilyIntelCorem7
= 0x2F,
562 ProcessorFamilyAlpha
= 0x30,
563 ProcessorFamilyAlpha21064
= 0x31,
564 ProcessorFamilyAlpha21066
= 0x32,
565 ProcessorFamilyAlpha21164
= 0x33,
566 ProcessorFamilyAlpha21164PC
= 0x34,
567 ProcessorFamilyAlpha21164a
= 0x35,
568 ProcessorFamilyAlpha21264
= 0x36,
569 ProcessorFamilyAlpha21364
= 0x37,
570 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM
= 0x38,
571 ProcessorFamilyAmdTurionIIDualCoreMobileM
= 0x39,
572 ProcessorFamilyAmdAthlonIIDualCoreM
= 0x3A,
573 ProcessorFamilyAmdOpteron6100Series
= 0x3B,
574 ProcessorFamilyAmdOpteron4100Series
= 0x3C,
575 ProcessorFamilyAmdOpteron6200Series
= 0x3D,
576 ProcessorFamilyAmdOpteron4200Series
= 0x3E,
577 ProcessorFamilyAmdFxSeries
= 0x3F,
578 ProcessorFamilyMips
= 0x40,
579 ProcessorFamilyMIPSR4000
= 0x41,
580 ProcessorFamilyMIPSR4200
= 0x42,
581 ProcessorFamilyMIPSR4400
= 0x43,
582 ProcessorFamilyMIPSR4600
= 0x44,
583 ProcessorFamilyMIPSR10000
= 0x45,
584 ProcessorFamilyAmdCSeries
= 0x46,
585 ProcessorFamilyAmdESeries
= 0x47,
586 ProcessorFamilyAmdASeries
= 0x48, ///< SMBIOS spec 2.8.0 updated the name
587 ProcessorFamilyAmdGSeries
= 0x49,
588 ProcessorFamilyAmdZSeries
= 0x4A,
589 ProcessorFamilyAmdRSeries
= 0x4B,
590 ProcessorFamilyAmdOpteron4300
= 0x4C,
591 ProcessorFamilyAmdOpteron6300
= 0x4D,
592 ProcessorFamilyAmdOpteron3300
= 0x4E,
593 ProcessorFamilyAmdFireProSeries
= 0x4F,
594 ProcessorFamilySparc
= 0x50,
595 ProcessorFamilySuperSparc
= 0x51,
596 ProcessorFamilymicroSparcII
= 0x52,
597 ProcessorFamilymicroSparcIIep
= 0x53,
598 ProcessorFamilyUltraSparc
= 0x54,
599 ProcessorFamilyUltraSparcII
= 0x55,
600 ProcessorFamilyUltraSparcIii
= 0x56,
601 ProcessorFamilyUltraSparcIII
= 0x57,
602 ProcessorFamilyUltraSparcIIIi
= 0x58,
603 ProcessorFamily68040
= 0x60,
604 ProcessorFamily68xxx
= 0x61,
605 ProcessorFamily68000
= 0x62,
606 ProcessorFamily68010
= 0x63,
607 ProcessorFamily68020
= 0x64,
608 ProcessorFamily68030
= 0x65,
609 ProcessorFamilyAmdAthlonX4QuadCore
= 0x66,
610 ProcessorFamilyAmdOpteronX1000Series
= 0x67,
611 ProcessorFamilyAmdOpteronX2000Series
= 0x68,
612 ProcessorFamilyAmdOpteronASeries
= 0x69,
613 ProcessorFamilyAmdOpteronX3000Series
= 0x6A,
614 ProcessorFamilyAmdZen
= 0x6B,
615 ProcessorFamilyHobbit
= 0x70,
616 ProcessorFamilyCrusoeTM5000
= 0x78,
617 ProcessorFamilyCrusoeTM3000
= 0x79,
618 ProcessorFamilyEfficeonTM8000
= 0x7A,
619 ProcessorFamilyWeitek
= 0x80,
620 ProcessorFamilyItanium
= 0x82,
621 ProcessorFamilyAmdAthlon64
= 0x83,
622 ProcessorFamilyAmdOpteron
= 0x84,
623 ProcessorFamilyAmdSempron
= 0x85,
624 ProcessorFamilyAmdTurion64Mobile
= 0x86,
625 ProcessorFamilyDualCoreAmdOpteron
= 0x87,
626 ProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
627 ProcessorFamilyAmdTurion64X2Mobile
= 0x89,
628 ProcessorFamilyQuadCoreAmdOpteron
= 0x8A,
629 ProcessorFamilyThirdGenerationAmdOpteron
= 0x8B,
630 ProcessorFamilyAmdPhenomFxQuadCore
= 0x8C,
631 ProcessorFamilyAmdPhenomX4QuadCore
= 0x8D,
632 ProcessorFamilyAmdPhenomX2DualCore
= 0x8E,
633 ProcessorFamilyAmdAthlonX2DualCore
= 0x8F,
634 ProcessorFamilyPARISC
= 0x90,
635 ProcessorFamilyPaRisc8500
= 0x91,
636 ProcessorFamilyPaRisc8000
= 0x92,
637 ProcessorFamilyPaRisc7300LC
= 0x93,
638 ProcessorFamilyPaRisc7200
= 0x94,
639 ProcessorFamilyPaRisc7100LC
= 0x95,
640 ProcessorFamilyPaRisc7100
= 0x96,
641 ProcessorFamilyV30
= 0xA0,
642 ProcessorFamilyQuadCoreIntelXeon3200Series
= 0xA1,
643 ProcessorFamilyDualCoreIntelXeon3000Series
= 0xA2,
644 ProcessorFamilyQuadCoreIntelXeon5300Series
= 0xA3,
645 ProcessorFamilyDualCoreIntelXeon5100Series
= 0xA4,
646 ProcessorFamilyDualCoreIntelXeon5000Series
= 0xA5,
647 ProcessorFamilyDualCoreIntelXeonLV
= 0xA6,
648 ProcessorFamilyDualCoreIntelXeonULV
= 0xA7,
649 ProcessorFamilyDualCoreIntelXeon7100Series
= 0xA8,
650 ProcessorFamilyQuadCoreIntelXeon5400Series
= 0xA9,
651 ProcessorFamilyQuadCoreIntelXeon
= 0xAA,
652 ProcessorFamilyDualCoreIntelXeon5200Series
= 0xAB,
653 ProcessorFamilyDualCoreIntelXeon7200Series
= 0xAC,
654 ProcessorFamilyQuadCoreIntelXeon7300Series
= 0xAD,
655 ProcessorFamilyQuadCoreIntelXeon7400Series
= 0xAE,
656 ProcessorFamilyMultiCoreIntelXeon7400Series
= 0xAF,
657 ProcessorFamilyPentiumIIIXeon
= 0xB0,
658 ProcessorFamilyPentiumIIISpeedStep
= 0xB1,
659 ProcessorFamilyPentium4
= 0xB2,
660 ProcessorFamilyIntelXeon
= 0xB3,
661 ProcessorFamilyAS400
= 0xB4,
662 ProcessorFamilyIntelXeonMP
= 0xB5,
663 ProcessorFamilyAMDAthlonXP
= 0xB6,
664 ProcessorFamilyAMDAthlonMP
= 0xB7,
665 ProcessorFamilyIntelItanium2
= 0xB8,
666 ProcessorFamilyIntelPentiumM
= 0xB9,
667 ProcessorFamilyIntelCeleronD
= 0xBA,
668 ProcessorFamilyIntelPentiumD
= 0xBB,
669 ProcessorFamilyIntelPentiumEx
= 0xBC,
670 ProcessorFamilyIntelCoreSolo
= 0xBD, ///< SMBIOS spec 2.6 updated this value
671 ProcessorFamilyReserved
= 0xBE,
672 ProcessorFamilyIntelCore2
= 0xBF,
673 ProcessorFamilyIntelCore2Solo
= 0xC0,
674 ProcessorFamilyIntelCore2Extreme
= 0xC1,
675 ProcessorFamilyIntelCore2Quad
= 0xC2,
676 ProcessorFamilyIntelCore2ExtremeMobile
= 0xC3,
677 ProcessorFamilyIntelCore2DuoMobile
= 0xC4,
678 ProcessorFamilyIntelCore2SoloMobile
= 0xC5,
679 ProcessorFamilyIntelCoreI7
= 0xC6,
680 ProcessorFamilyDualCoreIntelCeleron
= 0xC7,
681 ProcessorFamilyIBM390
= 0xC8,
682 ProcessorFamilyG4
= 0xC9,
683 ProcessorFamilyG5
= 0xCA,
684 ProcessorFamilyG6
= 0xCB,
685 ProcessorFamilyzArchitecture
= 0xCC,
686 ProcessorFamilyIntelCoreI5
= 0xCD,
687 ProcessorFamilyIntelCoreI3
= 0xCE,
688 ProcessorFamilyIntelCoreI9
= 0xCF,
689 ProcessorFamilyViaC7M
= 0xD2,
690 ProcessorFamilyViaC7D
= 0xD3,
691 ProcessorFamilyViaC7
= 0xD4,
692 ProcessorFamilyViaEden
= 0xD5,
693 ProcessorFamilyMultiCoreIntelXeon
= 0xD6,
694 ProcessorFamilyDualCoreIntelXeon3Series
= 0xD7,
695 ProcessorFamilyQuadCoreIntelXeon3Series
= 0xD8,
696 ProcessorFamilyViaNano
= 0xD9,
697 ProcessorFamilyDualCoreIntelXeon5Series
= 0xDA,
698 ProcessorFamilyQuadCoreIntelXeon5Series
= 0xDB,
699 ProcessorFamilyDualCoreIntelXeon7Series
= 0xDD,
700 ProcessorFamilyQuadCoreIntelXeon7Series
= 0xDE,
701 ProcessorFamilyMultiCoreIntelXeon7Series
= 0xDF,
702 ProcessorFamilyMultiCoreIntelXeon3400Series
= 0xE0,
703 ProcessorFamilyAmdOpteron3000Series
= 0xE4,
704 ProcessorFamilyAmdSempronII
= 0xE5,
705 ProcessorFamilyEmbeddedAmdOpteronQuadCore
= 0xE6,
706 ProcessorFamilyAmdPhenomTripleCore
= 0xE7,
707 ProcessorFamilyAmdTurionUltraDualCoreMobile
= 0xE8,
708 ProcessorFamilyAmdTurionDualCoreMobile
= 0xE9,
709 ProcessorFamilyAmdAthlonDualCore
= 0xEA,
710 ProcessorFamilyAmdSempronSI
= 0xEB,
711 ProcessorFamilyAmdPhenomII
= 0xEC,
712 ProcessorFamilyAmdAthlonII
= 0xED,
713 ProcessorFamilySixCoreAmdOpteron
= 0xEE,
714 ProcessorFamilyAmdSempronM
= 0xEF,
715 ProcessorFamilyi860
= 0xFA,
716 ProcessorFamilyi960
= 0xFB,
717 ProcessorFamilyIndicatorFamily2
= 0xFE,
718 ProcessorFamilyReserved1
= 0xFF
719 } PROCESSOR_FAMILY_DATA
;
722 /// Processor Information2 - Processor Family2.
725 ProcessorFamilyARMv7
= 0x0100,
726 ProcessorFamilyARMv8
= 0x0101,
727 ProcessorFamilySH3
= 0x0104,
728 ProcessorFamilySH4
= 0x0105,
729 ProcessorFamilyARM
= 0x0118,
730 ProcessorFamilyStrongARM
= 0x0119,
731 ProcessorFamily6x86
= 0x012C,
732 ProcessorFamilyMediaGX
= 0x012D,
733 ProcessorFamilyMII
= 0x012E,
734 ProcessorFamilyWinChip
= 0x0140,
735 ProcessorFamilyDSP
= 0x015E,
736 ProcessorFamilyVideoProcessor
= 0x01F4,
737 ProcessorFamilyRiscvRV32
= 0x0200,
738 ProcessorFamilyRiscVRV64
= 0x0201,
739 ProcessorFamilyRiscVRV128
= 0x0202
740 } PROCESSOR_FAMILY2_DATA
;
743 /// Processor Information - Voltage.
746 UINT8 ProcessorVoltageCapability5V
: 1;
747 UINT8 ProcessorVoltageCapability3_3V
: 1;
748 UINT8 ProcessorVoltageCapability2_9V
: 1;
749 UINT8 ProcessorVoltageCapabilityReserved
: 1; ///< Bit 3, must be zero.
750 UINT8 ProcessorVoltageReserved
: 3; ///< Bits 4-6, must be zero.
751 UINT8 ProcessorVoltageIndicateLegacy
: 1;
755 /// Processor Information - Processor Upgrade.
758 ProcessorUpgradeOther
= 0x01,
759 ProcessorUpgradeUnknown
= 0x02,
760 ProcessorUpgradeDaughterBoard
= 0x03,
761 ProcessorUpgradeZIFSocket
= 0x04,
762 ProcessorUpgradePiggyBack
= 0x05, ///< Replaceable.
763 ProcessorUpgradeNone
= 0x06,
764 ProcessorUpgradeLIFSocket
= 0x07,
765 ProcessorUpgradeSlot1
= 0x08,
766 ProcessorUpgradeSlot2
= 0x09,
767 ProcessorUpgrade370PinSocket
= 0x0A,
768 ProcessorUpgradeSlotA
= 0x0B,
769 ProcessorUpgradeSlotM
= 0x0C,
770 ProcessorUpgradeSocket423
= 0x0D,
771 ProcessorUpgradeSocketA
= 0x0E, ///< Socket 462.
772 ProcessorUpgradeSocket478
= 0x0F,
773 ProcessorUpgradeSocket754
= 0x10,
774 ProcessorUpgradeSocket940
= 0x11,
775 ProcessorUpgradeSocket939
= 0x12,
776 ProcessorUpgradeSocketmPGA604
= 0x13,
777 ProcessorUpgradeSocketLGA771
= 0x14,
778 ProcessorUpgradeSocketLGA775
= 0x15,
779 ProcessorUpgradeSocketS1
= 0x16,
780 ProcessorUpgradeAM2
= 0x17,
781 ProcessorUpgradeF1207
= 0x18,
782 ProcessorSocketLGA1366
= 0x19,
783 ProcessorUpgradeSocketG34
= 0x1A,
784 ProcessorUpgradeSocketAM3
= 0x1B,
785 ProcessorUpgradeSocketC32
= 0x1C,
786 ProcessorUpgradeSocketLGA1156
= 0x1D,
787 ProcessorUpgradeSocketLGA1567
= 0x1E,
788 ProcessorUpgradeSocketPGA988A
= 0x1F,
789 ProcessorUpgradeSocketBGA1288
= 0x20,
790 ProcessorUpgradeSocketrPGA988B
= 0x21,
791 ProcessorUpgradeSocketBGA1023
= 0x22,
792 ProcessorUpgradeSocketBGA1224
= 0x23,
793 ProcessorUpgradeSocketLGA1155
= 0x24, ///< SMBIOS spec 2.8.0 updated the name
794 ProcessorUpgradeSocketLGA1356
= 0x25,
795 ProcessorUpgradeSocketLGA2011
= 0x26,
796 ProcessorUpgradeSocketFS1
= 0x27,
797 ProcessorUpgradeSocketFS2
= 0x28,
798 ProcessorUpgradeSocketFM1
= 0x29,
799 ProcessorUpgradeSocketFM2
= 0x2A,
800 ProcessorUpgradeSocketLGA2011_3
= 0x2B,
801 ProcessorUpgradeSocketLGA1356_3
= 0x2C,
802 ProcessorUpgradeSocketLGA1150
= 0x2D,
803 ProcessorUpgradeSocketBGA1168
= 0x2E,
804 ProcessorUpgradeSocketBGA1234
= 0x2F,
805 ProcessorUpgradeSocketBGA1364
= 0x30,
806 ProcessorUpgradeSocketAM4
= 0x31,
807 ProcessorUpgradeSocketLGA1151
= 0x32,
808 ProcessorUpgradeSocketBGA1356
= 0x33,
809 ProcessorUpgradeSocketBGA1440
= 0x34,
810 ProcessorUpgradeSocketBGA1515
= 0x35,
811 ProcessorUpgradeSocketLGA3647_1
= 0x36,
812 ProcessorUpgradeSocketSP3
= 0x37,
813 ProcessorUpgradeSocketSP3r2
= 0x38,
814 ProcessorUpgradeSocketLGA2066
= 0x39,
815 ProcessorUpgradeSocketBGA1392
= 0x3A,
816 ProcessorUpgradeSocketBGA1510
= 0x3B,
817 ProcessorUpgradeSocketBGA1528
= 0x3C,
818 ProcessorUpgradeSocketLGA4189
= 0x3D,
819 ProcessorUpgradeSocketLGA1200
= 0x3E,
820 ProcessorUpgradeSocketLGA4677
= 0x3F
824 /// Processor ID Field Description
827 UINT32 ProcessorSteppingId
: 4;
828 UINT32 ProcessorModel
: 4;
829 UINT32 ProcessorFamily
: 4;
830 UINT32 ProcessorType
: 2;
831 UINT32 ProcessorReserved1
: 2;
832 UINT32 ProcessorXModel
: 4;
833 UINT32 ProcessorXFamily
: 8;
834 UINT32 ProcessorReserved2
: 4;
835 } PROCESSOR_SIGNATURE
;
838 UINT32 ProcessorFpu
: 1;
839 UINT32 ProcessorVme
: 1;
840 UINT32 ProcessorDe
: 1;
841 UINT32 ProcessorPse
: 1;
842 UINT32 ProcessorTsc
: 1;
843 UINT32 ProcessorMsr
: 1;
844 UINT32 ProcessorPae
: 1;
845 UINT32 ProcessorMce
: 1;
846 UINT32 ProcessorCx8
: 1;
847 UINT32 ProcessorApic
: 1;
848 UINT32 ProcessorReserved1
: 1;
849 UINT32 ProcessorSep
: 1;
850 UINT32 ProcessorMtrr
: 1;
851 UINT32 ProcessorPge
: 1;
852 UINT32 ProcessorMca
: 1;
853 UINT32 ProcessorCmov
: 1;
854 UINT32 ProcessorPat
: 1;
855 UINT32 ProcessorPse36
: 1;
856 UINT32 ProcessorPsn
: 1;
857 UINT32 ProcessorClfsh
: 1;
858 UINT32 ProcessorReserved2
: 1;
859 UINT32 ProcessorDs
: 1;
860 UINT32 ProcessorAcpi
: 1;
861 UINT32 ProcessorMmx
: 1;
862 UINT32 ProcessorFxsr
: 1;
863 UINT32 ProcessorSse
: 1;
864 UINT32 ProcessorSse2
: 1;
865 UINT32 ProcessorSs
: 1;
866 UINT32 ProcessorReserved3
: 1;
867 UINT32 ProcessorTm
: 1;
868 UINT32 ProcessorReserved4
: 2;
869 } PROCESSOR_FEATURE_FLAGS
;
872 UINT16 ProcessorReserved1
: 1;
873 UINT16 ProcessorUnknown
: 1;
874 UINT16 Processor64BitCapable
: 1;
875 UINT16 ProcessorMultiCore
: 1;
876 UINT16 ProcessorHardwareThread
: 1;
877 UINT16 ProcessorExecuteProtection
: 1;
878 UINT16 ProcessorEnhancedVirtualization
: 1;
879 UINT16 ProcessorPowerPerformanceCtrl
: 1;
880 UINT16 Processor128BitCapable
: 1;
881 UINT16 ProcessorArm64SocId
: 1;
882 UINT16 ProcessorReserved2
: 6;
883 } PROCESSOR_CHARACTERISTIC_FLAGS
;
886 /// Processor Information - Status
890 UINT8 CpuStatus
: 3; ///< Indicates the status of the processor.
891 UINT8 Reserved1
: 3; ///< Reserved for future use. Must be set to zero.
892 UINT8 SocketPopulated
: 1; ///< Indicates if the processor socket is populated or not.
893 UINT8 Reserved2
: 1; ///< Reserved for future use. Must be set to zero.
896 } PROCESSOR_STATUS_DATA
;
899 PROCESSOR_SIGNATURE Signature
;
900 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
904 /// Processor Information (Type 4).
906 /// The information in this structure defines the attributes of a single processor;
907 /// a separate structure instance is provided for each system processor socket/slot.
908 /// For example, a system with an IntelDX2 processor would have a single
909 /// structure instance, while a system with an IntelSX2 processor would have a structure
910 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
913 SMBIOS_STRUCTURE Hdr
;
914 SMBIOS_TABLE_STRING Socket
;
915 UINT8 ProcessorType
; ///< The enumeration value from PROCESSOR_TYPE_DATA.
916 UINT8 ProcessorFamily
; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
917 SMBIOS_TABLE_STRING ProcessorManufacturer
;
918 PROCESSOR_ID_DATA ProcessorId
;
919 SMBIOS_TABLE_STRING ProcessorVersion
;
920 PROCESSOR_VOLTAGE Voltage
;
921 UINT16 ExternalClock
;
925 UINT8 ProcessorUpgrade
; ///< The enumeration value from PROCESSOR_UPGRADE.
926 UINT16 L1CacheHandle
;
927 UINT16 L2CacheHandle
;
928 UINT16 L3CacheHandle
;
929 SMBIOS_TABLE_STRING SerialNumber
;
930 SMBIOS_TABLE_STRING AssetTag
;
931 SMBIOS_TABLE_STRING PartNumber
;
933 // Add for smbios 2.5
936 UINT8 EnabledCoreCount
;
938 UINT16 ProcessorCharacteristics
;
940 // Add for smbios 2.6
942 UINT16 ProcessorFamily2
;
944 // Add for smbios 3.0
947 UINT16 EnabledCoreCount2
;
949 } SMBIOS_TABLE_TYPE4
;
952 /// Memory Controller Error Detecting Method.
955 ErrorDetectingMethodOther
= 0x01,
956 ErrorDetectingMethodUnknown
= 0x02,
957 ErrorDetectingMethodNone
= 0x03,
958 ErrorDetectingMethodParity
= 0x04,
959 ErrorDetectingMethod32Ecc
= 0x05,
960 ErrorDetectingMethod64Ecc
= 0x06,
961 ErrorDetectingMethod128Ecc
= 0x07,
962 ErrorDetectingMethodCrc
= 0x08
963 } MEMORY_ERROR_DETECT_METHOD
;
966 /// Memory Controller Error Correcting Capability.
972 UINT8 SingleBitErrorCorrect
: 1;
973 UINT8 DoubleBitErrorCorrect
: 1;
974 UINT8 ErrorScrubbing
: 1;
976 } MEMORY_ERROR_CORRECT_CAPABILITY
;
979 /// Memory Controller Information - Interleave Support.
982 MemoryInterleaveOther
= 0x01,
983 MemoryInterleaveUnknown
= 0x02,
984 MemoryInterleaveOneWay
= 0x03,
985 MemoryInterleaveTwoWay
= 0x04,
986 MemoryInterleaveFourWay
= 0x05,
987 MemoryInterleaveEightWay
= 0x06,
988 MemoryInterleaveSixteenWay
= 0x07
989 } MEMORY_SUPPORT_INTERLEAVE_TYPE
;
992 /// Memory Controller Information - Memory Speeds.
997 UINT16 SeventyNs
: 1;
1000 UINT16 Reserved
: 11;
1001 } MEMORY_SPEED_TYPE
;
1004 /// Memory Controller Information (Type 5, Obsolete).
1006 /// The information in this structure defines the attributes of the system's memory controller(s)
1007 /// and the supported attributes of any memory-modules present in the sockets controlled by
1008 /// this controller.
1009 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
1010 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
1011 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
1012 /// choose to implement both memory description types to allow existing DMI browsers
1013 /// to properly display the system's memory attributes.
1016 SMBIOS_STRUCTURE Hdr
;
1017 UINT8 ErrDetectMethod
; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
1018 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability
;
1019 UINT8 SupportInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
1020 UINT8 CurrentInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
1021 UINT8 MaxMemoryModuleSize
;
1022 MEMORY_SPEED_TYPE SupportSpeed
;
1023 UINT16 SupportMemoryType
;
1024 UINT8 MemoryModuleVoltage
;
1025 UINT8 AssociatedMemorySlotNum
;
1026 UINT16 MemoryModuleConfigHandles
[1];
1027 } SMBIOS_TABLE_TYPE5
;
1030 /// Memory Module Information - Memory Types
1035 UINT16 Standard
: 1;
1036 UINT16 FastPageMode
: 1;
1042 UINT16 BurstEdo
: 1;
1044 UINT16 Reserved
: 5;
1045 } MEMORY_CURRENT_TYPE
;
1048 /// Memory Module Information - Memory Size.
1051 UINT8 InstalledOrEnabledSize
: 7; ///< Size (n), where 2**n is the size in MB.
1052 UINT8 SingleOrDoubleBank
: 1;
1053 } MEMORY_INSTALLED_ENABLED_SIZE
;
1056 /// Memory Module Information (Type 6, Obsolete)
1058 /// One Memory Module Information structure is included for each memory-module socket
1059 /// in the system. The structure describes the speed, type, size, and error status
1060 /// of each system memory module. The supported attributes of each module are described
1061 /// by the "owning" Memory Controller Information structure.
1062 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
1063 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
1064 /// and Memory Device (Type 17) structures should be used instead.
1067 SMBIOS_STRUCTURE Hdr
;
1068 SMBIOS_TABLE_STRING SocketDesignation
;
1069 UINT8 BankConnections
;
1071 MEMORY_CURRENT_TYPE CurrentMemoryType
;
1072 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
1073 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
1075 } SMBIOS_TABLE_TYPE6
;
1078 /// Cache Information - SRAM Type.
1083 UINT16 NonBurst
: 1;
1085 UINT16 PipelineBurst
: 1;
1086 UINT16 Synchronous
: 1;
1087 UINT16 Asynchronous
: 1;
1088 UINT16 Reserved
: 9;
1089 } CACHE_SRAM_TYPE_DATA
;
1092 /// Cache Information - Error Correction Type.
1095 CacheErrorOther
= 0x01,
1096 CacheErrorUnknown
= 0x02,
1097 CacheErrorNone
= 0x03,
1098 CacheErrorParity
= 0x04,
1099 CacheErrorSingleBit
= 0x05, ///< ECC
1100 CacheErrorMultiBit
= 0x06 ///< ECC
1101 } CACHE_ERROR_TYPE_DATA
;
1104 /// Cache Information - System Cache Type.
1107 CacheTypeOther
= 0x01,
1108 CacheTypeUnknown
= 0x02,
1109 CacheTypeInstruction
= 0x03,
1110 CacheTypeData
= 0x04,
1111 CacheTypeUnified
= 0x05
1115 /// Cache Information - Associativity.
1118 CacheAssociativityOther
= 0x01,
1119 CacheAssociativityUnknown
= 0x02,
1120 CacheAssociativityDirectMapped
= 0x03,
1121 CacheAssociativity2Way
= 0x04,
1122 CacheAssociativity4Way
= 0x05,
1123 CacheAssociativityFully
= 0x06,
1124 CacheAssociativity8Way
= 0x07,
1125 CacheAssociativity16Way
= 0x08,
1126 CacheAssociativity12Way
= 0x09,
1127 CacheAssociativity24Way
= 0x0A,
1128 CacheAssociativity32Way
= 0x0B,
1129 CacheAssociativity48Way
= 0x0C,
1130 CacheAssociativity64Way
= 0x0D,
1131 CacheAssociativity20Way
= 0x0E
1132 } CACHE_ASSOCIATIVITY_DATA
;
1135 /// Cache Information (Type 7).
1137 /// The information in this structure defines the attributes of CPU cache device in the system.
1138 /// One structure is specified for each such device, whether the device is internal to
1139 /// or external to the CPU module. Cache modules can be associated with a processor structure
1140 /// in one or two ways, depending on the SMBIOS version.
1143 SMBIOS_STRUCTURE Hdr
;
1144 SMBIOS_TABLE_STRING SocketDesignation
;
1145 UINT16 CacheConfiguration
;
1146 UINT16 MaximumCacheSize
;
1147 UINT16 InstalledSize
;
1148 CACHE_SRAM_TYPE_DATA SupportedSRAMType
;
1149 CACHE_SRAM_TYPE_DATA CurrentSRAMType
;
1151 UINT8 ErrorCorrectionType
; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
1152 UINT8 SystemCacheType
; ///< The enumeration value from CACHE_TYPE_DATA.
1153 UINT8 Associativity
; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
1155 // Add for smbios 3.1.0
1157 UINT32 MaximumCacheSize2
;
1158 UINT32 InstalledSize2
;
1159 } SMBIOS_TABLE_TYPE7
;
1162 /// Port Connector Information - Connector Types.
1165 PortConnectorTypeNone
= 0x00,
1166 PortConnectorTypeCentronics
= 0x01,
1167 PortConnectorTypeMiniCentronics
= 0x02,
1168 PortConnectorTypeProprietary
= 0x03,
1169 PortConnectorTypeDB25Male
= 0x04,
1170 PortConnectorTypeDB25Female
= 0x05,
1171 PortConnectorTypeDB15Male
= 0x06,
1172 PortConnectorTypeDB15Female
= 0x07,
1173 PortConnectorTypeDB9Male
= 0x08,
1174 PortConnectorTypeDB9Female
= 0x09,
1175 PortConnectorTypeRJ11
= 0x0A,
1176 PortConnectorTypeRJ45
= 0x0B,
1177 PortConnectorType50PinMiniScsi
= 0x0C,
1178 PortConnectorTypeMiniDin
= 0x0D,
1179 PortConnectorTypeMicroDin
= 0x0E,
1180 PortConnectorTypePS2
= 0x0F,
1181 PortConnectorTypeInfrared
= 0x10,
1182 PortConnectorTypeHpHil
= 0x11,
1183 PortConnectorTypeUsb
= 0x12,
1184 PortConnectorTypeSsaScsi
= 0x13,
1185 PortConnectorTypeCircularDin8Male
= 0x14,
1186 PortConnectorTypeCircularDin8Female
= 0x15,
1187 PortConnectorTypeOnboardIde
= 0x16,
1188 PortConnectorTypeOnboardFloppy
= 0x17,
1189 PortConnectorType9PinDualInline
= 0x18,
1190 PortConnectorType25PinDualInline
= 0x19,
1191 PortConnectorType50PinDualInline
= 0x1A,
1192 PortConnectorType68PinDualInline
= 0x1B,
1193 PortConnectorTypeOnboardSoundInput
= 0x1C,
1194 PortConnectorTypeMiniCentronicsType14
= 0x1D,
1195 PortConnectorTypeMiniCentronicsType26
= 0x1E,
1196 PortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1197 PortConnectorTypeBNC
= 0x20,
1198 PortConnectorType1394
= 0x21,
1199 PortConnectorTypeSasSata
= 0x22,
1200 PortConnectorTypeUsbTypeC
= 0x23,
1201 PortConnectorTypePC98
= 0xA0,
1202 PortConnectorTypePC98Hireso
= 0xA1,
1203 PortConnectorTypePCH98
= 0xA2,
1204 PortConnectorTypePC98Note
= 0xA3,
1205 PortConnectorTypePC98Full
= 0xA4,
1206 PortConnectorTypeOther
= 0xFF
1207 } MISC_PORT_CONNECTOR_TYPE
;
1210 /// Port Connector Information - Port Types
1213 PortTypeNone
= 0x00,
1214 PortTypeParallelXtAtCompatible
= 0x01,
1215 PortTypeParallelPortPs2
= 0x02,
1216 PortTypeParallelPortEcp
= 0x03,
1217 PortTypeParallelPortEpp
= 0x04,
1218 PortTypeParallelPortEcpEpp
= 0x05,
1219 PortTypeSerialXtAtCompatible
= 0x06,
1220 PortTypeSerial16450Compatible
= 0x07,
1221 PortTypeSerial16550Compatible
= 0x08,
1222 PortTypeSerial16550ACompatible
= 0x09,
1223 PortTypeScsi
= 0x0A,
1224 PortTypeMidi
= 0x0B,
1225 PortTypeJoyStick
= 0x0C,
1226 PortTypeKeyboard
= 0x0D,
1227 PortTypeMouse
= 0x0E,
1228 PortTypeSsaScsi
= 0x0F,
1230 PortTypeFireWire
= 0x11,
1231 PortTypePcmciaTypeI
= 0x12,
1232 PortTypePcmciaTypeII
= 0x13,
1233 PortTypePcmciaTypeIII
= 0x14,
1234 PortTypeCardBus
= 0x15,
1235 PortTypeAccessBusPort
= 0x16,
1236 PortTypeScsiII
= 0x17,
1237 PortTypeScsiWide
= 0x18,
1238 PortTypePC98
= 0x19,
1239 PortTypePC98Hireso
= 0x1A,
1240 PortTypePCH98
= 0x1B,
1241 PortTypeVideoPort
= 0x1C,
1242 PortTypeAudioPort
= 0x1D,
1243 PortTypeModemPort
= 0x1E,
1244 PortTypeNetworkPort
= 0x1F,
1245 PortTypeSata
= 0x20,
1247 PortTypeMfdp
= 0x22, ///< Multi-Function Display Port
1248 PortTypeThunderbolt
= 0x23,
1249 PortType8251Compatible
= 0xA0,
1250 PortType8251FifoCompatible
= 0xA1,
1251 PortTypeOther
= 0xFF
1255 /// Port Connector Information (Type 8).
1257 /// The information in this structure defines the attributes of a system port connector,
1258 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
1259 /// are provided. One structure is present for each port provided by the system.
1262 SMBIOS_STRUCTURE Hdr
;
1263 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
1264 UINT8 InternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1265 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
1266 UINT8 ExternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1267 UINT8 PortType
; ///< The enumeration value from MISC_PORT_TYPE.
1268 } SMBIOS_TABLE_TYPE8
;
1271 /// System Slots - Slot Type
1274 SlotTypeOther
= 0x01,
1275 SlotTypeUnknown
= 0x02,
1278 SlotTypeEisa
= 0x05,
1280 SlotTypePcmcia
= 0x07,
1281 SlotTypeVlVesa
= 0x08,
1282 SlotTypeProprietary
= 0x09,
1283 SlotTypeProcessorCardSlot
= 0x0A,
1284 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1285 SlotTypeIORiserCardSlot
= 0x0C,
1286 SlotTypeNuBus
= 0x0D,
1287 SlotTypePci66MhzCapable
= 0x0E,
1289 SlotTypeApg2X
= 0x10,
1290 SlotTypeAgp4X
= 0x11,
1291 SlotTypePciX
= 0x12,
1292 SlotTypeAgp8X
= 0x13,
1293 SlotTypeM2Socket1_DP
= 0x14,
1294 SlotTypeM2Socket1_SD
= 0x15,
1295 SlotTypeM2Socket2
= 0x16,
1296 SlotTypeM2Socket3
= 0x17,
1297 SlotTypeMxmTypeI
= 0x18,
1298 SlotTypeMxmTypeII
= 0x19,
1299 SlotTypeMxmTypeIIIStandard
= 0x1A,
1300 SlotTypeMxmTypeIIIHe
= 0x1B,
1301 SlotTypeMxmTypeIV
= 0x1C,
1302 SlotTypeMxm30TypeA
= 0x1D,
1303 SlotTypeMxm30TypeB
= 0x1E,
1304 SlotTypePciExpressGen2Sff_8639
= 0x1F,
1305 SlotTypePciExpressGen3Sff_8639
= 0x20,
1306 SlotTypePciExpressMini52pinWithBSKO
= 0x21, ///< PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs.
1307 SlotTypePciExpressMini52pinWithoutBSKO
= 0x22, ///< PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs.
1308 SlotTypePciExpressMini76pin
= 0x23, ///< PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card.
1309 SlotTypePCIExpressGen4SFF_8639
= 0x24, ///< U.2
1310 SlotTypePCIExpressGen5SFF_8639
= 0x25, ///< U.2
1311 SlotTypeOCPNIC30SmallFormFactor
= 0x26, ///< SFF
1312 SlotTypeOCPNIC30LargeFormFactor
= 0x27, ///< LFF
1313 SlotTypeOCPNICPriorto30
= 0x28,
1314 SlotTypeCXLFlexbus10
= 0x30,
1315 SlotTypePC98C20
= 0xA0,
1316 SlotTypePC98C24
= 0xA1,
1317 SlotTypePC98E
= 0xA2,
1318 SlotTypePC98LocalBus
= 0xA3,
1319 SlotTypePC98Card
= 0xA4,
1320 SlotTypePciExpress
= 0xA5,
1321 SlotTypePciExpressX1
= 0xA6,
1322 SlotTypePciExpressX2
= 0xA7,
1323 SlotTypePciExpressX4
= 0xA8,
1324 SlotTypePciExpressX8
= 0xA9,
1325 SlotTypePciExpressX16
= 0xAA,
1326 SlotTypePciExpressGen2
= 0xAB,
1327 SlotTypePciExpressGen2X1
= 0xAC,
1328 SlotTypePciExpressGen2X2
= 0xAD,
1329 SlotTypePciExpressGen2X4
= 0xAE,
1330 SlotTypePciExpressGen2X8
= 0xAF,
1331 SlotTypePciExpressGen2X16
= 0xB0,
1332 SlotTypePciExpressGen3
= 0xB1,
1333 SlotTypePciExpressGen3X1
= 0xB2,
1334 SlotTypePciExpressGen3X2
= 0xB3,
1335 SlotTypePciExpressGen3X4
= 0xB4,
1336 SlotTypePciExpressGen3X8
= 0xB5,
1337 SlotTypePciExpressGen3X16
= 0xB6,
1338 SlotTypePciExpressGen4
= 0xB8,
1339 SlotTypePciExpressGen4X1
= 0xB9,
1340 SlotTypePciExpressGen4X2
= 0xBA,
1341 SlotTypePciExpressGen4X4
= 0xBB,
1342 SlotTypePciExpressGen4X8
= 0xBC,
1343 SlotTypePciExpressGen4X16
= 0xBD,
1344 SlotTypePCIExpressGen5
= 0xBE,
1345 SlotTypePCIExpressGen5X1
= 0xBF,
1346 SlotTypePCIExpressGen5X2
= 0xC0,
1347 SlotTypePCIExpressGen5X4
= 0xC1,
1348 SlotTypePCIExpressGen5X8
= 0xC2,
1349 SlotTypePCIExpressGen5X16
= 0xC3,
1350 SlotTypePCIExpressGen6andBeyond
= 0xC4,
1351 SlotTypeEnterpriseandDatacenter1UE1FormFactorSlot
= 0xC5,
1352 SlotTypeEnterpriseandDatacenter3E3FormFactorSlot
= 0xC6
1356 /// System Slots - Slot Data Bus Width.
1359 SlotDataBusWidthOther
= 0x01,
1360 SlotDataBusWidthUnknown
= 0x02,
1361 SlotDataBusWidth8Bit
= 0x03,
1362 SlotDataBusWidth16Bit
= 0x04,
1363 SlotDataBusWidth32Bit
= 0x05,
1364 SlotDataBusWidth64Bit
= 0x06,
1365 SlotDataBusWidth128Bit
= 0x07,
1366 SlotDataBusWidth1X
= 0x08, ///< Or X1
1367 SlotDataBusWidth2X
= 0x09, ///< Or X2
1368 SlotDataBusWidth4X
= 0x0A, ///< Or X4
1369 SlotDataBusWidth8X
= 0x0B, ///< Or X8
1370 SlotDataBusWidth12X
= 0x0C, ///< Or X12
1371 SlotDataBusWidth16X
= 0x0D, ///< Or X16
1372 SlotDataBusWidth32X
= 0x0E ///< Or X32
1373 } MISC_SLOT_DATA_BUS_WIDTH
;
1376 /// System Slots - Slot Physical Width.
1379 SlotPhysicalWidthOther
= 0x01,
1380 SlotPhysicalWidthUnknown
= 0x02,
1381 SlotPhysicalWidth8Bit
= 0x03,
1382 SlotPhysicalWidth16Bit
= 0x04,
1383 SlotPhysicalWidth32Bit
= 0x05,
1384 SlotPhysicalWidth64Bit
= 0x06,
1385 SlotPhysicalWidth128Bit
= 0x07,
1386 SlotPhysicalWidth1X
= 0x08, ///< Or X1
1387 SlotPhysicalWidth2X
= 0x09, ///< Or X2
1388 SlotPhysicalWidth4X
= 0x0A, ///< Or X4
1389 SlotPhysicalWidth8X
= 0x0B, ///< Or X8
1390 SlotPhysicalWidth12X
= 0x0C, ///< Or X12
1391 SlotPhysicalWidth16X
= 0x0D, ///< Or X16
1392 SlotPhysicalWidth32X
= 0x0E ///< Or X32
1393 } MISC_SLOT_PHYSICAL_WIDTH
;
1396 /// System Slots - Slot Information.
1406 } MISC_SLOT_INFORMATION
;
1409 /// System Slots - Current Usage.
1412 SlotUsageOther
= 0x01,
1413 SlotUsageUnknown
= 0x02,
1414 SlotUsageAvailable
= 0x03,
1415 SlotUsageInUse
= 0x04,
1416 SlotUsageUnavailable
= 0x05
1420 /// System Slots - Slot Length.
1423 SlotLengthOther
= 0x01,
1424 SlotLengthUnknown
= 0x02,
1425 SlotLengthShort
= 0x03,
1426 SlotLengthLong
= 0x04
1430 /// System Slots - Slot Characteristics 1.
1433 UINT8 CharacteristicsUnknown
: 1;
1434 UINT8 Provides50Volts
: 1;
1435 UINT8 Provides33Volts
: 1;
1436 UINT8 SharedSlot
: 1;
1437 UINT8 PcCard16Supported
: 1;
1438 UINT8 CardBusSupported
: 1;
1439 UINT8 ZoomVideoSupported
: 1;
1440 UINT8 ModemRingResumeSupported
: 1;
1441 } MISC_SLOT_CHARACTERISTICS1
;
1443 /// System Slots - Slot Characteristics 2.
1446 UINT8 PmeSignalSupported
: 1;
1447 UINT8 HotPlugDevicesSupported
: 1;
1448 UINT8 SmbusSignalSupported
: 1;
1449 UINT8 BifurcationSupported
: 1;
1450 UINT8 AsyncSurpriseRemoval
: 1;
1451 UINT8 FlexbusSlotCxl10Capable
: 1;
1452 UINT8 FlexbusSlotCxl20Capable
: 1;
1453 UINT8 Reserved
: 1; ///< Set to 0.
1454 } MISC_SLOT_CHARACTERISTICS2
;
1457 /// System Slots - Slot Height
1460 SlotHeightNone
= 0x00,
1461 SlotHeightOther
= 0x01,
1462 SlotHeightUnknown
= 0x02,
1463 SlotHeightFullHeight
= 0x03,
1464 SlotHeightLowProfile
= 0x04
1468 /// System Slots - Peer Segment/Bus/Device/Function/Width Groups
1471 UINT16 SegmentGroupNum
;
1475 } MISC_SLOT_PEER_GROUP
;
1478 /// System Slots (Type 9)
1480 /// The information in this structure defines the attributes of a system slot.
1481 /// One structure is provided for each slot in the system.
1485 SMBIOS_STRUCTURE Hdr
;
1486 SMBIOS_TABLE_STRING SlotDesignation
;
1487 UINT8 SlotType
; ///< The enumeration value from MISC_SLOT_TYPE.
1488 UINT8 SlotDataBusWidth
; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1489 UINT8 CurrentUsage
; ///< The enumeration value from MISC_SLOT_USAGE.
1490 UINT8 SlotLength
; ///< The enumeration value from MISC_SLOT_LENGTH.
1492 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1493 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1495 // Add for smbios 2.6
1497 UINT16 SegmentGroupNum
;
1501 // Add for smbios 3.2
1504 UINT8 PeerGroupingCount
;
1505 MISC_SLOT_PEER_GROUP PeerGroups
[1];
1507 // Add for smbios 3.4
1509 UINT8 SlotInformation
;
1510 UINT8 SlotPhysicalWidth
;
1513 // Add for smbios 3.5
1515 UINT8 SlotHeight
; ///< The enumeration value from MISC_SLOT_HEIGHT.
1516 } SMBIOS_TABLE_TYPE9
;
1519 /// On Board Devices Information - Device Types.
1522 OnBoardDeviceTypeOther
= 0x01,
1523 OnBoardDeviceTypeUnknown
= 0x02,
1524 OnBoardDeviceTypeVideo
= 0x03,
1525 OnBoardDeviceTypeScsiController
= 0x04,
1526 OnBoardDeviceTypeEthernet
= 0x05,
1527 OnBoardDeviceTypeTokenRing
= 0x06,
1528 OnBoardDeviceTypeSound
= 0x07,
1529 OnBoardDeviceTypePATAController
= 0x08,
1530 OnBoardDeviceTypeSATAController
= 0x09,
1531 OnBoardDeviceTypeSASController
= 0x0A
1532 } MISC_ONBOARD_DEVICE_TYPE
;
1535 /// Device Item Entry
1538 UINT8 DeviceType
; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1539 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1540 SMBIOS_TABLE_STRING DescriptionString
;
1544 /// On Board Devices Information (Type 10, obsolete).
1546 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1547 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1548 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1549 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1550 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1551 /// has some level of control over the enabling of the associated device for use by the system.
1554 SMBIOS_STRUCTURE Hdr
;
1555 DEVICE_STRUCT Device
[1];
1556 } SMBIOS_TABLE_TYPE10
;
1559 /// OEM Strings (Type 11).
1560 /// This structure contains free form strings defined by the OEM. Examples of this are:
1561 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1564 SMBIOS_STRUCTURE Hdr
;
1566 } SMBIOS_TABLE_TYPE11
;
1569 /// System Configuration Options (Type 12).
1571 /// This structure contains information required to configure the base board's Jumpers and Switches.
1574 SMBIOS_STRUCTURE Hdr
;
1576 } SMBIOS_TABLE_TYPE12
;
1579 /// BIOS Language Information (Type 13).
1581 /// The information in this structure defines the installable language attributes of the BIOS.
1584 SMBIOS_STRUCTURE Hdr
;
1585 UINT8 InstallableLanguages
;
1588 SMBIOS_TABLE_STRING CurrentLanguages
;
1589 } SMBIOS_TABLE_TYPE13
;
1592 /// Group Item Entry
1600 /// Group Associations (Type 14).
1602 /// The Group Associations structure is provided for OEMs who want to specify
1603 /// the arrangement or hierarchy of certain components (including other Group Associations)
1604 /// within the system.
1607 SMBIOS_STRUCTURE Hdr
;
1608 SMBIOS_TABLE_STRING GroupName
;
1609 GROUP_STRUCT Group
[1];
1610 } SMBIOS_TABLE_TYPE14
;
1613 /// System Event Log - Event Log Types.
1616 EventLogTypeReserved
= 0x00,
1617 EventLogTypeSingleBitECC
= 0x01,
1618 EventLogTypeMultiBitECC
= 0x02,
1619 EventLogTypeParityMemErr
= 0x03,
1620 EventLogTypeBusTimeOut
= 0x04,
1621 EventLogTypeIOChannelCheck
= 0x05,
1622 EventLogTypeSoftwareNMI
= 0x06,
1623 EventLogTypePOSTMemResize
= 0x07,
1624 EventLogTypePOSTErr
= 0x08,
1625 EventLogTypePCIParityErr
= 0x09,
1626 EventLogTypePCISystemErr
= 0x0A,
1627 EventLogTypeCPUFailure
= 0x0B,
1628 EventLogTypeEISATimeOut
= 0x0C,
1629 EventLogTypeMemLogDisabled
= 0x0D,
1630 EventLogTypeLoggingDisabled
= 0x0E,
1631 EventLogTypeSysLimitExce
= 0x10,
1632 EventLogTypeAsyncHWTimer
= 0x11,
1633 EventLogTypeSysConfigInfo
= 0x12,
1634 EventLogTypeHDInfo
= 0x13,
1635 EventLogTypeSysReconfig
= 0x14,
1636 EventLogTypeUncorrectCPUErr
= 0x15,
1637 EventLogTypeAreaResetAndClr
= 0x16,
1638 EventLogTypeSystemBoot
= 0x17,
1639 EventLogTypeUnused
= 0x18, ///< 0x18 - 0x7F
1640 EventLogTypeAvailForSys
= 0x80, ///< 0x80 - 0xFE
1641 EventLogTypeEndOfLog
= 0xFF
1642 } EVENT_LOG_TYPE_DATA
;
1645 /// System Event Log - Variable Data Format Types.
1648 EventLogVariableNone
= 0x00,
1649 EventLogVariableHandle
= 0x01,
1650 EventLogVariableMutilEvent
= 0x02,
1651 EventLogVariableMutilEventHandle
= 0x03,
1652 EventLogVariablePOSTResultBitmap
= 0x04,
1653 EventLogVariableSysManagementType
= 0x05,
1654 EventLogVariableMutliEventSysManagmentType
= 0x06,
1655 EventLogVariableUnused
= 0x07,
1656 EventLogVariableOEMAssigned
= 0x80
1657 } EVENT_LOG_VARIABLE_DATA
;
1660 /// Event Log Type Descriptors
1663 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1664 UINT8 DataFormatType
;
1668 /// System Event Log (Type 15).
1670 /// The presence of this structure within the SMBIOS data returned for a system indicates
1671 /// that the system supports an event log. An event log is a fixed-length area within a
1672 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1673 /// record, followed by one or more variable-length log records.
1676 SMBIOS_STRUCTURE Hdr
;
1677 UINT16 LogAreaLength
;
1678 UINT16 LogHeaderStartOffset
;
1679 UINT16 LogDataStartOffset
;
1682 UINT32 LogChangeToken
;
1683 UINT32 AccessMethodAddress
;
1684 UINT8 LogHeaderFormat
;
1685 UINT8 NumberOfSupportedLogTypeDescriptors
;
1686 UINT8 LengthOfLogTypeDescriptor
;
1687 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
1688 } SMBIOS_TABLE_TYPE15
;
1691 /// Physical Memory Array - Location.
1694 MemoryArrayLocationOther
= 0x01,
1695 MemoryArrayLocationUnknown
= 0x02,
1696 MemoryArrayLocationSystemBoard
= 0x03,
1697 MemoryArrayLocationIsaAddonCard
= 0x04,
1698 MemoryArrayLocationEisaAddonCard
= 0x05,
1699 MemoryArrayLocationPciAddonCard
= 0x06,
1700 MemoryArrayLocationMcaAddonCard
= 0x07,
1701 MemoryArrayLocationPcmciaAddonCard
= 0x08,
1702 MemoryArrayLocationProprietaryAddonCard
= 0x09,
1703 MemoryArrayLocationNuBus
= 0x0A,
1704 MemoryArrayLocationPc98C20AddonCard
= 0xA0,
1705 MemoryArrayLocationPc98C24AddonCard
= 0xA1,
1706 MemoryArrayLocationPc98EAddonCard
= 0xA2,
1707 MemoryArrayLocationPc98LocalBusAddonCard
= 0xA3,
1708 MemoryArrayLocationCXLAddonCard
= 0xA4
1709 } MEMORY_ARRAY_LOCATION
;
1712 /// Physical Memory Array - Use.
1715 MemoryArrayUseOther
= 0x01,
1716 MemoryArrayUseUnknown
= 0x02,
1717 MemoryArrayUseSystemMemory
= 0x03,
1718 MemoryArrayUseVideoMemory
= 0x04,
1719 MemoryArrayUseFlashMemory
= 0x05,
1720 MemoryArrayUseNonVolatileRam
= 0x06,
1721 MemoryArrayUseCacheMemory
= 0x07
1725 /// Physical Memory Array - Error Correction Types.
1728 MemoryErrorCorrectionOther
= 0x01,
1729 MemoryErrorCorrectionUnknown
= 0x02,
1730 MemoryErrorCorrectionNone
= 0x03,
1731 MemoryErrorCorrectionParity
= 0x04,
1732 MemoryErrorCorrectionSingleBitEcc
= 0x05,
1733 MemoryErrorCorrectionMultiBitEcc
= 0x06,
1734 MemoryErrorCorrectionCrc
= 0x07
1735 } MEMORY_ERROR_CORRECTION
;
1738 /// Physical Memory Array (Type 16).
1740 /// This structure describes a collection of memory devices that operate
1741 /// together to form a memory address space.
1744 SMBIOS_STRUCTURE Hdr
;
1745 UINT8 Location
; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1746 UINT8 Use
; ///< The enumeration value from MEMORY_ARRAY_USE.
1747 UINT8 MemoryErrorCorrection
; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1748 UINT32 MaximumCapacity
;
1749 UINT16 MemoryErrorInformationHandle
;
1750 UINT16 NumberOfMemoryDevices
;
1752 // Add for smbios 2.7
1754 UINT64 ExtendedMaximumCapacity
;
1755 } SMBIOS_TABLE_TYPE16
;
1758 /// Memory Device - Form Factor.
1761 MemoryFormFactorOther
= 0x01,
1762 MemoryFormFactorUnknown
= 0x02,
1763 MemoryFormFactorSimm
= 0x03,
1764 MemoryFormFactorSip
= 0x04,
1765 MemoryFormFactorChip
= 0x05,
1766 MemoryFormFactorDip
= 0x06,
1767 MemoryFormFactorZip
= 0x07,
1768 MemoryFormFactorProprietaryCard
= 0x08,
1769 MemoryFormFactorDimm
= 0x09,
1770 MemoryFormFactorTsop
= 0x0A,
1771 MemoryFormFactorRowOfChips
= 0x0B,
1772 MemoryFormFactorRimm
= 0x0C,
1773 MemoryFormFactorSodimm
= 0x0D,
1774 MemoryFormFactorSrimm
= 0x0E,
1775 MemoryFormFactorFbDimm
= 0x0F,
1776 MemoryFormFactorDie
= 0x10
1777 } MEMORY_FORM_FACTOR
;
1780 /// Memory Device - Type
1783 MemoryTypeOther
= 0x01,
1784 MemoryTypeUnknown
= 0x02,
1785 MemoryTypeDram
= 0x03,
1786 MemoryTypeEdram
= 0x04,
1787 MemoryTypeVram
= 0x05,
1788 MemoryTypeSram
= 0x06,
1789 MemoryTypeRam
= 0x07,
1790 MemoryTypeRom
= 0x08,
1791 MemoryTypeFlash
= 0x09,
1792 MemoryTypeEeprom
= 0x0A,
1793 MemoryTypeFeprom
= 0x0B,
1794 MemoryTypeEprom
= 0x0C,
1795 MemoryTypeCdram
= 0x0D,
1796 MemoryType3Dram
= 0x0E,
1797 MemoryTypeSdram
= 0x0F,
1798 MemoryTypeSgram
= 0x10,
1799 MemoryTypeRdram
= 0x11,
1800 MemoryTypeDdr
= 0x12,
1801 MemoryTypeDdr2
= 0x13,
1802 MemoryTypeDdr2FbDimm
= 0x14,
1803 MemoryTypeDdr3
= 0x18,
1804 MemoryTypeFbd2
= 0x19,
1805 MemoryTypeDdr4
= 0x1A,
1806 MemoryTypeLpddr
= 0x1B,
1807 MemoryTypeLpddr2
= 0x1C,
1808 MemoryTypeLpddr3
= 0x1D,
1809 MemoryTypeLpddr4
= 0x1E,
1810 MemoryTypeLogicalNonVolatileDevice
= 0x1F,
1811 MemoryTypeHBM
= 0x20,
1812 MemoryTypeHBM2
= 0x21,
1813 MemoryTypeDdr5
= 0x22,
1814 MemoryTypeLpddr5
= 0x23
1815 } MEMORY_DEVICE_TYPE
;
1818 /// Memory Device - Type Detail
1821 UINT16 Reserved
: 1;
1824 UINT16 FastPaged
: 1;
1825 UINT16 StaticColumn
: 1;
1826 UINT16 PseudoStatic
: 1;
1828 UINT16 Synchronous
: 1;
1831 UINT16 WindowDram
: 1;
1832 UINT16 CacheDram
: 1;
1833 UINT16 Nonvolatile
: 1;
1834 UINT16 Registered
: 1;
1835 UINT16 Unbuffered
: 1;
1837 } MEMORY_DEVICE_TYPE_DETAIL
;
1840 /// Memory Device - Memory Technology
1843 MemoryTechnologyOther
= 0x01,
1844 MemoryTechnologyUnknown
= 0x02,
1845 MemoryTechnologyDram
= 0x03,
1846 MemoryTechnologyNvdimmN
= 0x04,
1847 MemoryTechnologyNvdimmF
= 0x05,
1848 MemoryTechnologyNvdimmP
= 0x06,
1850 // This definition is updated to represent Intel
1851 // Optane DC Persistent Memory in SMBIOS spec 3.4.0
1853 MemoryTechnologyIntelOptanePersistentMemory
= 0x07
1854 } MEMORY_DEVICE_TECHNOLOGY
;
1857 /// Memory Device - Memory Operating Mode Capability
1861 /// Individual bit fields
1864 UINT16 Reserved
: 1; ///< Set to 0.
1867 UINT16 VolatileMemory
: 1;
1868 UINT16 ByteAccessiblePersistentMemory
: 1;
1869 UINT16 BlockAccessiblePersistentMemory
: 1;
1870 UINT16 Reserved2
: 10; ///< Set to 0.
1873 /// All bit fields as a 16-bit value
1876 } MEMORY_DEVICE_OPERATING_MODE_CAPABILITY
;
1879 /// Memory Device (Type 17).
1881 /// This structure describes a single memory device that is part of
1882 /// a larger Physical Memory Array (Type 16).
1883 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1884 /// includes a Memory Device structure instance for each slot, whether or not the
1885 /// socket is currently populated.
1888 SMBIOS_STRUCTURE Hdr
;
1889 UINT16 MemoryArrayHandle
;
1890 UINT16 MemoryErrorInformationHandle
;
1894 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
1896 SMBIOS_TABLE_STRING DeviceLocator
;
1897 SMBIOS_TABLE_STRING BankLocator
;
1898 UINT8 MemoryType
; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1899 MEMORY_DEVICE_TYPE_DETAIL TypeDetail
;
1901 SMBIOS_TABLE_STRING Manufacturer
;
1902 SMBIOS_TABLE_STRING SerialNumber
;
1903 SMBIOS_TABLE_STRING AssetTag
;
1904 SMBIOS_TABLE_STRING PartNumber
;
1906 // Add for smbios 2.6
1910 // Add for smbios 2.7
1912 UINT32 ExtendedSize
;
1914 // Keep using name "ConfiguredMemoryClockSpeed" for compatibility
1915 // although this field is renamed from "Configured Memory Clock Speed"
1916 // to "Configured Memory Speed" in smbios 3.2.0.
1918 UINT16 ConfiguredMemoryClockSpeed
;
1920 // Add for smbios 2.8.0
1922 UINT16 MinimumVoltage
;
1923 UINT16 MaximumVoltage
;
1924 UINT16 ConfiguredVoltage
;
1926 // Add for smbios 3.2.0
1928 UINT8 MemoryTechnology
; ///< The enumeration value from MEMORY_DEVICE_TECHNOLOGY
1929 MEMORY_DEVICE_OPERATING_MODE_CAPABILITY MemoryOperatingModeCapability
;
1930 SMBIOS_TABLE_STRING FirmwareVersion
;
1931 UINT16 ModuleManufacturerID
;
1932 UINT16 ModuleProductID
;
1933 UINT16 MemorySubsystemControllerManufacturerID
;
1934 UINT16 MemorySubsystemControllerProductID
;
1935 UINT64 NonVolatileSize
;
1936 UINT64 VolatileSize
;
1940 // Add for smbios 3.3.0
1942 UINT32 ExtendedSpeed
;
1943 UINT32 ExtendedConfiguredMemorySpeed
;
1944 } SMBIOS_TABLE_TYPE17
;
1947 /// 32-bit Memory Error Information - Error Type.
1950 MemoryErrorOther
= 0x01,
1951 MemoryErrorUnknown
= 0x02,
1952 MemoryErrorOk
= 0x03,
1953 MemoryErrorBadRead
= 0x04,
1954 MemoryErrorParity
= 0x05,
1955 MemoryErrorSigleBit
= 0x06,
1956 MemoryErrorDoubleBit
= 0x07,
1957 MemoryErrorMultiBit
= 0x08,
1958 MemoryErrorNibble
= 0x09,
1959 MemoryErrorChecksum
= 0x0A,
1960 MemoryErrorCrc
= 0x0B,
1961 MemoryErrorCorrectSingleBit
= 0x0C,
1962 MemoryErrorCorrected
= 0x0D,
1963 MemoryErrorUnCorrectable
= 0x0E
1964 } MEMORY_ERROR_TYPE
;
1967 /// 32-bit Memory Error Information - Error Granularity.
1970 MemoryGranularityOther
= 0x01,
1971 MemoryGranularityOtherUnknown
= 0x02,
1972 MemoryGranularityDeviceLevel
= 0x03,
1973 MemoryGranularityMemPartitionLevel
= 0x04
1974 } MEMORY_ERROR_GRANULARITY
;
1977 /// 32-bit Memory Error Information - Error Operation.
1980 MemoryErrorOperationOther
= 0x01,
1981 MemoryErrorOperationUnknown
= 0x02,
1982 MemoryErrorOperationRead
= 0x03,
1983 MemoryErrorOperationWrite
= 0x04,
1984 MemoryErrorOperationPartialWrite
= 0x05
1985 } MEMORY_ERROR_OPERATION
;
1988 /// 32-bit Memory Error Information (Type 18).
1990 /// This structure identifies the specifics of an error that might be detected
1991 /// within a Physical Memory Array.
1994 SMBIOS_STRUCTURE Hdr
;
1995 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1996 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1997 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1998 UINT32 VendorSyndrome
;
1999 UINT32 MemoryArrayErrorAddress
;
2000 UINT32 DeviceErrorAddress
;
2001 UINT32 ErrorResolution
;
2002 } SMBIOS_TABLE_TYPE18
;
2005 /// Memory Array Mapped Address (Type 19).
2007 /// This structure provides the address mapping for a Physical Memory Array.
2008 /// One structure is present for each contiguous address range described.
2011 SMBIOS_STRUCTURE Hdr
;
2012 UINT32 StartingAddress
;
2013 UINT32 EndingAddress
;
2014 UINT16 MemoryArrayHandle
;
2015 UINT8 PartitionWidth
;
2017 // Add for smbios 2.7
2019 UINT64 ExtendedStartingAddress
;
2020 UINT64 ExtendedEndingAddress
;
2021 } SMBIOS_TABLE_TYPE19
;
2024 /// Memory Device Mapped Address (Type 20).
2026 /// This structure maps memory address space usually to a device-level granularity.
2027 /// One structure is present for each contiguous address range described.
2030 SMBIOS_STRUCTURE Hdr
;
2031 UINT32 StartingAddress
;
2032 UINT32 EndingAddress
;
2033 UINT16 MemoryDeviceHandle
;
2034 UINT16 MemoryArrayMappedAddressHandle
;
2035 UINT8 PartitionRowPosition
;
2036 UINT8 InterleavePosition
;
2037 UINT8 InterleavedDataDepth
;
2039 // Add for smbios 2.7
2041 UINT64 ExtendedStartingAddress
;
2042 UINT64 ExtendedEndingAddress
;
2043 } SMBIOS_TABLE_TYPE20
;
2046 /// Built-in Pointing Device - Type
2049 PointingDeviceTypeOther
= 0x01,
2050 PointingDeviceTypeUnknown
= 0x02,
2051 PointingDeviceTypeMouse
= 0x03,
2052 PointingDeviceTypeTrackBall
= 0x04,
2053 PointingDeviceTypeTrackPoint
= 0x05,
2054 PointingDeviceTypeGlidePoint
= 0x06,
2055 PointingDeviceTouchPad
= 0x07,
2056 PointingDeviceTouchScreen
= 0x08,
2057 PointingDeviceOpticalSensor
= 0x09
2058 } BUILTIN_POINTING_DEVICE_TYPE
;
2061 /// Built-in Pointing Device - Interface.
2064 PointingDeviceInterfaceOther
= 0x01,
2065 PointingDeviceInterfaceUnknown
= 0x02,
2066 PointingDeviceInterfaceSerial
= 0x03,
2067 PointingDeviceInterfacePs2
= 0x04,
2068 PointingDeviceInterfaceInfrared
= 0x05,
2069 PointingDeviceInterfaceHpHil
= 0x06,
2070 PointingDeviceInterfaceBusMouse
= 0x07,
2071 PointingDeviceInterfaceADB
= 0x08,
2072 PointingDeviceInterfaceBusMouseDB9
= 0xA0,
2073 PointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
2074 PointingDeviceInterfaceUsb
= 0xA2,
2075 PointingDeviceInterfaceI2c
= 0xA3,
2076 PointingDeviceInterfaceSpi
= 0xA4
2077 } BUILTIN_POINTING_DEVICE_INTERFACE
;
2080 /// Built-in Pointing Device (Type 21).
2082 /// This structure describes the attributes of the built-in pointing device for the
2083 /// system. The presence of this structure does not imply that the built-in
2084 /// pointing device is active for the system's use!
2087 SMBIOS_STRUCTURE Hdr
;
2088 UINT8 Type
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
2089 UINT8 Interface
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
2090 UINT8 NumberOfButtons
;
2091 } SMBIOS_TABLE_TYPE21
;
2094 /// Portable Battery - Device Chemistry
2097 PortableBatteryDeviceChemistryOther
= 0x01,
2098 PortableBatteryDeviceChemistryUnknown
= 0x02,
2099 PortableBatteryDeviceChemistryLeadAcid
= 0x03,
2100 PortableBatteryDeviceChemistryNickelCadmium
= 0x04,
2101 PortableBatteryDeviceChemistryNickelMetalHydride
= 0x05,
2102 PortableBatteryDeviceChemistryLithiumIon
= 0x06,
2103 PortableBatteryDeviceChemistryZincAir
= 0x07,
2104 PortableBatteryDeviceChemistryLithiumPolymer
= 0x08
2105 } PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
2108 /// Portable Battery (Type 22).
2110 /// This structure describes the attributes of the portable battery(s) for the system.
2111 /// The structure contains the static attributes for the group. Each structure describes
2112 /// a single battery pack's attributes.
2115 SMBIOS_STRUCTURE Hdr
;
2116 SMBIOS_TABLE_STRING Location
;
2117 SMBIOS_TABLE_STRING Manufacturer
;
2118 SMBIOS_TABLE_STRING ManufactureDate
;
2119 SMBIOS_TABLE_STRING SerialNumber
;
2120 SMBIOS_TABLE_STRING DeviceName
;
2121 UINT8 DeviceChemistry
; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
2122 UINT16 DeviceCapacity
;
2123 UINT16 DesignVoltage
;
2124 SMBIOS_TABLE_STRING SBDSVersionNumber
;
2125 UINT8 MaximumErrorInBatteryData
;
2126 UINT16 SBDSSerialNumber
;
2127 UINT16 SBDSManufactureDate
;
2128 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
2129 UINT8 DesignCapacityMultiplier
;
2131 } SMBIOS_TABLE_TYPE22
;
2134 /// System Reset (Type 23)
2136 /// This structure describes whether Automatic System Reset functions enabled (Status).
2137 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
2138 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
2139 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
2140 /// the system will re-boot according to the Boot Option at Limit.
2143 SMBIOS_STRUCTURE Hdr
;
2147 UINT16 TimerInterval
;
2149 } SMBIOS_TABLE_TYPE23
;
2152 /// Hardware Security (Type 24).
2154 /// This structure describes the system-wide hardware security settings.
2157 SMBIOS_STRUCTURE Hdr
;
2158 UINT8 HardwareSecuritySettings
;
2159 } SMBIOS_TABLE_TYPE24
;
2162 /// System Power Controls (Type 25).
2164 /// This structure describes the attributes for controlling the main power supply to the system.
2165 /// Software that interprets this structure uses the month, day, hour, minute, and second values
2166 /// to determine the number of seconds until the next power-on of the system. The presence of
2167 /// this structure implies that a timed power-on facility is available for the system.
2170 SMBIOS_STRUCTURE Hdr
;
2171 UINT8 NextScheduledPowerOnMonth
;
2172 UINT8 NextScheduledPowerOnDayOfMonth
;
2173 UINT8 NextScheduledPowerOnHour
;
2174 UINT8 NextScheduledPowerOnMinute
;
2175 UINT8 NextScheduledPowerOnSecond
;
2176 } SMBIOS_TABLE_TYPE25
;
2179 /// Voltage Probe - Location and Status.
2182 UINT8 VoltageProbeSite
: 5;
2183 UINT8 VoltageProbeStatus
: 3;
2184 } MISC_VOLTAGE_PROBE_LOCATION
;
2187 /// Voltage Probe (Type 26)
2189 /// This describes the attributes for a voltage probe in the system.
2190 /// Each structure describes a single voltage probe.
2193 SMBIOS_STRUCTURE Hdr
;
2194 SMBIOS_TABLE_STRING Description
;
2195 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
2196 UINT16 MaximumValue
;
2197 UINT16 MinimumValue
;
2202 UINT16 NominalValue
;
2203 } SMBIOS_TABLE_TYPE26
;
2206 /// Cooling Device - Device Type and Status.
2209 UINT8 CoolingDevice
: 5;
2210 UINT8 CoolingDeviceStatus
: 3;
2211 } MISC_COOLING_DEVICE_TYPE
;
2214 /// Cooling Device (Type 27)
2216 /// This structure describes the attributes for a cooling device in the system.
2217 /// Each structure describes a single cooling device.
2220 SMBIOS_STRUCTURE Hdr
;
2221 UINT16 TemperatureProbeHandle
;
2222 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
2223 UINT8 CoolingUnitGroup
;
2225 UINT16 NominalSpeed
;
2227 // Add for smbios 2.7
2229 SMBIOS_TABLE_STRING Description
;
2230 } SMBIOS_TABLE_TYPE27
;
2233 /// Temperature Probe - Location and Status.
2236 UINT8 TemperatureProbeSite
: 5;
2237 UINT8 TemperatureProbeStatus
: 3;
2238 } MISC_TEMPERATURE_PROBE_LOCATION
;
2241 /// Temperature Probe (Type 28).
2243 /// This structure describes the attributes for a temperature probe in the system.
2244 /// Each structure describes a single temperature probe.
2247 SMBIOS_STRUCTURE Hdr
;
2248 SMBIOS_TABLE_STRING Description
;
2249 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
2250 UINT16 MaximumValue
;
2251 UINT16 MinimumValue
;
2256 UINT16 NominalValue
;
2257 } SMBIOS_TABLE_TYPE28
;
2260 /// Electrical Current Probe - Location and Status.
2263 UINT8 ElectricalCurrentProbeSite
: 5;
2264 UINT8 ElectricalCurrentProbeStatus
: 3;
2265 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2268 /// Electrical Current Probe (Type 29).
2270 /// This structure describes the attributes for an electrical current probe in the system.
2271 /// Each structure describes a single electrical current probe.
2274 SMBIOS_STRUCTURE Hdr
;
2275 SMBIOS_TABLE_STRING Description
;
2276 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
2277 UINT16 MaximumValue
;
2278 UINT16 MinimumValue
;
2283 UINT16 NominalValue
;
2284 } SMBIOS_TABLE_TYPE29
;
2287 /// Out-of-Band Remote Access (Type 30).
2289 /// This structure describes the attributes and policy settings of a hardware facility
2290 /// that may be used to gain remote access to a hardware system when the operating system
2291 /// is not available due to power-down status, hardware failures, or boot failures.
2294 SMBIOS_STRUCTURE Hdr
;
2295 SMBIOS_TABLE_STRING ManufacturerName
;
2297 } SMBIOS_TABLE_TYPE30
;
2300 /// Boot Integrity Services (BIS) Entry Point (Type 31).
2302 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
2305 SMBIOS_STRUCTURE Hdr
;
2313 } SMBIOS_TABLE_TYPE31
;
2316 /// System Boot Information - System Boot Status.
2319 BootInformationStatusNoError
= 0x00,
2320 BootInformationStatusNoBootableMedia
= 0x01,
2321 BootInformationStatusNormalOSFailedLoading
= 0x02,
2322 BootInformationStatusFirmwareDetectedFailure
= 0x03,
2323 BootInformationStatusOSDetectedFailure
= 0x04,
2324 BootInformationStatusUserRequestedBoot
= 0x05,
2325 BootInformationStatusSystemSecurityViolation
= 0x06,
2326 BootInformationStatusPreviousRequestedImage
= 0x07,
2327 BootInformationStatusWatchdogTimerExpired
= 0x08,
2328 BootInformationStatusStartReserved
= 0x09,
2329 BootInformationStatusStartOemSpecific
= 0x80,
2330 BootInformationStatusStartProductSpecific
= 0xC0
2331 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2334 /// System Boot Information (Type 32).
2336 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
2337 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
2338 /// application via this structure. When used in the PXE environment, for example,
2339 /// this code identifies the reason the PXE was initiated and can be used by boot-image
2340 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
2341 /// could choose to automatically download a hardware-diagnostic image to a client whose
2342 /// reason code indicated either a firmware- or operating system-detected hardware failure.
2345 SMBIOS_STRUCTURE Hdr
;
2347 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
2348 } SMBIOS_TABLE_TYPE32
;
2351 /// 64-bit Memory Error Information (Type 33).
2353 /// This structure describes an error within a Physical Memory Array,
2354 /// when the error address is above 4G (0xFFFFFFFF).
2357 SMBIOS_STRUCTURE Hdr
;
2358 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
2359 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
2360 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
2361 UINT32 VendorSyndrome
;
2362 UINT64 MemoryArrayErrorAddress
;
2363 UINT64 DeviceErrorAddress
;
2364 UINT32 ErrorResolution
;
2365 } SMBIOS_TABLE_TYPE33
;
2368 /// Management Device - Type.
2371 ManagementDeviceTypeOther
= 0x01,
2372 ManagementDeviceTypeUnknown
= 0x02,
2373 ManagementDeviceTypeLm75
= 0x03,
2374 ManagementDeviceTypeLm78
= 0x04,
2375 ManagementDeviceTypeLm79
= 0x05,
2376 ManagementDeviceTypeLm80
= 0x06,
2377 ManagementDeviceTypeLm81
= 0x07,
2378 ManagementDeviceTypeAdm9240
= 0x08,
2379 ManagementDeviceTypeDs1780
= 0x09,
2380 ManagementDeviceTypeMaxim1617
= 0x0A,
2381 ManagementDeviceTypeGl518Sm
= 0x0B,
2382 ManagementDeviceTypeW83781D
= 0x0C,
2383 ManagementDeviceTypeHt82H791
= 0x0D
2384 } MISC_MANAGEMENT_DEVICE_TYPE
;
2387 /// Management Device - Address Type.
2390 ManagementDeviceAddressTypeOther
= 0x01,
2391 ManagementDeviceAddressTypeUnknown
= 0x02,
2392 ManagementDeviceAddressTypeIOPort
= 0x03,
2393 ManagementDeviceAddressTypeMemory
= 0x04,
2394 ManagementDeviceAddressTypeSmbus
= 0x05
2395 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2398 /// Management Device (Type 34).
2400 /// The information in this structure defines the attributes of a Management Device.
2401 /// A Management Device might control one or more fans or voltage, current, or temperature
2402 /// probes as defined by one or more Management Device Component structures.
2405 SMBIOS_STRUCTURE Hdr
;
2406 SMBIOS_TABLE_STRING Description
;
2407 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
2409 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
2410 } SMBIOS_TABLE_TYPE34
;
2413 /// Management Device Component (Type 35)
2415 /// This structure associates a cooling device or environmental probe with structures
2416 /// that define the controlling hardware device and (optionally) the component's thresholds.
2419 SMBIOS_STRUCTURE Hdr
;
2420 SMBIOS_TABLE_STRING Description
;
2421 UINT16 ManagementDeviceHandle
;
2422 UINT16 ComponentHandle
;
2423 UINT16 ThresholdHandle
;
2424 } SMBIOS_TABLE_TYPE35
;
2427 /// Management Device Threshold Data (Type 36).
2429 /// The information in this structure defines threshold information for
2430 /// a component (probe or cooling-unit) contained within a Management Device.
2433 SMBIOS_STRUCTURE Hdr
;
2434 UINT16 LowerThresholdNonCritical
;
2435 UINT16 UpperThresholdNonCritical
;
2436 UINT16 LowerThresholdCritical
;
2437 UINT16 UpperThresholdCritical
;
2438 UINT16 LowerThresholdNonRecoverable
;
2439 UINT16 UpperThresholdNonRecoverable
;
2440 } SMBIOS_TABLE_TYPE36
;
2443 /// Memory Channel Entry.
2447 UINT16 DeviceHandle
;
2451 /// Memory Channel - Channel Type.
2454 MemoryChannelTypeOther
= 0x01,
2455 MemoryChannelTypeUnknown
= 0x02,
2456 MemoryChannelTypeRambus
= 0x03,
2457 MemoryChannelTypeSyncLink
= 0x04
2458 } MEMORY_CHANNEL_TYPE
;
2461 /// Memory Channel (Type 37)
2463 /// The information in this structure provides the correlation between a Memory Channel
2464 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
2465 /// The sum of all device loads cannot exceed the channel's defined maximum.
2468 SMBIOS_STRUCTURE Hdr
;
2470 UINT8 MaximumChannelLoad
;
2471 UINT8 MemoryDeviceCount
;
2472 MEMORY_DEVICE MemoryDevice
[1];
2473 } SMBIOS_TABLE_TYPE37
;
2476 /// IPMI Device Information - BMC Interface Type
2479 IPMIDeviceInfoInterfaceTypeUnknown
= 0x00,
2480 IPMIDeviceInfoInterfaceTypeKCS
= 0x01, ///< The Keyboard Controller Style.
2481 IPMIDeviceInfoInterfaceTypeSMIC
= 0x02, ///< The Server Management Interface Chip.
2482 IPMIDeviceInfoInterfaceTypeBT
= 0x03, ///< The Block Transfer
2483 IPMIDeviceInfoInterfaceTypeSSIF
= 0x04 ///< SMBus System Interface
2484 } BMC_INTERFACE_TYPE
;
2487 /// IPMI Device Information (Type 38).
2489 /// The information in this structure defines the attributes of an
2490 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
2492 /// The Type 42 structure can also be used to describe a physical management controller
2493 /// host interface and one or more protocols that share that interface. If IPMI is not
2494 /// shared with other protocols, either the Type 38 or Type 42 structures can be used.
2495 /// Providing Type 38 is recommended for backward compatibility.
2498 SMBIOS_STRUCTURE Hdr
;
2499 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
2500 UINT8 IPMISpecificationRevision
;
2501 UINT8 I2CSlaveAddress
;
2502 UINT8 NVStorageDeviceAddress
;
2504 UINT8 BaseAddressModifier_InterruptInfo
;
2505 UINT8 InterruptNumber
;
2506 } SMBIOS_TABLE_TYPE38
;
2509 /// System Power Supply - Power Supply Characteristics.
2512 UINT16 PowerSupplyHotReplaceable
: 1;
2513 UINT16 PowerSupplyPresent
: 1;
2514 UINT16 PowerSupplyUnplugged
: 1;
2515 UINT16 InputVoltageRangeSwitch
: 4;
2516 UINT16 PowerSupplyStatus
: 3;
2517 UINT16 PowerSupplyType
: 4;
2518 UINT16 Reserved
: 2;
2519 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2522 /// System Power Supply (Type 39).
2524 /// This structure identifies attributes of a system power supply. One instance
2525 /// of this record is present for each possible power supply in a system.
2528 SMBIOS_STRUCTURE Hdr
;
2529 UINT8 PowerUnitGroup
;
2530 SMBIOS_TABLE_STRING Location
;
2531 SMBIOS_TABLE_STRING DeviceName
;
2532 SMBIOS_TABLE_STRING Manufacturer
;
2533 SMBIOS_TABLE_STRING SerialNumber
;
2534 SMBIOS_TABLE_STRING AssetTagNumber
;
2535 SMBIOS_TABLE_STRING ModelPartNumber
;
2536 SMBIOS_TABLE_STRING RevisionLevel
;
2537 UINT16 MaxPowerCapacity
;
2538 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2539 UINT16 InputVoltageProbeHandle
;
2540 UINT16 CoolingDeviceHandle
;
2541 UINT16 InputCurrentProbeHandle
;
2542 } SMBIOS_TABLE_TYPE39
;
2545 /// Additional Information Entry Format.
2549 UINT16 ReferencedHandle
;
2550 UINT8 ReferencedOffset
;
2551 SMBIOS_TABLE_STRING EntryString
;
2553 } ADDITIONAL_INFORMATION_ENTRY
;
2556 /// Additional Information (Type 40).
2558 /// This structure is intended to provide additional information for handling unspecified
2559 /// enumerated values and interim field updates in another structure.
2562 SMBIOS_STRUCTURE Hdr
;
2563 UINT8 NumberOfAdditionalInformationEntries
;
2564 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2565 } SMBIOS_TABLE_TYPE40
;
2568 /// Onboard Devices Extended Information - Onboard Device Types.
2571 OnBoardDeviceExtendedTypeOther
= 0x01,
2572 OnBoardDeviceExtendedTypeUnknown
= 0x02,
2573 OnBoardDeviceExtendedTypeVideo
= 0x03,
2574 OnBoardDeviceExtendedTypeScsiController
= 0x04,
2575 OnBoardDeviceExtendedTypeEthernet
= 0x05,
2576 OnBoardDeviceExtendedTypeTokenRing
= 0x06,
2577 OnBoardDeviceExtendedTypeSound
= 0x07,
2578 OnBoardDeviceExtendedTypePATAController
= 0x08,
2579 OnBoardDeviceExtendedTypeSATAController
= 0x09,
2580 OnBoardDeviceExtendedTypeSASController
= 0x0A,
2581 OnBoardDeviceExtendedTypeWirelessLAN
= 0x0B,
2582 OnBoardDeviceExtendedTypeBluetooth
= 0x0C,
2583 OnBoardDeviceExtendedTypeWWAN
= 0x0D,
2584 OnBoardDeviceExtendedTypeeMMC
= 0x0E,
2585 OnBoardDeviceExtendedTypeNvme
= 0x0F,
2586 OnBoardDeviceExtendedTypeUfc
= 0x10
2587 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE
;
2590 /// Onboard Devices Extended Information (Type 41).
2592 /// The information in this structure defines the attributes of devices that
2593 /// are onboard (soldered onto) a system element, usually the baseboard.
2594 /// In general, an entry in this table implies that the BIOS has some level of
2595 /// control over the enabling of the associated device for use by the system.
2598 SMBIOS_STRUCTURE Hdr
;
2599 SMBIOS_TABLE_STRING ReferenceDesignation
;
2600 UINT8 DeviceType
; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2601 UINT8 DeviceTypeInstance
;
2602 UINT16 SegmentGroupNum
;
2605 } SMBIOS_TABLE_TYPE41
;
2608 /// Management Controller Host Interface - Protocol Record Data Format.
2612 UINT8 ProtocolTypeDataLen
;
2613 UINT8 ProtocolTypeData
[1];
2614 } MC_HOST_INTERFACE_PROTOCOL_RECORD
;
2617 /// Management Controller Host Interface - Interface Types.
2618 /// 00h - 3Fh: MCTP Host Interfaces
2621 MCHostInterfaceTypeNetworkHostInterface
= 0x40,
2622 MCHostInterfaceTypeOemDefined
= 0xF0
2623 } MC_HOST_INTERFACE_TYPE
;
2626 /// Management Controller Host Interface - Protocol Types.
2629 MCHostInterfaceProtocolTypeIPMI
= 0x02,
2630 MCHostInterfaceProtocolTypeMCTP
= 0x03,
2631 MCHostInterfaceProtocolTypeRedfishOverIP
= 0x04,
2632 MCHostInterfaceProtocolTypeOemDefined
= 0xF0
2633 } MC_HOST_INTERFACE_PROTOCOL_TYPE
;
2636 /// Management Controller Host Interface (Type 42).
2638 /// The information in this structure defines the attributes of a Management
2639 /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.
2641 /// Type 42 should be used for management controller host interfaces that use protocols
2642 /// other than IPMI or that use multiple protocols on a single host interface type.
2644 /// This structure should also be provided if IPMI is shared with other protocols
2645 /// over the same interface hardware. If IPMI is not shared with other protocols,
2646 /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is
2647 /// recommended for backward compatibility. The structures are not required to
2648 /// be mutually exclusive. Type 38 and Type 42 structures may be implemented
2649 /// simultaneously to provide backward compatibility with IPMI applications or drivers
2650 /// that do not yet recognize the Type 42 structure.
2653 SMBIOS_STRUCTURE Hdr
;
2654 UINT8 InterfaceType
; ///< The enumeration value from MC_HOST_INTERFACE_TYPE
2655 UINT8 InterfaceTypeSpecificDataLength
;
2656 UINT8 InterfaceTypeSpecificData
[4]; ///< This field has a minimum of four bytes
2657 } SMBIOS_TABLE_TYPE42
;
2660 /// Processor Specific Block - Processor Architecture Type
2663 ProcessorSpecificBlockArchTypeReserved
= 0x00,
2664 ProcessorSpecificBlockArchTypeIa32
= 0x01,
2665 ProcessorSpecificBlockArchTypeX64
= 0x02,
2666 ProcessorSpecificBlockArchTypeItanium
= 0x03,
2667 ProcessorSpecificBlockArchTypeAarch32
= 0x04,
2668 ProcessorSpecificBlockArchTypeAarch64
= 0x05,
2669 ProcessorSpecificBlockArchTypeRiscVRV32
= 0x06,
2670 ProcessorSpecificBlockArchTypeRiscVRV64
= 0x07,
2671 ProcessorSpecificBlockArchTypeRiscVRV128
= 0x08
2672 } PROCESSOR_SPECIFIC_BLOCK_ARCH_TYPE
;
2675 /// Processor Specific Block is the standard container of processor-specific data.
2679 UINT8 ProcessorArchType
;
2681 /// Below followed by Processor-specific data
2684 } PROCESSOR_SPECIFIC_BLOCK
;
2687 /// Processor Additional Information(Type 44).
2689 /// The information in this structure defines the processor additional information in case
2690 /// SMBIOS type 4 is not sufficient to describe processor characteristics.
2691 /// The SMBIOS type 44 structure has a reference handle field to link back to the related
2692 /// SMBIOS type 4 structure. There may be multiple SMBIOS type 44 structures linked to the
2693 /// same SMBIOS type 4 structure. For example, when cores are not identical in a processor,
2694 /// SMBIOS type 44 structures describe different core-specific information.
2696 /// SMBIOS type 44 defines the standard header for the processor-specific block, while the
2697 /// contents of processor-specific data are maintained by processor
2698 /// architecture workgroups or vendors in separate documents.
2701 SMBIOS_STRUCTURE Hdr
;
2702 SMBIOS_HANDLE RefHandle
; ///< This field refer to associated SMBIOS type 4
2704 /// Below followed by Processor-specific block
2706 PROCESSOR_SPECIFIC_BLOCK ProcessorSpecificBlock
;
2707 } SMBIOS_TABLE_TYPE44
;
2710 /// TPM Device (Type 43).
2713 SMBIOS_STRUCTURE Hdr
;
2715 UINT8 MajorSpecVersion
;
2716 UINT8 MinorSpecVersion
;
2717 UINT32 FirmwareVersion1
;
2718 UINT32 FirmwareVersion2
;
2719 SMBIOS_TABLE_STRING Description
;
2720 UINT64 Characteristics
;
2722 } SMBIOS_TABLE_TYPE43
;
2725 /// Firmware Inventory Version Format Type (Type 45).
2728 VersionFormatTypeFreeForm
= 0x00,
2729 VersionFormatTypeMajorMinor
= 0x01,
2730 VersionFormatType32BitHex
= 0x02,
2731 VersionFormatType64BitHex
= 0x03,
2732 VersionFormatTypeReserved
= 0x04, /// 0x04 - 0x7F are reserved
2733 VersionFormatTypeOem
= 0x80 /// 0x80 - 0xFF are BIOS Vendor/OEM-specific
2734 } FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE
;
2737 /// Firmware Inventory Firmware Id Format Type (Type 45).
2740 FirmwareIdFormatTypeFreeForm
= 0x00,
2741 FirmwareIdFormatTypeUuid
= 0x01,
2742 FirmwareIdFormatTypeReserved
= 0x04, /// 0x04 - 0x7F are reserved
2743 InventoryFirmwareIdFormatTypeOem
= 0x80 /// 0x80 - 0xFF are BIOS Vendor/OEM-specific
2744 } FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE
;
2747 /// Firmware Inventory Firmware Characteristics (Type 45).
2750 CharacteristicsUpdatable
= 0x00,
2751 CharacteristicsWriteProtected
= 0x01,
2752 CharacteristicsReserved
= 0x02 /// 0x02 - 0x0F are reserved
2753 } FIRMWARE_INVENTORY_CHARACTERISTICS
;
2756 /// Firmware Inventory State Information (Type 45).
2759 FirmwareInventoryStateOther
= 0x01,
2760 FirmwareInventoryStateUnknown
= 0x02,
2761 FirmwareInventoryStateDisabled
= 0x03,
2762 FirmwareInventoryStateEnabled
= 0x04,
2763 FirmwareInventoryStateAbsent
= 0x05,
2764 FirmwareInventoryStateStandbyOffline
= 0x06,
2765 FirmwareInventoryStateStandbySpare
= 0x07,
2766 FirmwareInventoryStateUnavailableOffline
= 0x08,
2767 } FIRMWARE_INVENTORY_STATE
;
2770 /// Firmware Inventory Information (Type 45)
2772 /// The information in this structure defines an inventory of firmware
2773 /// components in the system. This can include firmware components such as
2774 /// BIOS, BMC, as well as firmware for other devices in the system.
2775 /// The information can be used by software to display the firmware inventory
2776 /// in a uniform manner. It can also be used by a management controller,
2777 /// such as a BMC, for remote system management.
2778 /// This structure is not intended to replace other standard programmatic
2779 /// interfaces for firmware updates.
2780 /// One Type 45 structure is provided for each firmware component.
2783 SMBIOS_STRUCTURE Hdr
;
2784 SMBIOS_HANDLE RefHandle
;
2786 UINT8 FirmwareComponentName
;
2787 UINT8 FirmwareVersion
;
2788 UINT8 FirmwareVersionFormat
; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE
2790 UINT8 FirmwareIdFormat
;
2793 UINT8 LowestSupportedVersion
;
2795 UINT32 Characteristics
;
2797 UINT8 AssociatedComponentCount
;
2799 /// zero or n-number of handles depends on AssociatedComponentCount
2800 /// handles are of type SMBIOS_HANDLE
2802 } SMBIOS_TABLE_TYPE45
;
2805 /// String Property IDs (Type 46).
2808 StringPropertyIdNone
= 0x0000,
2809 StringPropertyIdDevicePath
= 0x0001,
2810 StringPropertyIdReserved
= 0x0002, /// Reserved 0x0002 - 0x7FFF
2811 StringPropertyIdBiosVendor
= 0x8000, /// BIOS vendor 0x8000 - 0xBFFF
2812 StringPropertyIdOem
= 0xC000 /// OEM range 0xC000 - 0xFFFF
2813 } STRING_PROPERTY_ID
;
2816 /// This structure defines a string property for another structure.
2817 /// This allows adding string properties that are common to several structures
2818 /// without having to modify the definitions of these structures.
2819 /// Multiple type 46 structures can add string properties to the same
2820 /// parent structure.
2823 SMBIOS_STRUCTURE Hdr
;
2824 SMBIOS_HANDLE RefHandle
;
2825 UINT16 StringPropertyId
;
2826 UINT8 StringPropertyValue
;
2827 SMBIOS_HANDLE ParentHandle
;
2828 } SMBIOS_TABLE_TYPE46
;
2831 /// Inactive (Type 126)
2834 SMBIOS_STRUCTURE Hdr
;
2835 } SMBIOS_TABLE_TYPE126
;
2838 /// End-of-Table (Type 127)
2841 SMBIOS_STRUCTURE Hdr
;
2842 } SMBIOS_TABLE_TYPE127
;
2845 /// Union of all the possible SMBIOS record types.
2848 SMBIOS_STRUCTURE
*Hdr
;
2849 SMBIOS_TABLE_TYPE0
*Type0
;
2850 SMBIOS_TABLE_TYPE1
*Type1
;
2851 SMBIOS_TABLE_TYPE2
*Type2
;
2852 SMBIOS_TABLE_TYPE3
*Type3
;
2853 SMBIOS_TABLE_TYPE4
*Type4
;
2854 SMBIOS_TABLE_TYPE5
*Type5
;
2855 SMBIOS_TABLE_TYPE6
*Type6
;
2856 SMBIOS_TABLE_TYPE7
*Type7
;
2857 SMBIOS_TABLE_TYPE8
*Type8
;
2858 SMBIOS_TABLE_TYPE9
*Type9
;
2859 SMBIOS_TABLE_TYPE10
*Type10
;
2860 SMBIOS_TABLE_TYPE11
*Type11
;
2861 SMBIOS_TABLE_TYPE12
*Type12
;
2862 SMBIOS_TABLE_TYPE13
*Type13
;
2863 SMBIOS_TABLE_TYPE14
*Type14
;
2864 SMBIOS_TABLE_TYPE15
*Type15
;
2865 SMBIOS_TABLE_TYPE16
*Type16
;
2866 SMBIOS_TABLE_TYPE17
*Type17
;
2867 SMBIOS_TABLE_TYPE18
*Type18
;
2868 SMBIOS_TABLE_TYPE19
*Type19
;
2869 SMBIOS_TABLE_TYPE20
*Type20
;
2870 SMBIOS_TABLE_TYPE21
*Type21
;
2871 SMBIOS_TABLE_TYPE22
*Type22
;
2872 SMBIOS_TABLE_TYPE23
*Type23
;
2873 SMBIOS_TABLE_TYPE24
*Type24
;
2874 SMBIOS_TABLE_TYPE25
*Type25
;
2875 SMBIOS_TABLE_TYPE26
*Type26
;
2876 SMBIOS_TABLE_TYPE27
*Type27
;
2877 SMBIOS_TABLE_TYPE28
*Type28
;
2878 SMBIOS_TABLE_TYPE29
*Type29
;
2879 SMBIOS_TABLE_TYPE30
*Type30
;
2880 SMBIOS_TABLE_TYPE31
*Type31
;
2881 SMBIOS_TABLE_TYPE32
*Type32
;
2882 SMBIOS_TABLE_TYPE33
*Type33
;
2883 SMBIOS_TABLE_TYPE34
*Type34
;
2884 SMBIOS_TABLE_TYPE35
*Type35
;
2885 SMBIOS_TABLE_TYPE36
*Type36
;
2886 SMBIOS_TABLE_TYPE37
*Type37
;
2887 SMBIOS_TABLE_TYPE38
*Type38
;
2888 SMBIOS_TABLE_TYPE39
*Type39
;
2889 SMBIOS_TABLE_TYPE40
*Type40
;
2890 SMBIOS_TABLE_TYPE41
*Type41
;
2891 SMBIOS_TABLE_TYPE42
*Type42
;
2892 SMBIOS_TABLE_TYPE43
*Type43
;
2893 SMBIOS_TABLE_TYPE44
*Type44
;
2894 SMBIOS_TABLE_TYPE45
*Type45
;
2895 SMBIOS_TABLE_TYPE46
*Type46
;
2896 SMBIOS_TABLE_TYPE126
*Type126
;
2897 SMBIOS_TABLE_TYPE127
*Type127
;
2899 } SMBIOS_STRUCTURE_POINTER
;