2 Industry Standard Definitions of SMBIOS Table Specification v3.3.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 SPDX-License-Identifier: BSD-2-Clause-Patent
11 #ifndef __SMBIOS_STANDARD_H__
12 #define __SMBIOS_STANDARD_H__
15 /// Reference SMBIOS 2.6, chapter 3.1.2.
16 /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
17 /// use by this specification.
19 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
22 /// Reference SMBIOS 2.7, chapter 6.1.2.
23 /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its
24 /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."
25 /// This number is not used for any other purpose by the SMBIOS specification.
27 #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
30 /// Reference SMBIOS 2.6, chapter 3.1.3.
31 /// Each text string is limited to 64 significant characters due to system MIF limitations.
32 /// Reference SMBIOS 2.7, chapter 6.1.3.
33 /// It will have no limit on the length of each individual text string.
35 #define SMBIOS_STRING_MAX_LENGTH 64
38 // The length of the entire structure table (including all strings) must be reported
39 // in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
40 // which is a WORD field limited to 65,535 bytes.
42 #define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
45 // For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
47 #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
50 // SMBIOS type macros which is according to SMBIOS 3.3.0 specification.
52 #define SMBIOS_TYPE_BIOS_INFORMATION 0
53 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
54 #define SMBIOS_TYPE_BASEBOARD_INFORMATION 2
55 #define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3
56 #define SMBIOS_TYPE_PROCESSOR_INFORMATION 4
57 #define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5
58 #define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6
59 #define SMBIOS_TYPE_CACHE_INFORMATION 7
60 #define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8
61 #define SMBIOS_TYPE_SYSTEM_SLOTS 9
62 #define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10
63 #define SMBIOS_TYPE_OEM_STRINGS 11
64 #define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12
65 #define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13
66 #define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14
67 #define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15
68 #define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16
69 #define SMBIOS_TYPE_MEMORY_DEVICE 17
70 #define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18
71 #define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19
72 #define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20
73 #define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21
74 #define SMBIOS_TYPE_PORTABLE_BATTERY 22
75 #define SMBIOS_TYPE_SYSTEM_RESET 23
76 #define SMBIOS_TYPE_HARDWARE_SECURITY 24
77 #define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25
78 #define SMBIOS_TYPE_VOLTAGE_PROBE 26
79 #define SMBIOS_TYPE_COOLING_DEVICE 27
80 #define SMBIOS_TYPE_TEMPERATURE_PROBE 28
81 #define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29
82 #define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30
83 #define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31
84 #define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32
85 #define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33
86 #define SMBIOS_TYPE_MANAGEMENT_DEVICE 34
87 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35
88 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36
89 #define SMBIOS_TYPE_MEMORY_CHANNEL 37
90 #define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38
91 #define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39
92 #define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40
93 #define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
94 #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
95 #define SMBIOS_TYPE_TPM_DEVICE 43
96 #define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44
99 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
100 /// Upper-level software that interprets the SMBIOS structure-table should bypass an
101 /// Inactive structure just like a structure type that the software does not recognize.
103 #define SMBIOS_TYPE_INACTIVE 0x007E
106 /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
107 /// The end-of-table indicator is used in the last physical structure in a table
109 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
111 #define SMBIOS_OEM_BEGIN 128
112 #define SMBIOS_OEM_END 255
115 /// Types 0 through 127 (7Fh) are reserved for and defined by this
116 /// specification. Types 128 through 256 (80h to FFh) are available for system- and OEM-specific information.
118 typedef UINT8 SMBIOS_TYPE
;
121 /// Specifies the structure's handle, a unique 16-bit number in the range 0 to 0FFFEh (for version
122 /// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used with the Get SMBIOS
123 /// Structure function to retrieve a specific structure; the handle numbers are not required to be
124 /// contiguous. For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
125 /// use by this specification.
126 /// If the system configuration changes, a previously assigned handle might no longer exist.
127 /// However once a handle has been assigned by the BIOS, the BIOS cannot re-assign that handle
128 /// number to another structure.
130 typedef UINT16 SMBIOS_HANDLE
;
133 /// Smbios Table Entry Point Structure.
137 UINT8 AnchorString
[4];
138 UINT8 EntryPointStructureChecksum
;
139 UINT8 EntryPointLength
;
142 UINT16 MaxStructureSize
;
143 UINT8 EntryPointRevision
;
144 UINT8 FormattedArea
[5];
145 UINT8 IntermediateAnchorString
[5];
146 UINT8 IntermediateChecksum
;
149 UINT16 NumberOfSmbiosStructures
;
150 UINT8 SmbiosBcdRevision
;
151 } SMBIOS_TABLE_ENTRY_POINT
;
154 UINT8 AnchorString
[5];
155 UINT8 EntryPointStructureChecksum
;
156 UINT8 EntryPointLength
;
160 UINT8 EntryPointRevision
;
162 UINT32 TableMaximumSize
;
164 } SMBIOS_TABLE_3_0_ENTRY_POINT
;
167 /// The Smbios structure header.
172 SMBIOS_HANDLE Handle
;
176 /// Text strings associated with a given SMBIOS structure are returned in the dmiStrucBuffer, appended directly after
177 /// the formatted portion of the structure. This method of returning string information eliminates the need for
178 /// application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null
179 /// (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of
180 /// a SMBIOS structure references a string, it does so by specifying a non-zero string number within the structure's
181 /// string-set. For example, if a string field contains 02h, it references the second string following the formatted portion
182 /// of the SMBIOS structure. If a string field references no string, a null (0) is placed in that string field. If the
183 /// formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string
184 /// references), the formatted section of the structure is followed by two null (00h) BYTES.
186 typedef UINT8 SMBIOS_TABLE_STRING
;
189 /// BIOS Characteristics
190 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
193 UINT32 Reserved
: 2; ///< Bits 0-1.
195 UINT32 BiosCharacteristicsNotSupported
: 1;
196 UINT32 IsaIsSupported
: 1;
197 UINT32 McaIsSupported
: 1;
198 UINT32 EisaIsSupported
: 1;
199 UINT32 PciIsSupported
: 1;
200 UINT32 PcmciaIsSupported
: 1;
201 UINT32 PlugAndPlayIsSupported
: 1;
202 UINT32 ApmIsSupported
: 1;
203 UINT32 BiosIsUpgradable
: 1;
204 UINT32 BiosShadowingAllowed
: 1;
205 UINT32 VlVesaIsSupported
: 1;
206 UINT32 EscdSupportIsAvailable
: 1;
207 UINT32 BootFromCdIsSupported
: 1;
208 UINT32 SelectableBootIsSupported
: 1;
209 UINT32 RomBiosIsSocketed
: 1;
210 UINT32 BootFromPcmciaIsSupported
: 1;
211 UINT32 EDDSpecificationIsSupported
: 1;
212 UINT32 JapaneseNecFloppyIsSupported
: 1;
213 UINT32 JapaneseToshibaFloppyIsSupported
: 1;
214 UINT32 Floppy525_360IsSupported
: 1;
215 UINT32 Floppy525_12IsSupported
: 1;
216 UINT32 Floppy35_720IsSupported
: 1;
217 UINT32 Floppy35_288IsSupported
: 1;
218 UINT32 PrintScreenIsSupported
: 1;
219 UINT32 Keyboard8042IsSupported
: 1;
220 UINT32 SerialIsSupported
: 1;
221 UINT32 PrinterIsSupported
: 1;
222 UINT32 CgaMonoIsSupported
: 1;
224 UINT32 ReservedForVendor
: 32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
225 ///< and bits 48-63 reserved for System Vendor.
226 } MISC_BIOS_CHARACTERISTICS
;
229 /// BIOS Characteristics Extension Byte 1.
230 /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h
231 /// within the BIOS Information structure.
234 UINT8 AcpiIsSupported
: 1;
235 UINT8 UsbLegacyIsSupported
: 1;
236 UINT8 AgpIsSupported
: 1;
237 UINT8 I2OBootIsSupported
: 1;
238 UINT8 Ls120BootIsSupported
: 1;
239 UINT8 AtapiZipDriveBootIsSupported
: 1;
240 UINT8 Boot1394IsSupported
: 1;
241 UINT8 SmartBatteryIsSupported
: 1;
242 } MBCE_BIOS_RESERVED
;
245 /// BIOS Characteristics Extension Byte 2.
246 /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h
247 /// within the BIOS Information structure.
250 UINT8 BiosBootSpecIsSupported
: 1;
251 UINT8 FunctionKeyNetworkBootIsSupported
: 1;
252 UINT8 TargetContentDistributionEnabled
: 1;
253 UINT8 UefiSpecificationSupported
: 1;
254 UINT8 VirtualMachineSupported
: 1;
255 UINT8 ExtensionByte2Reserved
: 3;
256 } MBCE_SYSTEM_RESERVED
;
259 /// BIOS Characteristics Extension Bytes.
262 MBCE_BIOS_RESERVED BiosReserved
;
263 MBCE_SYSTEM_RESERVED SystemReserved
;
264 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
267 /// Extended BIOS ROM size.
272 } EXTENDED_BIOS_ROM_SIZE
;
275 /// BIOS Information (Type 0).
278 SMBIOS_STRUCTURE Hdr
;
279 SMBIOS_TABLE_STRING Vendor
;
280 SMBIOS_TABLE_STRING BiosVersion
;
282 SMBIOS_TABLE_STRING BiosReleaseDate
;
284 MISC_BIOS_CHARACTERISTICS BiosCharacteristics
;
285 UINT8 BIOSCharacteristicsExtensionBytes
[2];
286 UINT8 SystemBiosMajorRelease
;
287 UINT8 SystemBiosMinorRelease
;
288 UINT8 EmbeddedControllerFirmwareMajorRelease
;
289 UINT8 EmbeddedControllerFirmwareMinorRelease
;
291 // Add for smbios 3.1.0
293 EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize
;
294 } SMBIOS_TABLE_TYPE0
;
297 /// System Wake-up Type.
300 SystemWakeupTypeReserved
= 0x00,
301 SystemWakeupTypeOther
= 0x01,
302 SystemWakeupTypeUnknown
= 0x02,
303 SystemWakeupTypeApmTimer
= 0x03,
304 SystemWakeupTypeModemRing
= 0x04,
305 SystemWakeupTypeLanRemote
= 0x05,
306 SystemWakeupTypePowerSwitch
= 0x06,
307 SystemWakeupTypePciPme
= 0x07,
308 SystemWakeupTypeAcPowerRestored
= 0x08
309 } MISC_SYSTEM_WAKEUP_TYPE
;
312 /// System Information (Type 1).
314 /// The information in this structure defines attributes of the overall system and is
315 /// intended to be associated with the Component ID group of the system's MIF.
316 /// An SMBIOS implementation is associated with a single system instance and contains
317 /// one and only one System Information (Type 1) structure.
320 SMBIOS_STRUCTURE Hdr
;
321 SMBIOS_TABLE_STRING Manufacturer
;
322 SMBIOS_TABLE_STRING ProductName
;
323 SMBIOS_TABLE_STRING Version
;
324 SMBIOS_TABLE_STRING SerialNumber
;
326 UINT8 WakeUpType
; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
327 SMBIOS_TABLE_STRING SKUNumber
;
328 SMBIOS_TABLE_STRING Family
;
329 } SMBIOS_TABLE_TYPE1
;
332 /// Base Board - Feature Flags.
335 UINT8 Motherboard
: 1;
336 UINT8 RequiresDaughterCard
: 1;
338 UINT8 Replaceable
: 1;
339 UINT8 HotSwappable
: 1;
341 } BASE_BOARD_FEATURE_FLAGS
;
344 /// Base Board - Board Type.
347 BaseBoardTypeUnknown
= 0x1,
348 BaseBoardTypeOther
= 0x2,
349 BaseBoardTypeServerBlade
= 0x3,
350 BaseBoardTypeConnectivitySwitch
= 0x4,
351 BaseBoardTypeSystemManagementModule
= 0x5,
352 BaseBoardTypeProcessorModule
= 0x6,
353 BaseBoardTypeIOModule
= 0x7,
354 BaseBoardTypeMemoryModule
= 0x8,
355 BaseBoardTypeDaughterBoard
= 0x9,
356 BaseBoardTypeMotherBoard
= 0xA,
357 BaseBoardTypeProcessorMemoryModule
= 0xB,
358 BaseBoardTypeProcessorIOModule
= 0xC,
359 BaseBoardTypeInterconnectBoard
= 0xD
363 /// Base Board (or Module) Information (Type 2).
365 /// The information in this structure defines attributes of a system baseboard -
366 /// for example a motherboard, planar, or server blade or other standard system module.
369 SMBIOS_STRUCTURE Hdr
;
370 SMBIOS_TABLE_STRING Manufacturer
;
371 SMBIOS_TABLE_STRING ProductName
;
372 SMBIOS_TABLE_STRING Version
;
373 SMBIOS_TABLE_STRING SerialNumber
;
374 SMBIOS_TABLE_STRING AssetTag
;
375 BASE_BOARD_FEATURE_FLAGS FeatureFlag
;
376 SMBIOS_TABLE_STRING LocationInChassis
;
377 UINT16 ChassisHandle
;
378 UINT8 BoardType
; ///< The enumeration value from BASE_BOARD_TYPE.
379 UINT8 NumberOfContainedObjectHandles
;
380 UINT16 ContainedObjectHandles
[1];
381 } SMBIOS_TABLE_TYPE2
;
384 /// System Enclosure or Chassis Types
387 MiscChassisTypeOther
= 0x01,
388 MiscChassisTypeUnknown
= 0x02,
389 MiscChassisTypeDeskTop
= 0x03,
390 MiscChassisTypeLowProfileDesktop
= 0x04,
391 MiscChassisTypePizzaBox
= 0x05,
392 MiscChassisTypeMiniTower
= 0x06,
393 MiscChassisTypeTower
= 0x07,
394 MiscChassisTypePortable
= 0x08,
395 MiscChassisTypeLapTop
= 0x09,
396 MiscChassisTypeNotebook
= 0x0A,
397 MiscChassisTypeHandHeld
= 0x0B,
398 MiscChassisTypeDockingStation
= 0x0C,
399 MiscChassisTypeAllInOne
= 0x0D,
400 MiscChassisTypeSubNotebook
= 0x0E,
401 MiscChassisTypeSpaceSaving
= 0x0F,
402 MiscChassisTypeLunchBox
= 0x10,
403 MiscChassisTypeMainServerChassis
= 0x11,
404 MiscChassisTypeExpansionChassis
= 0x12,
405 MiscChassisTypeSubChassis
= 0x13,
406 MiscChassisTypeBusExpansionChassis
= 0x14,
407 MiscChassisTypePeripheralChassis
= 0x15,
408 MiscChassisTypeRaidChassis
= 0x16,
409 MiscChassisTypeRackMountChassis
= 0x17,
410 MiscChassisTypeSealedCasePc
= 0x18,
411 MiscChassisMultiSystemChassis
= 0x19,
412 MiscChassisCompactPCI
= 0x1A,
413 MiscChassisAdvancedTCA
= 0x1B,
414 MiscChassisBlade
= 0x1C,
415 MiscChassisBladeEnclosure
= 0x1D,
416 MiscChassisTablet
= 0x1E,
417 MiscChassisConvertible
= 0x1F,
418 MiscChassisDetachable
= 0x20,
419 MiscChassisIoTGateway
= 0x21,
420 MiscChassisEmbeddedPc
= 0x22,
421 MiscChassisMiniPc
= 0x23,
422 MiscChassisStickPc
= 0x24
426 /// System Enclosure or Chassis States .
429 ChassisStateOther
= 0x01,
430 ChassisStateUnknown
= 0x02,
431 ChassisStateSafe
= 0x03,
432 ChassisStateWarning
= 0x04,
433 ChassisStateCritical
= 0x05,
434 ChassisStateNonRecoverable
= 0x06
435 } MISC_CHASSIS_STATE
;
438 /// System Enclosure or Chassis Security Status.
441 ChassisSecurityStatusOther
= 0x01,
442 ChassisSecurityStatusUnknown
= 0x02,
443 ChassisSecurityStatusNone
= 0x03,
444 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
445 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
446 } MISC_CHASSIS_SECURITY_STATE
;
449 /// Contained Element record
452 UINT8 ContainedElementType
;
453 UINT8 ContainedElementMinimum
;
454 UINT8 ContainedElementMaximum
;
458 /// System Enclosure or Chassis (Type 3).
460 /// The information in this structure defines attributes of the system's mechanical enclosure(s).
461 /// For example, if a system included a separate enclosure for its peripheral devices,
462 /// two structures would be returned: one for the main, system enclosure and the second for
463 /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification
464 /// support the population of the CIM_Chassis class.
467 SMBIOS_STRUCTURE Hdr
;
468 SMBIOS_TABLE_STRING Manufacturer
;
470 SMBIOS_TABLE_STRING Version
;
471 SMBIOS_TABLE_STRING SerialNumber
;
472 SMBIOS_TABLE_STRING AssetTag
;
473 UINT8 BootupState
; ///< The enumeration value from MISC_CHASSIS_STATE.
474 UINT8 PowerSupplyState
; ///< The enumeration value from MISC_CHASSIS_STATE.
475 UINT8 ThermalState
; ///< The enumeration value from MISC_CHASSIS_STATE.
476 UINT8 SecurityStatus
; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.
479 UINT8 NumberofPowerCords
;
480 UINT8 ContainedElementCount
;
481 UINT8 ContainedElementRecordLength
;
483 // Can have 0 to (ContainedElementCount * ContainedElementRecordLength) contained elements
485 CONTAINED_ELEMENT ContainedElements
[1];
487 // Add for smbios 2.7
489 // Since ContainedElements has a variable number of entries, must not define SKUNumber in
490 // the structure. Need to reference it by starting at offset 0x15 and adding
491 // (ContainedElementCount * ContainedElementRecordLength) bytes.
493 // SMBIOS_TABLE_STRING SKUNumber;
494 } SMBIOS_TABLE_TYPE3
;
497 /// Processor Information - Processor Type.
500 ProcessorOther
= 0x01,
501 ProcessorUnknown
= 0x02,
502 CentralProcessor
= 0x03,
503 MathProcessor
= 0x04,
505 VideoProcessor
= 0x06
506 } PROCESSOR_TYPE_DATA
;
509 /// Processor Information - Processor Family.
512 ProcessorFamilyOther
= 0x01,
513 ProcessorFamilyUnknown
= 0x02,
514 ProcessorFamily8086
= 0x03,
515 ProcessorFamily80286
= 0x04,
516 ProcessorFamilyIntel386
= 0x05,
517 ProcessorFamilyIntel486
= 0x06,
518 ProcessorFamily8087
= 0x07,
519 ProcessorFamily80287
= 0x08,
520 ProcessorFamily80387
= 0x09,
521 ProcessorFamily80487
= 0x0A,
522 ProcessorFamilyPentium
= 0x0B,
523 ProcessorFamilyPentiumPro
= 0x0C,
524 ProcessorFamilyPentiumII
= 0x0D,
525 ProcessorFamilyPentiumMMX
= 0x0E,
526 ProcessorFamilyCeleron
= 0x0F,
527 ProcessorFamilyPentiumIIXeon
= 0x10,
528 ProcessorFamilyPentiumIII
= 0x11,
529 ProcessorFamilyM1
= 0x12,
530 ProcessorFamilyM2
= 0x13,
531 ProcessorFamilyIntelCeleronM
= 0x14,
532 ProcessorFamilyIntelPentium4Ht
= 0x15,
533 ProcessorFamilyAmdDuron
= 0x18,
534 ProcessorFamilyK5
= 0x19,
535 ProcessorFamilyK6
= 0x1A,
536 ProcessorFamilyK6_2
= 0x1B,
537 ProcessorFamilyK6_3
= 0x1C,
538 ProcessorFamilyAmdAthlon
= 0x1D,
539 ProcessorFamilyAmd29000
= 0x1E,
540 ProcessorFamilyK6_2Plus
= 0x1F,
541 ProcessorFamilyPowerPC
= 0x20,
542 ProcessorFamilyPowerPC601
= 0x21,
543 ProcessorFamilyPowerPC603
= 0x22,
544 ProcessorFamilyPowerPC603Plus
= 0x23,
545 ProcessorFamilyPowerPC604
= 0x24,
546 ProcessorFamilyPowerPC620
= 0x25,
547 ProcessorFamilyPowerPCx704
= 0x26,
548 ProcessorFamilyPowerPC750
= 0x27,
549 ProcessorFamilyIntelCoreDuo
= 0x28,
550 ProcessorFamilyIntelCoreDuoMobile
= 0x29,
551 ProcessorFamilyIntelCoreSoloMobile
= 0x2A,
552 ProcessorFamilyIntelAtom
= 0x2B,
553 ProcessorFamilyIntelCoreM
= 0x2C,
554 ProcessorFamilyIntelCorem3
= 0x2D,
555 ProcessorFamilyIntelCorem5
= 0x2E,
556 ProcessorFamilyIntelCorem7
= 0x2F,
557 ProcessorFamilyAlpha
= 0x30,
558 ProcessorFamilyAlpha21064
= 0x31,
559 ProcessorFamilyAlpha21066
= 0x32,
560 ProcessorFamilyAlpha21164
= 0x33,
561 ProcessorFamilyAlpha21164PC
= 0x34,
562 ProcessorFamilyAlpha21164a
= 0x35,
563 ProcessorFamilyAlpha21264
= 0x36,
564 ProcessorFamilyAlpha21364
= 0x37,
565 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM
= 0x38,
566 ProcessorFamilyAmdTurionIIDualCoreMobileM
= 0x39,
567 ProcessorFamilyAmdAthlonIIDualCoreM
= 0x3A,
568 ProcessorFamilyAmdOpteron6100Series
= 0x3B,
569 ProcessorFamilyAmdOpteron4100Series
= 0x3C,
570 ProcessorFamilyAmdOpteron6200Series
= 0x3D,
571 ProcessorFamilyAmdOpteron4200Series
= 0x3E,
572 ProcessorFamilyAmdFxSeries
= 0x3F,
573 ProcessorFamilyMips
= 0x40,
574 ProcessorFamilyMIPSR4000
= 0x41,
575 ProcessorFamilyMIPSR4200
= 0x42,
576 ProcessorFamilyMIPSR4400
= 0x43,
577 ProcessorFamilyMIPSR4600
= 0x44,
578 ProcessorFamilyMIPSR10000
= 0x45,
579 ProcessorFamilyAmdCSeries
= 0x46,
580 ProcessorFamilyAmdESeries
= 0x47,
581 ProcessorFamilyAmdASeries
= 0x48, ///< SMBIOS spec 2.8.0 updated the name
582 ProcessorFamilyAmdGSeries
= 0x49,
583 ProcessorFamilyAmdZSeries
= 0x4A,
584 ProcessorFamilyAmdRSeries
= 0x4B,
585 ProcessorFamilyAmdOpteron4300
= 0x4C,
586 ProcessorFamilyAmdOpteron6300
= 0x4D,
587 ProcessorFamilyAmdOpteron3300
= 0x4E,
588 ProcessorFamilyAmdFireProSeries
= 0x4F,
589 ProcessorFamilySparc
= 0x50,
590 ProcessorFamilySuperSparc
= 0x51,
591 ProcessorFamilymicroSparcII
= 0x52,
592 ProcessorFamilymicroSparcIIep
= 0x53,
593 ProcessorFamilyUltraSparc
= 0x54,
594 ProcessorFamilyUltraSparcII
= 0x55,
595 ProcessorFamilyUltraSparcIii
= 0x56,
596 ProcessorFamilyUltraSparcIII
= 0x57,
597 ProcessorFamilyUltraSparcIIIi
= 0x58,
598 ProcessorFamily68040
= 0x60,
599 ProcessorFamily68xxx
= 0x61,
600 ProcessorFamily68000
= 0x62,
601 ProcessorFamily68010
= 0x63,
602 ProcessorFamily68020
= 0x64,
603 ProcessorFamily68030
= 0x65,
604 ProcessorFamilyAmdAthlonX4QuadCore
= 0x66,
605 ProcessorFamilyAmdOpteronX1000Series
= 0x67,
606 ProcessorFamilyAmdOpteronX2000Series
= 0x68,
607 ProcessorFamilyAmdOpteronASeries
= 0x69,
608 ProcessorFamilyAmdOpteronX3000Series
= 0x6A,
609 ProcessorFamilyAmdZen
= 0x6B,
610 ProcessorFamilyHobbit
= 0x70,
611 ProcessorFamilyCrusoeTM5000
= 0x78,
612 ProcessorFamilyCrusoeTM3000
= 0x79,
613 ProcessorFamilyEfficeonTM8000
= 0x7A,
614 ProcessorFamilyWeitek
= 0x80,
615 ProcessorFamilyItanium
= 0x82,
616 ProcessorFamilyAmdAthlon64
= 0x83,
617 ProcessorFamilyAmdOpteron
= 0x84,
618 ProcessorFamilyAmdSempron
= 0x85,
619 ProcessorFamilyAmdTurion64Mobile
= 0x86,
620 ProcessorFamilyDualCoreAmdOpteron
= 0x87,
621 ProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
622 ProcessorFamilyAmdTurion64X2Mobile
= 0x89,
623 ProcessorFamilyQuadCoreAmdOpteron
= 0x8A,
624 ProcessorFamilyThirdGenerationAmdOpteron
= 0x8B,
625 ProcessorFamilyAmdPhenomFxQuadCore
= 0x8C,
626 ProcessorFamilyAmdPhenomX4QuadCore
= 0x8D,
627 ProcessorFamilyAmdPhenomX2DualCore
= 0x8E,
628 ProcessorFamilyAmdAthlonX2DualCore
= 0x8F,
629 ProcessorFamilyPARISC
= 0x90,
630 ProcessorFamilyPaRisc8500
= 0x91,
631 ProcessorFamilyPaRisc8000
= 0x92,
632 ProcessorFamilyPaRisc7300LC
= 0x93,
633 ProcessorFamilyPaRisc7200
= 0x94,
634 ProcessorFamilyPaRisc7100LC
= 0x95,
635 ProcessorFamilyPaRisc7100
= 0x96,
636 ProcessorFamilyV30
= 0xA0,
637 ProcessorFamilyQuadCoreIntelXeon3200Series
= 0xA1,
638 ProcessorFamilyDualCoreIntelXeon3000Series
= 0xA2,
639 ProcessorFamilyQuadCoreIntelXeon5300Series
= 0xA3,
640 ProcessorFamilyDualCoreIntelXeon5100Series
= 0xA4,
641 ProcessorFamilyDualCoreIntelXeon5000Series
= 0xA5,
642 ProcessorFamilyDualCoreIntelXeonLV
= 0xA6,
643 ProcessorFamilyDualCoreIntelXeonULV
= 0xA7,
644 ProcessorFamilyDualCoreIntelXeon7100Series
= 0xA8,
645 ProcessorFamilyQuadCoreIntelXeon5400Series
= 0xA9,
646 ProcessorFamilyQuadCoreIntelXeon
= 0xAA,
647 ProcessorFamilyDualCoreIntelXeon5200Series
= 0xAB,
648 ProcessorFamilyDualCoreIntelXeon7200Series
= 0xAC,
649 ProcessorFamilyQuadCoreIntelXeon7300Series
= 0xAD,
650 ProcessorFamilyQuadCoreIntelXeon7400Series
= 0xAE,
651 ProcessorFamilyMultiCoreIntelXeon7400Series
= 0xAF,
652 ProcessorFamilyPentiumIIIXeon
= 0xB0,
653 ProcessorFamilyPentiumIIISpeedStep
= 0xB1,
654 ProcessorFamilyPentium4
= 0xB2,
655 ProcessorFamilyIntelXeon
= 0xB3,
656 ProcessorFamilyAS400
= 0xB4,
657 ProcessorFamilyIntelXeonMP
= 0xB5,
658 ProcessorFamilyAMDAthlonXP
= 0xB6,
659 ProcessorFamilyAMDAthlonMP
= 0xB7,
660 ProcessorFamilyIntelItanium2
= 0xB8,
661 ProcessorFamilyIntelPentiumM
= 0xB9,
662 ProcessorFamilyIntelCeleronD
= 0xBA,
663 ProcessorFamilyIntelPentiumD
= 0xBB,
664 ProcessorFamilyIntelPentiumEx
= 0xBC,
665 ProcessorFamilyIntelCoreSolo
= 0xBD, ///< SMBIOS spec 2.6 updated this value
666 ProcessorFamilyReserved
= 0xBE,
667 ProcessorFamilyIntelCore2
= 0xBF,
668 ProcessorFamilyIntelCore2Solo
= 0xC0,
669 ProcessorFamilyIntelCore2Extreme
= 0xC1,
670 ProcessorFamilyIntelCore2Quad
= 0xC2,
671 ProcessorFamilyIntelCore2ExtremeMobile
= 0xC3,
672 ProcessorFamilyIntelCore2DuoMobile
= 0xC4,
673 ProcessorFamilyIntelCore2SoloMobile
= 0xC5,
674 ProcessorFamilyIntelCoreI7
= 0xC6,
675 ProcessorFamilyDualCoreIntelCeleron
= 0xC7,
676 ProcessorFamilyIBM390
= 0xC8,
677 ProcessorFamilyG4
= 0xC9,
678 ProcessorFamilyG5
= 0xCA,
679 ProcessorFamilyG6
= 0xCB,
680 ProcessorFamilyzArchitecture
= 0xCC,
681 ProcessorFamilyIntelCoreI5
= 0xCD,
682 ProcessorFamilyIntelCoreI3
= 0xCE,
683 ProcessorFamilyIntelCoreI9
= 0xCF,
684 ProcessorFamilyViaC7M
= 0xD2,
685 ProcessorFamilyViaC7D
= 0xD3,
686 ProcessorFamilyViaC7
= 0xD4,
687 ProcessorFamilyViaEden
= 0xD5,
688 ProcessorFamilyMultiCoreIntelXeon
= 0xD6,
689 ProcessorFamilyDualCoreIntelXeon3Series
= 0xD7,
690 ProcessorFamilyQuadCoreIntelXeon3Series
= 0xD8,
691 ProcessorFamilyViaNano
= 0xD9,
692 ProcessorFamilyDualCoreIntelXeon5Series
= 0xDA,
693 ProcessorFamilyQuadCoreIntelXeon5Series
= 0xDB,
694 ProcessorFamilyDualCoreIntelXeon7Series
= 0xDD,
695 ProcessorFamilyQuadCoreIntelXeon7Series
= 0xDE,
696 ProcessorFamilyMultiCoreIntelXeon7Series
= 0xDF,
697 ProcessorFamilyMultiCoreIntelXeon3400Series
= 0xE0,
698 ProcessorFamilyAmdOpteron3000Series
= 0xE4,
699 ProcessorFamilyAmdSempronII
= 0xE5,
700 ProcessorFamilyEmbeddedAmdOpteronQuadCore
= 0xE6,
701 ProcessorFamilyAmdPhenomTripleCore
= 0xE7,
702 ProcessorFamilyAmdTurionUltraDualCoreMobile
= 0xE8,
703 ProcessorFamilyAmdTurionDualCoreMobile
= 0xE9,
704 ProcessorFamilyAmdAthlonDualCore
= 0xEA,
705 ProcessorFamilyAmdSempronSI
= 0xEB,
706 ProcessorFamilyAmdPhenomII
= 0xEC,
707 ProcessorFamilyAmdAthlonII
= 0xED,
708 ProcessorFamilySixCoreAmdOpteron
= 0xEE,
709 ProcessorFamilyAmdSempronM
= 0xEF,
710 ProcessorFamilyi860
= 0xFA,
711 ProcessorFamilyi960
= 0xFB,
712 ProcessorFamilyIndicatorFamily2
= 0xFE,
713 ProcessorFamilyReserved1
= 0xFF
714 } PROCESSOR_FAMILY_DATA
;
717 /// Processor Information2 - Processor Family2.
720 ProcessorFamilyARMv7
= 0x0100,
721 ProcessorFamilyARMv8
= 0x0101,
722 ProcessorFamilySH3
= 0x0104,
723 ProcessorFamilySH4
= 0x0105,
724 ProcessorFamilyARM
= 0x0118,
725 ProcessorFamilyStrongARM
= 0x0119,
726 ProcessorFamily6x86
= 0x012C,
727 ProcessorFamilyMediaGX
= 0x012D,
728 ProcessorFamilyMII
= 0x012E,
729 ProcessorFamilyWinChip
= 0x0140,
730 ProcessorFamilyDSP
= 0x015E,
731 ProcessorFamilyVideoProcessor
= 0x01F4,
732 ProcessorFamilyRiscvRV32
= 0x0200,
733 ProcessorFamilyRiscVRV64
= 0x0201,
734 ProcessorFamilyRiscVRV128
= 0x0202
735 } PROCESSOR_FAMILY2_DATA
;
738 /// Processor Information - Voltage.
741 UINT8 ProcessorVoltageCapability5V
: 1;
742 UINT8 ProcessorVoltageCapability3_3V
: 1;
743 UINT8 ProcessorVoltageCapability2_9V
: 1;
744 UINT8 ProcessorVoltageCapabilityReserved
: 1; ///< Bit 3, must be zero.
745 UINT8 ProcessorVoltageReserved
: 3; ///< Bits 4-6, must be zero.
746 UINT8 ProcessorVoltageIndicateLegacy
: 1;
750 /// Processor Information - Processor Upgrade.
753 ProcessorUpgradeOther
= 0x01,
754 ProcessorUpgradeUnknown
= 0x02,
755 ProcessorUpgradeDaughterBoard
= 0x03,
756 ProcessorUpgradeZIFSocket
= 0x04,
757 ProcessorUpgradePiggyBack
= 0x05, ///< Replaceable.
758 ProcessorUpgradeNone
= 0x06,
759 ProcessorUpgradeLIFSocket
= 0x07,
760 ProcessorUpgradeSlot1
= 0x08,
761 ProcessorUpgradeSlot2
= 0x09,
762 ProcessorUpgrade370PinSocket
= 0x0A,
763 ProcessorUpgradeSlotA
= 0x0B,
764 ProcessorUpgradeSlotM
= 0x0C,
765 ProcessorUpgradeSocket423
= 0x0D,
766 ProcessorUpgradeSocketA
= 0x0E, ///< Socket 462.
767 ProcessorUpgradeSocket478
= 0x0F,
768 ProcessorUpgradeSocket754
= 0x10,
769 ProcessorUpgradeSocket940
= 0x11,
770 ProcessorUpgradeSocket939
= 0x12,
771 ProcessorUpgradeSocketmPGA604
= 0x13,
772 ProcessorUpgradeSocketLGA771
= 0x14,
773 ProcessorUpgradeSocketLGA775
= 0x15,
774 ProcessorUpgradeSocketS1
= 0x16,
775 ProcessorUpgradeAM2
= 0x17,
776 ProcessorUpgradeF1207
= 0x18,
777 ProcessorSocketLGA1366
= 0x19,
778 ProcessorUpgradeSocketG34
= 0x1A,
779 ProcessorUpgradeSocketAM3
= 0x1B,
780 ProcessorUpgradeSocketC32
= 0x1C,
781 ProcessorUpgradeSocketLGA1156
= 0x1D,
782 ProcessorUpgradeSocketLGA1567
= 0x1E,
783 ProcessorUpgradeSocketPGA988A
= 0x1F,
784 ProcessorUpgradeSocketBGA1288
= 0x20,
785 ProcessorUpgradeSocketrPGA988B
= 0x21,
786 ProcessorUpgradeSocketBGA1023
= 0x22,
787 ProcessorUpgradeSocketBGA1224
= 0x23,
788 ProcessorUpgradeSocketLGA1155
= 0x24, ///< SMBIOS spec 2.8.0 updated the name
789 ProcessorUpgradeSocketLGA1356
= 0x25,
790 ProcessorUpgradeSocketLGA2011
= 0x26,
791 ProcessorUpgradeSocketFS1
= 0x27,
792 ProcessorUpgradeSocketFS2
= 0x28,
793 ProcessorUpgradeSocketFM1
= 0x29,
794 ProcessorUpgradeSocketFM2
= 0x2A,
795 ProcessorUpgradeSocketLGA2011_3
= 0x2B,
796 ProcessorUpgradeSocketLGA1356_3
= 0x2C,
797 ProcessorUpgradeSocketLGA1150
= 0x2D,
798 ProcessorUpgradeSocketBGA1168
= 0x2E,
799 ProcessorUpgradeSocketBGA1234
= 0x2F,
800 ProcessorUpgradeSocketBGA1364
= 0x30,
801 ProcessorUpgradeSocketAM4
= 0x31,
802 ProcessorUpgradeSocketLGA1151
= 0x32,
803 ProcessorUpgradeSocketBGA1356
= 0x33,
804 ProcessorUpgradeSocketBGA1440
= 0x34,
805 ProcessorUpgradeSocketBGA1515
= 0x35,
806 ProcessorUpgradeSocketLGA3647_1
= 0x36,
807 ProcessorUpgradeSocketSP3
= 0x37,
808 ProcessorUpgradeSocketSP3r2
= 0x38,
809 ProcessorUpgradeSocketLGA2066
= 0x39,
810 ProcessorUpgradeSocketBGA1392
= 0x3A,
811 ProcessorUpgradeSocketBGA1510
= 0x3B,
812 ProcessorUpgradeSocketBGA1528
= 0x3C,
813 ProcessorUpgradeSocketLGA4189
= 0x3D,
814 ProcessorUpgradeSocketLGA1200
= 0x3E,
815 ProcessorUpgradeSocketLGA4677
= 0x3F
819 /// Processor ID Field Description
822 UINT32 ProcessorSteppingId
: 4;
823 UINT32 ProcessorModel
: 4;
824 UINT32 ProcessorFamily
: 4;
825 UINT32 ProcessorType
: 2;
826 UINT32 ProcessorReserved1
: 2;
827 UINT32 ProcessorXModel
: 4;
828 UINT32 ProcessorXFamily
: 8;
829 UINT32 ProcessorReserved2
: 4;
830 } PROCESSOR_SIGNATURE
;
833 UINT32 ProcessorFpu
: 1;
834 UINT32 ProcessorVme
: 1;
835 UINT32 ProcessorDe
: 1;
836 UINT32 ProcessorPse
: 1;
837 UINT32 ProcessorTsc
: 1;
838 UINT32 ProcessorMsr
: 1;
839 UINT32 ProcessorPae
: 1;
840 UINT32 ProcessorMce
: 1;
841 UINT32 ProcessorCx8
: 1;
842 UINT32 ProcessorApic
: 1;
843 UINT32 ProcessorReserved1
: 1;
844 UINT32 ProcessorSep
: 1;
845 UINT32 ProcessorMtrr
: 1;
846 UINT32 ProcessorPge
: 1;
847 UINT32 ProcessorMca
: 1;
848 UINT32 ProcessorCmov
: 1;
849 UINT32 ProcessorPat
: 1;
850 UINT32 ProcessorPse36
: 1;
851 UINT32 ProcessorPsn
: 1;
852 UINT32 ProcessorClfsh
: 1;
853 UINT32 ProcessorReserved2
: 1;
854 UINT32 ProcessorDs
: 1;
855 UINT32 ProcessorAcpi
: 1;
856 UINT32 ProcessorMmx
: 1;
857 UINT32 ProcessorFxsr
: 1;
858 UINT32 ProcessorSse
: 1;
859 UINT32 ProcessorSse2
: 1;
860 UINT32 ProcessorSs
: 1;
861 UINT32 ProcessorReserved3
: 1;
862 UINT32 ProcessorTm
: 1;
863 UINT32 ProcessorReserved4
: 2;
864 } PROCESSOR_FEATURE_FLAGS
;
867 UINT16 ProcessorReserved1
: 1;
868 UINT16 ProcessorUnknown
: 1;
869 UINT16 Processor64BitCapable
: 1;
870 UINT16 ProcessorMultiCore
: 1;
871 UINT16 ProcessorHardwareThread
: 1;
872 UINT16 ProcessorExecuteProtection
: 1;
873 UINT16 ProcessorEnhancedVirtualization
: 1;
874 UINT16 ProcessorPowerPerformanceCtrl
: 1;
875 UINT16 Processor128BitCapable
: 1;
876 UINT16 ProcessorArm64SocId
: 1;
877 UINT16 ProcessorReserved2
: 6;
878 } PROCESSOR_CHARACTERISTIC_FLAGS
;
881 /// Processor Information - Status
885 UINT8 CpuStatus
: 3; ///< Indicates the status of the processor.
886 UINT8 Reserved1
: 3; ///< Reserved for future use. Must be set to zero.
887 UINT8 SocketPopulated
: 1; ///< Indicates if the processor socket is populated or not.
888 UINT8 Reserved2
: 1; ///< Reserved for future use. Must be set to zero.
891 } PROCESSOR_STATUS_DATA
;
894 PROCESSOR_SIGNATURE Signature
;
895 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
899 /// Processor Information (Type 4).
901 /// The information in this structure defines the attributes of a single processor;
902 /// a separate structure instance is provided for each system processor socket/slot.
903 /// For example, a system with an IntelDX2 processor would have a single
904 /// structure instance, while a system with an IntelSX2 processor would have a structure
905 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
908 SMBIOS_STRUCTURE Hdr
;
909 SMBIOS_TABLE_STRING Socket
;
910 UINT8 ProcessorType
; ///< The enumeration value from PROCESSOR_TYPE_DATA.
911 UINT8 ProcessorFamily
; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
912 SMBIOS_TABLE_STRING ProcessorManufacturer
;
913 PROCESSOR_ID_DATA ProcessorId
;
914 SMBIOS_TABLE_STRING ProcessorVersion
;
915 PROCESSOR_VOLTAGE Voltage
;
916 UINT16 ExternalClock
;
920 UINT8 ProcessorUpgrade
; ///< The enumeration value from PROCESSOR_UPGRADE.
921 UINT16 L1CacheHandle
;
922 UINT16 L2CacheHandle
;
923 UINT16 L3CacheHandle
;
924 SMBIOS_TABLE_STRING SerialNumber
;
925 SMBIOS_TABLE_STRING AssetTag
;
926 SMBIOS_TABLE_STRING PartNumber
;
928 // Add for smbios 2.5
931 UINT8 EnabledCoreCount
;
933 UINT16 ProcessorCharacteristics
;
935 // Add for smbios 2.6
937 UINT16 ProcessorFamily2
;
939 // Add for smbios 3.0
942 UINT16 EnabledCoreCount2
;
944 } SMBIOS_TABLE_TYPE4
;
947 /// Memory Controller Error Detecting Method.
950 ErrorDetectingMethodOther
= 0x01,
951 ErrorDetectingMethodUnknown
= 0x02,
952 ErrorDetectingMethodNone
= 0x03,
953 ErrorDetectingMethodParity
= 0x04,
954 ErrorDetectingMethod32Ecc
= 0x05,
955 ErrorDetectingMethod64Ecc
= 0x06,
956 ErrorDetectingMethod128Ecc
= 0x07,
957 ErrorDetectingMethodCrc
= 0x08
958 } MEMORY_ERROR_DETECT_METHOD
;
961 /// Memory Controller Error Correcting Capability.
967 UINT8 SingleBitErrorCorrect
: 1;
968 UINT8 DoubleBitErrorCorrect
: 1;
969 UINT8 ErrorScrubbing
: 1;
971 } MEMORY_ERROR_CORRECT_CAPABILITY
;
974 /// Memory Controller Information - Interleave Support.
977 MemoryInterleaveOther
= 0x01,
978 MemoryInterleaveUnknown
= 0x02,
979 MemoryInterleaveOneWay
= 0x03,
980 MemoryInterleaveTwoWay
= 0x04,
981 MemoryInterleaveFourWay
= 0x05,
982 MemoryInterleaveEightWay
= 0x06,
983 MemoryInterleaveSixteenWay
= 0x07
984 } MEMORY_SUPPORT_INTERLEAVE_TYPE
;
987 /// Memory Controller Information - Memory Speeds.
992 UINT16 SeventyNs
: 1;
995 UINT16 Reserved
: 11;
999 /// Memory Controller Information (Type 5, Obsolete).
1001 /// The information in this structure defines the attributes of the system's memory controller(s)
1002 /// and the supported attributes of any memory-modules present in the sockets controlled by
1003 /// this controller.
1004 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
1005 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
1006 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
1007 /// choose to implement both memory description types to allow existing DMI browsers
1008 /// to properly display the system's memory attributes.
1011 SMBIOS_STRUCTURE Hdr
;
1012 UINT8 ErrDetectMethod
; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
1013 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability
;
1014 UINT8 SupportInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
1015 UINT8 CurrentInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
1016 UINT8 MaxMemoryModuleSize
;
1017 MEMORY_SPEED_TYPE SupportSpeed
;
1018 UINT16 SupportMemoryType
;
1019 UINT8 MemoryModuleVoltage
;
1020 UINT8 AssociatedMemorySlotNum
;
1021 UINT16 MemoryModuleConfigHandles
[1];
1022 } SMBIOS_TABLE_TYPE5
;
1025 /// Memory Module Information - Memory Types
1030 UINT16 Standard
: 1;
1031 UINT16 FastPageMode
: 1;
1037 UINT16 BurstEdo
: 1;
1039 UINT16 Reserved
: 5;
1040 } MEMORY_CURRENT_TYPE
;
1043 /// Memory Module Information - Memory Size.
1046 UINT8 InstalledOrEnabledSize
: 7; ///< Size (n), where 2**n is the size in MB.
1047 UINT8 SingleOrDoubleBank
: 1;
1048 } MEMORY_INSTALLED_ENABLED_SIZE
;
1051 /// Memory Module Information (Type 6, Obsolete)
1053 /// One Memory Module Information structure is included for each memory-module socket
1054 /// in the system. The structure describes the speed, type, size, and error status
1055 /// of each system memory module. The supported attributes of each module are described
1056 /// by the "owning" Memory Controller Information structure.
1057 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
1058 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
1059 /// and Memory Device (Type 17) structures should be used instead.
1062 SMBIOS_STRUCTURE Hdr
;
1063 SMBIOS_TABLE_STRING SocketDesignation
;
1064 UINT8 BankConnections
;
1066 MEMORY_CURRENT_TYPE CurrentMemoryType
;
1067 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
1068 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
1070 } SMBIOS_TABLE_TYPE6
;
1073 /// Cache Information - SRAM Type.
1078 UINT16 NonBurst
: 1;
1080 UINT16 PipelineBurst
: 1;
1081 UINT16 Synchronous
: 1;
1082 UINT16 Asynchronous
: 1;
1083 UINT16 Reserved
: 9;
1084 } CACHE_SRAM_TYPE_DATA
;
1087 /// Cache Information - Error Correction Type.
1090 CacheErrorOther
= 0x01,
1091 CacheErrorUnknown
= 0x02,
1092 CacheErrorNone
= 0x03,
1093 CacheErrorParity
= 0x04,
1094 CacheErrorSingleBit
= 0x05, ///< ECC
1095 CacheErrorMultiBit
= 0x06 ///< ECC
1096 } CACHE_ERROR_TYPE_DATA
;
1099 /// Cache Information - System Cache Type.
1102 CacheTypeOther
= 0x01,
1103 CacheTypeUnknown
= 0x02,
1104 CacheTypeInstruction
= 0x03,
1105 CacheTypeData
= 0x04,
1106 CacheTypeUnified
= 0x05
1110 /// Cache Information - Associativity.
1113 CacheAssociativityOther
= 0x01,
1114 CacheAssociativityUnknown
= 0x02,
1115 CacheAssociativityDirectMapped
= 0x03,
1116 CacheAssociativity2Way
= 0x04,
1117 CacheAssociativity4Way
= 0x05,
1118 CacheAssociativityFully
= 0x06,
1119 CacheAssociativity8Way
= 0x07,
1120 CacheAssociativity16Way
= 0x08,
1121 CacheAssociativity12Way
= 0x09,
1122 CacheAssociativity24Way
= 0x0A,
1123 CacheAssociativity32Way
= 0x0B,
1124 CacheAssociativity48Way
= 0x0C,
1125 CacheAssociativity64Way
= 0x0D,
1126 CacheAssociativity20Way
= 0x0E
1127 } CACHE_ASSOCIATIVITY_DATA
;
1130 /// Cache Information (Type 7).
1132 /// The information in this structure defines the attributes of CPU cache device in the system.
1133 /// One structure is specified for each such device, whether the device is internal to
1134 /// or external to the CPU module. Cache modules can be associated with a processor structure
1135 /// in one or two ways, depending on the SMBIOS version.
1138 SMBIOS_STRUCTURE Hdr
;
1139 SMBIOS_TABLE_STRING SocketDesignation
;
1140 UINT16 CacheConfiguration
;
1141 UINT16 MaximumCacheSize
;
1142 UINT16 InstalledSize
;
1143 CACHE_SRAM_TYPE_DATA SupportedSRAMType
;
1144 CACHE_SRAM_TYPE_DATA CurrentSRAMType
;
1146 UINT8 ErrorCorrectionType
; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
1147 UINT8 SystemCacheType
; ///< The enumeration value from CACHE_TYPE_DATA.
1148 UINT8 Associativity
; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
1150 // Add for smbios 3.1.0
1152 UINT32 MaximumCacheSize2
;
1153 UINT32 InstalledSize2
;
1154 } SMBIOS_TABLE_TYPE7
;
1157 /// Port Connector Information - Connector Types.
1160 PortConnectorTypeNone
= 0x00,
1161 PortConnectorTypeCentronics
= 0x01,
1162 PortConnectorTypeMiniCentronics
= 0x02,
1163 PortConnectorTypeProprietary
= 0x03,
1164 PortConnectorTypeDB25Male
= 0x04,
1165 PortConnectorTypeDB25Female
= 0x05,
1166 PortConnectorTypeDB15Male
= 0x06,
1167 PortConnectorTypeDB15Female
= 0x07,
1168 PortConnectorTypeDB9Male
= 0x08,
1169 PortConnectorTypeDB9Female
= 0x09,
1170 PortConnectorTypeRJ11
= 0x0A,
1171 PortConnectorTypeRJ45
= 0x0B,
1172 PortConnectorType50PinMiniScsi
= 0x0C,
1173 PortConnectorTypeMiniDin
= 0x0D,
1174 PortConnectorTypeMicroDin
= 0x0E,
1175 PortConnectorTypePS2
= 0x0F,
1176 PortConnectorTypeInfrared
= 0x10,
1177 PortConnectorTypeHpHil
= 0x11,
1178 PortConnectorTypeUsb
= 0x12,
1179 PortConnectorTypeSsaScsi
= 0x13,
1180 PortConnectorTypeCircularDin8Male
= 0x14,
1181 PortConnectorTypeCircularDin8Female
= 0x15,
1182 PortConnectorTypeOnboardIde
= 0x16,
1183 PortConnectorTypeOnboardFloppy
= 0x17,
1184 PortConnectorType9PinDualInline
= 0x18,
1185 PortConnectorType25PinDualInline
= 0x19,
1186 PortConnectorType50PinDualInline
= 0x1A,
1187 PortConnectorType68PinDualInline
= 0x1B,
1188 PortConnectorTypeOnboardSoundInput
= 0x1C,
1189 PortConnectorTypeMiniCentronicsType14
= 0x1D,
1190 PortConnectorTypeMiniCentronicsType26
= 0x1E,
1191 PortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1192 PortConnectorTypeBNC
= 0x20,
1193 PortConnectorType1394
= 0x21,
1194 PortConnectorTypeSasSata
= 0x22,
1195 PortConnectorTypeUsbTypeC
= 0x23,
1196 PortConnectorTypePC98
= 0xA0,
1197 PortConnectorTypePC98Hireso
= 0xA1,
1198 PortConnectorTypePCH98
= 0xA2,
1199 PortConnectorTypePC98Note
= 0xA3,
1200 PortConnectorTypePC98Full
= 0xA4,
1201 PortConnectorTypeOther
= 0xFF
1202 } MISC_PORT_CONNECTOR_TYPE
;
1205 /// Port Connector Information - Port Types
1208 PortTypeNone
= 0x00,
1209 PortTypeParallelXtAtCompatible
= 0x01,
1210 PortTypeParallelPortPs2
= 0x02,
1211 PortTypeParallelPortEcp
= 0x03,
1212 PortTypeParallelPortEpp
= 0x04,
1213 PortTypeParallelPortEcpEpp
= 0x05,
1214 PortTypeSerialXtAtCompatible
= 0x06,
1215 PortTypeSerial16450Compatible
= 0x07,
1216 PortTypeSerial16550Compatible
= 0x08,
1217 PortTypeSerial16550ACompatible
= 0x09,
1218 PortTypeScsi
= 0x0A,
1219 PortTypeMidi
= 0x0B,
1220 PortTypeJoyStick
= 0x0C,
1221 PortTypeKeyboard
= 0x0D,
1222 PortTypeMouse
= 0x0E,
1223 PortTypeSsaScsi
= 0x0F,
1225 PortTypeFireWire
= 0x11,
1226 PortTypePcmciaTypeI
= 0x12,
1227 PortTypePcmciaTypeII
= 0x13,
1228 PortTypePcmciaTypeIII
= 0x14,
1229 PortTypeCardBus
= 0x15,
1230 PortTypeAccessBusPort
= 0x16,
1231 PortTypeScsiII
= 0x17,
1232 PortTypeScsiWide
= 0x18,
1233 PortTypePC98
= 0x19,
1234 PortTypePC98Hireso
= 0x1A,
1235 PortTypePCH98
= 0x1B,
1236 PortTypeVideoPort
= 0x1C,
1237 PortTypeAudioPort
= 0x1D,
1238 PortTypeModemPort
= 0x1E,
1239 PortTypeNetworkPort
= 0x1F,
1240 PortTypeSata
= 0x20,
1242 PortTypeMfdp
= 0x22, ///< Multi-Function Display Port
1243 PortTypeThunderbolt
= 0x23,
1244 PortType8251Compatible
= 0xA0,
1245 PortType8251FifoCompatible
= 0xA1,
1246 PortTypeOther
= 0xFF
1250 /// Port Connector Information (Type 8).
1252 /// The information in this structure defines the attributes of a system port connector,
1253 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
1254 /// are provided. One structure is present for each port provided by the system.
1257 SMBIOS_STRUCTURE Hdr
;
1258 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
1259 UINT8 InternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1260 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
1261 UINT8 ExternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1262 UINT8 PortType
; ///< The enumeration value from MISC_PORT_TYPE.
1263 } SMBIOS_TABLE_TYPE8
;
1266 /// System Slots - Slot Type
1269 SlotTypeOther
= 0x01,
1270 SlotTypeUnknown
= 0x02,
1273 SlotTypeEisa
= 0x05,
1275 SlotTypePcmcia
= 0x07,
1276 SlotTypeVlVesa
= 0x08,
1277 SlotTypeProprietary
= 0x09,
1278 SlotTypeProcessorCardSlot
= 0x0A,
1279 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1280 SlotTypeIORiserCardSlot
= 0x0C,
1281 SlotTypeNuBus
= 0x0D,
1282 SlotTypePci66MhzCapable
= 0x0E,
1284 SlotTypeApg2X
= 0x10,
1285 SlotTypeAgp4X
= 0x11,
1286 SlotTypePciX
= 0x12,
1287 SlotTypeAgp8X
= 0x13,
1288 SlotTypeM2Socket1_DP
= 0x14,
1289 SlotTypeM2Socket1_SD
= 0x15,
1290 SlotTypeM2Socket2
= 0x16,
1291 SlotTypeM2Socket3
= 0x17,
1292 SlotTypeMxmTypeI
= 0x18,
1293 SlotTypeMxmTypeII
= 0x19,
1294 SlotTypeMxmTypeIIIStandard
= 0x1A,
1295 SlotTypeMxmTypeIIIHe
= 0x1B,
1296 SlotTypeMxmTypeIV
= 0x1C,
1297 SlotTypeMxm30TypeA
= 0x1D,
1298 SlotTypeMxm30TypeB
= 0x1E,
1299 SlotTypePciExpressGen2Sff_8639
= 0x1F,
1300 SlotTypePciExpressGen3Sff_8639
= 0x20,
1301 SlotTypePciExpressMini52pinWithBSKO
= 0x21, ///< PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs.
1302 SlotTypePciExpressMini52pinWithoutBSKO
= 0x22, ///< PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs.
1303 SlotTypePciExpressMini76pin
= 0x23, ///< PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card.
1304 SlotTypeCXLFlexbus10
= 0x30,
1305 SlotTypePC98C20
= 0xA0,
1306 SlotTypePC98C24
= 0xA1,
1307 SlotTypePC98E
= 0xA2,
1308 SlotTypePC98LocalBus
= 0xA3,
1309 SlotTypePC98Card
= 0xA4,
1310 SlotTypePciExpress
= 0xA5,
1311 SlotTypePciExpressX1
= 0xA6,
1312 SlotTypePciExpressX2
= 0xA7,
1313 SlotTypePciExpressX4
= 0xA8,
1314 SlotTypePciExpressX8
= 0xA9,
1315 SlotTypePciExpressX16
= 0xAA,
1316 SlotTypePciExpressGen2
= 0xAB,
1317 SlotTypePciExpressGen2X1
= 0xAC,
1318 SlotTypePciExpressGen2X2
= 0xAD,
1319 SlotTypePciExpressGen2X4
= 0xAE,
1320 SlotTypePciExpressGen2X8
= 0xAF,
1321 SlotTypePciExpressGen2X16
= 0xB0,
1322 SlotTypePciExpressGen3
= 0xB1,
1323 SlotTypePciExpressGen3X1
= 0xB2,
1324 SlotTypePciExpressGen3X2
= 0xB3,
1325 SlotTypePciExpressGen3X4
= 0xB4,
1326 SlotTypePciExpressGen3X8
= 0xB5,
1327 SlotTypePciExpressGen3X16
= 0xB6,
1328 SlotTypePciExpressGen4
= 0xB8,
1329 SlotTypePciExpressGen4X1
= 0xB9,
1330 SlotTypePciExpressGen4X2
= 0xBA,
1331 SlotTypePciExpressGen4X4
= 0xBB,
1332 SlotTypePciExpressGen4X8
= 0xBC,
1333 SlotTypePciExpressGen4X16
= 0xBD
1337 /// System Slots - Slot Data Bus Width.
1340 SlotDataBusWidthOther
= 0x01,
1341 SlotDataBusWidthUnknown
= 0x02,
1342 SlotDataBusWidth8Bit
= 0x03,
1343 SlotDataBusWidth16Bit
= 0x04,
1344 SlotDataBusWidth32Bit
= 0x05,
1345 SlotDataBusWidth64Bit
= 0x06,
1346 SlotDataBusWidth128Bit
= 0x07,
1347 SlotDataBusWidth1X
= 0x08, ///< Or X1
1348 SlotDataBusWidth2X
= 0x09, ///< Or X2
1349 SlotDataBusWidth4X
= 0x0A, ///< Or X4
1350 SlotDataBusWidth8X
= 0x0B, ///< Or X8
1351 SlotDataBusWidth12X
= 0x0C, ///< Or X12
1352 SlotDataBusWidth16X
= 0x0D, ///< Or X16
1353 SlotDataBusWidth32X
= 0x0E ///< Or X32
1354 } MISC_SLOT_DATA_BUS_WIDTH
;
1357 /// System Slots - Current Usage.
1360 SlotUsageOther
= 0x01,
1361 SlotUsageUnknown
= 0x02,
1362 SlotUsageAvailable
= 0x03,
1363 SlotUsageInUse
= 0x04,
1364 SlotUsageUnavailable
= 0x05
1368 /// System Slots - Slot Length.
1371 SlotLengthOther
= 0x01,
1372 SlotLengthUnknown
= 0x02,
1373 SlotLengthShort
= 0x03,
1374 SlotLengthLong
= 0x04
1378 /// System Slots - Slot Characteristics 1.
1381 UINT8 CharacteristicsUnknown
: 1;
1382 UINT8 Provides50Volts
: 1;
1383 UINT8 Provides33Volts
: 1;
1384 UINT8 SharedSlot
: 1;
1385 UINT8 PcCard16Supported
: 1;
1386 UINT8 CardBusSupported
: 1;
1387 UINT8 ZoomVideoSupported
: 1;
1388 UINT8 ModemRingResumeSupported
: 1;
1389 } MISC_SLOT_CHARACTERISTICS1
;
1391 /// System Slots - Slot Characteristics 2.
1394 UINT8 PmeSignalSupported
: 1;
1395 UINT8 HotPlugDevicesSupported
: 1;
1396 UINT8 SmbusSignalSupported
: 1;
1397 UINT8 BifurcationSupported
: 1;
1398 UINT8 AsyncSurpriseRemoval
: 1;
1399 UINT8 FlexbusSlotCxl10Capable
: 1;
1400 UINT8 FlexbusSlotCxl20Capable
: 1;
1401 UINT8 Reserved
: 1; ///< Set to 0.
1402 } MISC_SLOT_CHARACTERISTICS2
;
1405 /// System Slots - Peer Segment/Bus/Device/Function/Width Groups
1408 UINT16 SegmentGroupNum
;
1412 } MISC_SLOT_PEER_GROUP
;
1415 /// System Slots (Type 9)
1417 /// The information in this structure defines the attributes of a system slot.
1418 /// One structure is provided for each slot in the system.
1422 SMBIOS_STRUCTURE Hdr
;
1423 SMBIOS_TABLE_STRING SlotDesignation
;
1424 UINT8 SlotType
; ///< The enumeration value from MISC_SLOT_TYPE.
1425 UINT8 SlotDataBusWidth
; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1426 UINT8 CurrentUsage
; ///< The enumeration value from MISC_SLOT_USAGE.
1427 UINT8 SlotLength
; ///< The enumeration value from MISC_SLOT_LENGTH.
1429 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1430 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1432 // Add for smbios 2.6
1434 UINT16 SegmentGroupNum
;
1438 // Add for smbios 3.2
1441 UINT8 PeerGroupingCount
;
1442 MISC_SLOT_PEER_GROUP PeerGroups
[1];
1444 // Add for smbios 3.4
1446 UINT8 SlotInformation
;
1447 UINT8 SlotPhysicalWidth
;
1449 } SMBIOS_TABLE_TYPE9
;
1452 /// On Board Devices Information - Device Types.
1455 OnBoardDeviceTypeOther
= 0x01,
1456 OnBoardDeviceTypeUnknown
= 0x02,
1457 OnBoardDeviceTypeVideo
= 0x03,
1458 OnBoardDeviceTypeScsiController
= 0x04,
1459 OnBoardDeviceTypeEthernet
= 0x05,
1460 OnBoardDeviceTypeTokenRing
= 0x06,
1461 OnBoardDeviceTypeSound
= 0x07,
1462 OnBoardDeviceTypePATAController
= 0x08,
1463 OnBoardDeviceTypeSATAController
= 0x09,
1464 OnBoardDeviceTypeSASController
= 0x0A
1465 } MISC_ONBOARD_DEVICE_TYPE
;
1468 /// Device Item Entry
1471 UINT8 DeviceType
; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1472 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1473 SMBIOS_TABLE_STRING DescriptionString
;
1477 /// On Board Devices Information (Type 10, obsolete).
1479 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1480 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1481 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1482 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1483 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1484 /// has some level of control over the enabling of the associated device for use by the system.
1487 SMBIOS_STRUCTURE Hdr
;
1488 DEVICE_STRUCT Device
[1];
1489 } SMBIOS_TABLE_TYPE10
;
1492 /// OEM Strings (Type 11).
1493 /// This structure contains free form strings defined by the OEM. Examples of this are:
1494 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1497 SMBIOS_STRUCTURE Hdr
;
1499 } SMBIOS_TABLE_TYPE11
;
1502 /// System Configuration Options (Type 12).
1504 /// This structure contains information required to configure the base board's Jumpers and Switches.
1507 SMBIOS_STRUCTURE Hdr
;
1509 } SMBIOS_TABLE_TYPE12
;
1512 /// BIOS Language Information (Type 13).
1514 /// The information in this structure defines the installable language attributes of the BIOS.
1517 SMBIOS_STRUCTURE Hdr
;
1518 UINT8 InstallableLanguages
;
1521 SMBIOS_TABLE_STRING CurrentLanguages
;
1522 } SMBIOS_TABLE_TYPE13
;
1525 /// Group Item Entry
1533 /// Group Associations (Type 14).
1535 /// The Group Associations structure is provided for OEMs who want to specify
1536 /// the arrangement or hierarchy of certain components (including other Group Associations)
1537 /// within the system.
1540 SMBIOS_STRUCTURE Hdr
;
1541 SMBIOS_TABLE_STRING GroupName
;
1542 GROUP_STRUCT Group
[1];
1543 } SMBIOS_TABLE_TYPE14
;
1546 /// System Event Log - Event Log Types.
1549 EventLogTypeReserved
= 0x00,
1550 EventLogTypeSingleBitECC
= 0x01,
1551 EventLogTypeMultiBitECC
= 0x02,
1552 EventLogTypeParityMemErr
= 0x03,
1553 EventLogTypeBusTimeOut
= 0x04,
1554 EventLogTypeIOChannelCheck
= 0x05,
1555 EventLogTypeSoftwareNMI
= 0x06,
1556 EventLogTypePOSTMemResize
= 0x07,
1557 EventLogTypePOSTErr
= 0x08,
1558 EventLogTypePCIParityErr
= 0x09,
1559 EventLogTypePCISystemErr
= 0x0A,
1560 EventLogTypeCPUFailure
= 0x0B,
1561 EventLogTypeEISATimeOut
= 0x0C,
1562 EventLogTypeMemLogDisabled
= 0x0D,
1563 EventLogTypeLoggingDisabled
= 0x0E,
1564 EventLogTypeSysLimitExce
= 0x10,
1565 EventLogTypeAsyncHWTimer
= 0x11,
1566 EventLogTypeSysConfigInfo
= 0x12,
1567 EventLogTypeHDInfo
= 0x13,
1568 EventLogTypeSysReconfig
= 0x14,
1569 EventLogTypeUncorrectCPUErr
= 0x15,
1570 EventLogTypeAreaResetAndClr
= 0x16,
1571 EventLogTypeSystemBoot
= 0x17,
1572 EventLogTypeUnused
= 0x18, ///< 0x18 - 0x7F
1573 EventLogTypeAvailForSys
= 0x80, ///< 0x80 - 0xFE
1574 EventLogTypeEndOfLog
= 0xFF
1575 } EVENT_LOG_TYPE_DATA
;
1578 /// System Event Log - Variable Data Format Types.
1581 EventLogVariableNone
= 0x00,
1582 EventLogVariableHandle
= 0x01,
1583 EventLogVariableMutilEvent
= 0x02,
1584 EventLogVariableMutilEventHandle
= 0x03,
1585 EventLogVariablePOSTResultBitmap
= 0x04,
1586 EventLogVariableSysManagementType
= 0x05,
1587 EventLogVariableMutliEventSysManagmentType
= 0x06,
1588 EventLogVariableUnused
= 0x07,
1589 EventLogVariableOEMAssigned
= 0x80
1590 } EVENT_LOG_VARIABLE_DATA
;
1593 /// Event Log Type Descriptors
1596 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1597 UINT8 DataFormatType
;
1601 /// System Event Log (Type 15).
1603 /// The presence of this structure within the SMBIOS data returned for a system indicates
1604 /// that the system supports an event log. An event log is a fixed-length area within a
1605 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1606 /// record, followed by one or more variable-length log records.
1609 SMBIOS_STRUCTURE Hdr
;
1610 UINT16 LogAreaLength
;
1611 UINT16 LogHeaderStartOffset
;
1612 UINT16 LogDataStartOffset
;
1615 UINT32 LogChangeToken
;
1616 UINT32 AccessMethodAddress
;
1617 UINT8 LogHeaderFormat
;
1618 UINT8 NumberOfSupportedLogTypeDescriptors
;
1619 UINT8 LengthOfLogTypeDescriptor
;
1620 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
1621 } SMBIOS_TABLE_TYPE15
;
1624 /// Physical Memory Array - Location.
1627 MemoryArrayLocationOther
= 0x01,
1628 MemoryArrayLocationUnknown
= 0x02,
1629 MemoryArrayLocationSystemBoard
= 0x03,
1630 MemoryArrayLocationIsaAddonCard
= 0x04,
1631 MemoryArrayLocationEisaAddonCard
= 0x05,
1632 MemoryArrayLocationPciAddonCard
= 0x06,
1633 MemoryArrayLocationMcaAddonCard
= 0x07,
1634 MemoryArrayLocationPcmciaAddonCard
= 0x08,
1635 MemoryArrayLocationProprietaryAddonCard
= 0x09,
1636 MemoryArrayLocationNuBus
= 0x0A,
1637 MemoryArrayLocationPc98C20AddonCard
= 0xA0,
1638 MemoryArrayLocationPc98C24AddonCard
= 0xA1,
1639 MemoryArrayLocationPc98EAddonCard
= 0xA2,
1640 MemoryArrayLocationPc98LocalBusAddonCard
= 0xA3,
1641 MemoryArrayLocationCXLAddonCard
= 0xA4
1642 } MEMORY_ARRAY_LOCATION
;
1645 /// Physical Memory Array - Use.
1648 MemoryArrayUseOther
= 0x01,
1649 MemoryArrayUseUnknown
= 0x02,
1650 MemoryArrayUseSystemMemory
= 0x03,
1651 MemoryArrayUseVideoMemory
= 0x04,
1652 MemoryArrayUseFlashMemory
= 0x05,
1653 MemoryArrayUseNonVolatileRam
= 0x06,
1654 MemoryArrayUseCacheMemory
= 0x07
1658 /// Physical Memory Array - Error Correction Types.
1661 MemoryErrorCorrectionOther
= 0x01,
1662 MemoryErrorCorrectionUnknown
= 0x02,
1663 MemoryErrorCorrectionNone
= 0x03,
1664 MemoryErrorCorrectionParity
= 0x04,
1665 MemoryErrorCorrectionSingleBitEcc
= 0x05,
1666 MemoryErrorCorrectionMultiBitEcc
= 0x06,
1667 MemoryErrorCorrectionCrc
= 0x07
1668 } MEMORY_ERROR_CORRECTION
;
1671 /// Physical Memory Array (Type 16).
1673 /// This structure describes a collection of memory devices that operate
1674 /// together to form a memory address space.
1677 SMBIOS_STRUCTURE Hdr
;
1678 UINT8 Location
; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1679 UINT8 Use
; ///< The enumeration value from MEMORY_ARRAY_USE.
1680 UINT8 MemoryErrorCorrection
; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1681 UINT32 MaximumCapacity
;
1682 UINT16 MemoryErrorInformationHandle
;
1683 UINT16 NumberOfMemoryDevices
;
1685 // Add for smbios 2.7
1687 UINT64 ExtendedMaximumCapacity
;
1688 } SMBIOS_TABLE_TYPE16
;
1691 /// Memory Device - Form Factor.
1694 MemoryFormFactorOther
= 0x01,
1695 MemoryFormFactorUnknown
= 0x02,
1696 MemoryFormFactorSimm
= 0x03,
1697 MemoryFormFactorSip
= 0x04,
1698 MemoryFormFactorChip
= 0x05,
1699 MemoryFormFactorDip
= 0x06,
1700 MemoryFormFactorZip
= 0x07,
1701 MemoryFormFactorProprietaryCard
= 0x08,
1702 MemoryFormFactorDimm
= 0x09,
1703 MemoryFormFactorTsop
= 0x0A,
1704 MemoryFormFactorRowOfChips
= 0x0B,
1705 MemoryFormFactorRimm
= 0x0C,
1706 MemoryFormFactorSodimm
= 0x0D,
1707 MemoryFormFactorSrimm
= 0x0E,
1708 MemoryFormFactorFbDimm
= 0x0F,
1709 MemoryFormFactorDie
= 0x10
1710 } MEMORY_FORM_FACTOR
;
1713 /// Memory Device - Type
1716 MemoryTypeOther
= 0x01,
1717 MemoryTypeUnknown
= 0x02,
1718 MemoryTypeDram
= 0x03,
1719 MemoryTypeEdram
= 0x04,
1720 MemoryTypeVram
= 0x05,
1721 MemoryTypeSram
= 0x06,
1722 MemoryTypeRam
= 0x07,
1723 MemoryTypeRom
= 0x08,
1724 MemoryTypeFlash
= 0x09,
1725 MemoryTypeEeprom
= 0x0A,
1726 MemoryTypeFeprom
= 0x0B,
1727 MemoryTypeEprom
= 0x0C,
1728 MemoryTypeCdram
= 0x0D,
1729 MemoryType3Dram
= 0x0E,
1730 MemoryTypeSdram
= 0x0F,
1731 MemoryTypeSgram
= 0x10,
1732 MemoryTypeRdram
= 0x11,
1733 MemoryTypeDdr
= 0x12,
1734 MemoryTypeDdr2
= 0x13,
1735 MemoryTypeDdr2FbDimm
= 0x14,
1736 MemoryTypeDdr3
= 0x18,
1737 MemoryTypeFbd2
= 0x19,
1738 MemoryTypeDdr4
= 0x1A,
1739 MemoryTypeLpddr
= 0x1B,
1740 MemoryTypeLpddr2
= 0x1C,
1741 MemoryTypeLpddr3
= 0x1D,
1742 MemoryTypeLpddr4
= 0x1E,
1743 MemoryTypeLogicalNonVolatileDevice
= 0x1F,
1744 MemoryTypeHBM
= 0x20,
1745 MemoryTypeHBM2
= 0x21,
1746 MemoryTypeDdr5
= 0x22,
1747 MemoryTypeLpddr5
= 0x23
1748 } MEMORY_DEVICE_TYPE
;
1751 /// Memory Device - Type Detail
1754 UINT16 Reserved
: 1;
1757 UINT16 FastPaged
: 1;
1758 UINT16 StaticColumn
: 1;
1759 UINT16 PseudoStatic
: 1;
1761 UINT16 Synchronous
: 1;
1764 UINT16 WindowDram
: 1;
1765 UINT16 CacheDram
: 1;
1766 UINT16 Nonvolatile
: 1;
1767 UINT16 Registered
: 1;
1768 UINT16 Unbuffered
: 1;
1770 } MEMORY_DEVICE_TYPE_DETAIL
;
1773 /// Memory Device - Memory Technology
1776 MemoryTechnologyOther
= 0x01,
1777 MemoryTechnologyUnknown
= 0x02,
1778 MemoryTechnologyDram
= 0x03,
1779 MemoryTechnologyNvdimmN
= 0x04,
1780 MemoryTechnologyNvdimmF
= 0x05,
1781 MemoryTechnologyNvdimmP
= 0x06,
1783 // This definition is updated to represent Intel
1784 // Optane DC Persistent Memory in SMBIOS spec 3.4.0
1786 MemoryTechnologyIntelOptanePersistentMemory
= 0x07
1787 } MEMORY_DEVICE_TECHNOLOGY
;
1790 /// Memory Device - Memory Operating Mode Capability
1794 /// Individual bit fields
1797 UINT16 Reserved
: 1; ///< Set to 0.
1800 UINT16 VolatileMemory
: 1;
1801 UINT16 ByteAccessiblePersistentMemory
: 1;
1802 UINT16 BlockAccessiblePersistentMemory
: 1;
1803 UINT16 Reserved2
: 10; ///< Set to 0.
1806 /// All bit fields as a 16-bit value
1809 } MEMORY_DEVICE_OPERATING_MODE_CAPABILITY
;
1812 /// Memory Device (Type 17).
1814 /// This structure describes a single memory device that is part of
1815 /// a larger Physical Memory Array (Type 16).
1816 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1817 /// includes a Memory Device structure instance for each slot, whether or not the
1818 /// socket is currently populated.
1821 SMBIOS_STRUCTURE Hdr
;
1822 UINT16 MemoryArrayHandle
;
1823 UINT16 MemoryErrorInformationHandle
;
1827 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
1829 SMBIOS_TABLE_STRING DeviceLocator
;
1830 SMBIOS_TABLE_STRING BankLocator
;
1831 UINT8 MemoryType
; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1832 MEMORY_DEVICE_TYPE_DETAIL TypeDetail
;
1834 SMBIOS_TABLE_STRING Manufacturer
;
1835 SMBIOS_TABLE_STRING SerialNumber
;
1836 SMBIOS_TABLE_STRING AssetTag
;
1837 SMBIOS_TABLE_STRING PartNumber
;
1839 // Add for smbios 2.6
1843 // Add for smbios 2.7
1845 UINT32 ExtendedSize
;
1847 // Keep using name "ConfiguredMemoryClockSpeed" for compatibility
1848 // although this field is renamed from "Configured Memory Clock Speed"
1849 // to "Configured Memory Speed" in smbios 3.2.0.
1851 UINT16 ConfiguredMemoryClockSpeed
;
1853 // Add for smbios 2.8.0
1855 UINT16 MinimumVoltage
;
1856 UINT16 MaximumVoltage
;
1857 UINT16 ConfiguredVoltage
;
1859 // Add for smbios 3.2.0
1861 UINT8 MemoryTechnology
; ///< The enumeration value from MEMORY_DEVICE_TECHNOLOGY
1862 MEMORY_DEVICE_OPERATING_MODE_CAPABILITY MemoryOperatingModeCapability
;
1863 SMBIOS_TABLE_STRING FirmwareVersion
;
1864 UINT16 ModuleManufacturerID
;
1865 UINT16 ModuleProductID
;
1866 UINT16 MemorySubsystemControllerManufacturerID
;
1867 UINT16 MemorySubsystemControllerProductID
;
1868 UINT64 NonVolatileSize
;
1869 UINT64 VolatileSize
;
1873 // Add for smbios 3.3.0
1875 UINT32 ExtendedSpeed
;
1876 UINT32 ExtendedConfiguredMemorySpeed
;
1877 } SMBIOS_TABLE_TYPE17
;
1880 /// 32-bit Memory Error Information - Error Type.
1883 MemoryErrorOther
= 0x01,
1884 MemoryErrorUnknown
= 0x02,
1885 MemoryErrorOk
= 0x03,
1886 MemoryErrorBadRead
= 0x04,
1887 MemoryErrorParity
= 0x05,
1888 MemoryErrorSigleBit
= 0x06,
1889 MemoryErrorDoubleBit
= 0x07,
1890 MemoryErrorMultiBit
= 0x08,
1891 MemoryErrorNibble
= 0x09,
1892 MemoryErrorChecksum
= 0x0A,
1893 MemoryErrorCrc
= 0x0B,
1894 MemoryErrorCorrectSingleBit
= 0x0C,
1895 MemoryErrorCorrected
= 0x0D,
1896 MemoryErrorUnCorrectable
= 0x0E
1897 } MEMORY_ERROR_TYPE
;
1900 /// 32-bit Memory Error Information - Error Granularity.
1903 MemoryGranularityOther
= 0x01,
1904 MemoryGranularityOtherUnknown
= 0x02,
1905 MemoryGranularityDeviceLevel
= 0x03,
1906 MemoryGranularityMemPartitionLevel
= 0x04
1907 } MEMORY_ERROR_GRANULARITY
;
1910 /// 32-bit Memory Error Information - Error Operation.
1913 MemoryErrorOperationOther
= 0x01,
1914 MemoryErrorOperationUnknown
= 0x02,
1915 MemoryErrorOperationRead
= 0x03,
1916 MemoryErrorOperationWrite
= 0x04,
1917 MemoryErrorOperationPartialWrite
= 0x05
1918 } MEMORY_ERROR_OPERATION
;
1921 /// 32-bit Memory Error Information (Type 18).
1923 /// This structure identifies the specifics of an error that might be detected
1924 /// within a Physical Memory Array.
1927 SMBIOS_STRUCTURE Hdr
;
1928 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1929 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1930 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1931 UINT32 VendorSyndrome
;
1932 UINT32 MemoryArrayErrorAddress
;
1933 UINT32 DeviceErrorAddress
;
1934 UINT32 ErrorResolution
;
1935 } SMBIOS_TABLE_TYPE18
;
1938 /// Memory Array Mapped Address (Type 19).
1940 /// This structure provides the address mapping for a Physical Memory Array.
1941 /// One structure is present for each contiguous address range described.
1944 SMBIOS_STRUCTURE Hdr
;
1945 UINT32 StartingAddress
;
1946 UINT32 EndingAddress
;
1947 UINT16 MemoryArrayHandle
;
1948 UINT8 PartitionWidth
;
1950 // Add for smbios 2.7
1952 UINT64 ExtendedStartingAddress
;
1953 UINT64 ExtendedEndingAddress
;
1954 } SMBIOS_TABLE_TYPE19
;
1957 /// Memory Device Mapped Address (Type 20).
1959 /// This structure maps memory address space usually to a device-level granularity.
1960 /// One structure is present for each contiguous address range described.
1963 SMBIOS_STRUCTURE Hdr
;
1964 UINT32 StartingAddress
;
1965 UINT32 EndingAddress
;
1966 UINT16 MemoryDeviceHandle
;
1967 UINT16 MemoryArrayMappedAddressHandle
;
1968 UINT8 PartitionRowPosition
;
1969 UINT8 InterleavePosition
;
1970 UINT8 InterleavedDataDepth
;
1972 // Add for smbios 2.7
1974 UINT64 ExtendedStartingAddress
;
1975 UINT64 ExtendedEndingAddress
;
1976 } SMBIOS_TABLE_TYPE20
;
1979 /// Built-in Pointing Device - Type
1982 PointingDeviceTypeOther
= 0x01,
1983 PointingDeviceTypeUnknown
= 0x02,
1984 PointingDeviceTypeMouse
= 0x03,
1985 PointingDeviceTypeTrackBall
= 0x04,
1986 PointingDeviceTypeTrackPoint
= 0x05,
1987 PointingDeviceTypeGlidePoint
= 0x06,
1988 PointingDeviceTouchPad
= 0x07,
1989 PointingDeviceTouchScreen
= 0x08,
1990 PointingDeviceOpticalSensor
= 0x09
1991 } BUILTIN_POINTING_DEVICE_TYPE
;
1994 /// Built-in Pointing Device - Interface.
1997 PointingDeviceInterfaceOther
= 0x01,
1998 PointingDeviceInterfaceUnknown
= 0x02,
1999 PointingDeviceInterfaceSerial
= 0x03,
2000 PointingDeviceInterfacePs2
= 0x04,
2001 PointingDeviceInterfaceInfrared
= 0x05,
2002 PointingDeviceInterfaceHpHil
= 0x06,
2003 PointingDeviceInterfaceBusMouse
= 0x07,
2004 PointingDeviceInterfaceADB
= 0x08,
2005 PointingDeviceInterfaceBusMouseDB9
= 0xA0,
2006 PointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
2007 PointingDeviceInterfaceUsb
= 0xA2
2008 } BUILTIN_POINTING_DEVICE_INTERFACE
;
2011 /// Built-in Pointing Device (Type 21).
2013 /// This structure describes the attributes of the built-in pointing device for the
2014 /// system. The presence of this structure does not imply that the built-in
2015 /// pointing device is active for the system's use!
2018 SMBIOS_STRUCTURE Hdr
;
2019 UINT8 Type
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
2020 UINT8 Interface
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
2021 UINT8 NumberOfButtons
;
2022 } SMBIOS_TABLE_TYPE21
;
2025 /// Portable Battery - Device Chemistry
2028 PortableBatteryDeviceChemistryOther
= 0x01,
2029 PortableBatteryDeviceChemistryUnknown
= 0x02,
2030 PortableBatteryDeviceChemistryLeadAcid
= 0x03,
2031 PortableBatteryDeviceChemistryNickelCadmium
= 0x04,
2032 PortableBatteryDeviceChemistryNickelMetalHydride
= 0x05,
2033 PortableBatteryDeviceChemistryLithiumIon
= 0x06,
2034 PortableBatteryDeviceChemistryZincAir
= 0x07,
2035 PortableBatteryDeviceChemistryLithiumPolymer
= 0x08
2036 } PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
2039 /// Portable Battery (Type 22).
2041 /// This structure describes the attributes of the portable battery(s) for the system.
2042 /// The structure contains the static attributes for the group. Each structure describes
2043 /// a single battery pack's attributes.
2046 SMBIOS_STRUCTURE Hdr
;
2047 SMBIOS_TABLE_STRING Location
;
2048 SMBIOS_TABLE_STRING Manufacturer
;
2049 SMBIOS_TABLE_STRING ManufactureDate
;
2050 SMBIOS_TABLE_STRING SerialNumber
;
2051 SMBIOS_TABLE_STRING DeviceName
;
2052 UINT8 DeviceChemistry
; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
2053 UINT16 DeviceCapacity
;
2054 UINT16 DesignVoltage
;
2055 SMBIOS_TABLE_STRING SBDSVersionNumber
;
2056 UINT8 MaximumErrorInBatteryData
;
2057 UINT16 SBDSSerialNumber
;
2058 UINT16 SBDSManufactureDate
;
2059 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
2060 UINT8 DesignCapacityMultiplier
;
2062 } SMBIOS_TABLE_TYPE22
;
2065 /// System Reset (Type 23)
2067 /// This structure describes whether Automatic System Reset functions enabled (Status).
2068 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
2069 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
2070 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
2071 /// the system will re-boot according to the Boot Option at Limit.
2074 SMBIOS_STRUCTURE Hdr
;
2078 UINT16 TimerInterval
;
2080 } SMBIOS_TABLE_TYPE23
;
2083 /// Hardware Security (Type 24).
2085 /// This structure describes the system-wide hardware security settings.
2088 SMBIOS_STRUCTURE Hdr
;
2089 UINT8 HardwareSecuritySettings
;
2090 } SMBIOS_TABLE_TYPE24
;
2093 /// System Power Controls (Type 25).
2095 /// This structure describes the attributes for controlling the main power supply to the system.
2096 /// Software that interprets this structure uses the month, day, hour, minute, and second values
2097 /// to determine the number of seconds until the next power-on of the system. The presence of
2098 /// this structure implies that a timed power-on facility is available for the system.
2101 SMBIOS_STRUCTURE Hdr
;
2102 UINT8 NextScheduledPowerOnMonth
;
2103 UINT8 NextScheduledPowerOnDayOfMonth
;
2104 UINT8 NextScheduledPowerOnHour
;
2105 UINT8 NextScheduledPowerOnMinute
;
2106 UINT8 NextScheduledPowerOnSecond
;
2107 } SMBIOS_TABLE_TYPE25
;
2110 /// Voltage Probe - Location and Status.
2113 UINT8 VoltageProbeSite
: 5;
2114 UINT8 VoltageProbeStatus
: 3;
2115 } MISC_VOLTAGE_PROBE_LOCATION
;
2118 /// Voltage Probe (Type 26)
2120 /// This describes the attributes for a voltage probe in the system.
2121 /// Each structure describes a single voltage probe.
2124 SMBIOS_STRUCTURE Hdr
;
2125 SMBIOS_TABLE_STRING Description
;
2126 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
2127 UINT16 MaximumValue
;
2128 UINT16 MinimumValue
;
2133 UINT16 NominalValue
;
2134 } SMBIOS_TABLE_TYPE26
;
2137 /// Cooling Device - Device Type and Status.
2140 UINT8 CoolingDevice
: 5;
2141 UINT8 CoolingDeviceStatus
: 3;
2142 } MISC_COOLING_DEVICE_TYPE
;
2145 /// Cooling Device (Type 27)
2147 /// This structure describes the attributes for a cooling device in the system.
2148 /// Each structure describes a single cooling device.
2151 SMBIOS_STRUCTURE Hdr
;
2152 UINT16 TemperatureProbeHandle
;
2153 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
2154 UINT8 CoolingUnitGroup
;
2156 UINT16 NominalSpeed
;
2158 // Add for smbios 2.7
2160 SMBIOS_TABLE_STRING Description
;
2161 } SMBIOS_TABLE_TYPE27
;
2164 /// Temperature Probe - Location and Status.
2167 UINT8 TemperatureProbeSite
: 5;
2168 UINT8 TemperatureProbeStatus
: 3;
2169 } MISC_TEMPERATURE_PROBE_LOCATION
;
2172 /// Temperature Probe (Type 28).
2174 /// This structure describes the attributes for a temperature probe in the system.
2175 /// Each structure describes a single temperature probe.
2178 SMBIOS_STRUCTURE Hdr
;
2179 SMBIOS_TABLE_STRING Description
;
2180 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
2181 UINT16 MaximumValue
;
2182 UINT16 MinimumValue
;
2187 UINT16 NominalValue
;
2188 } SMBIOS_TABLE_TYPE28
;
2191 /// Electrical Current Probe - Location and Status.
2194 UINT8 ElectricalCurrentProbeSite
: 5;
2195 UINT8 ElectricalCurrentProbeStatus
: 3;
2196 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2199 /// Electrical Current Probe (Type 29).
2201 /// This structure describes the attributes for an electrical current probe in the system.
2202 /// Each structure describes a single electrical current probe.
2205 SMBIOS_STRUCTURE Hdr
;
2206 SMBIOS_TABLE_STRING Description
;
2207 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
2208 UINT16 MaximumValue
;
2209 UINT16 MinimumValue
;
2214 UINT16 NominalValue
;
2215 } SMBIOS_TABLE_TYPE29
;
2218 /// Out-of-Band Remote Access (Type 30).
2220 /// This structure describes the attributes and policy settings of a hardware facility
2221 /// that may be used to gain remote access to a hardware system when the operating system
2222 /// is not available due to power-down status, hardware failures, or boot failures.
2225 SMBIOS_STRUCTURE Hdr
;
2226 SMBIOS_TABLE_STRING ManufacturerName
;
2228 } SMBIOS_TABLE_TYPE30
;
2231 /// Boot Integrity Services (BIS) Entry Point (Type 31).
2233 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
2236 SMBIOS_STRUCTURE Hdr
;
2244 } SMBIOS_TABLE_TYPE31
;
2247 /// System Boot Information - System Boot Status.
2250 BootInformationStatusNoError
= 0x00,
2251 BootInformationStatusNoBootableMedia
= 0x01,
2252 BootInformationStatusNormalOSFailedLoading
= 0x02,
2253 BootInformationStatusFirmwareDetectedFailure
= 0x03,
2254 BootInformationStatusOSDetectedFailure
= 0x04,
2255 BootInformationStatusUserRequestedBoot
= 0x05,
2256 BootInformationStatusSystemSecurityViolation
= 0x06,
2257 BootInformationStatusPreviousRequestedImage
= 0x07,
2258 BootInformationStatusWatchdogTimerExpired
= 0x08,
2259 BootInformationStatusStartReserved
= 0x09,
2260 BootInformationStatusStartOemSpecific
= 0x80,
2261 BootInformationStatusStartProductSpecific
= 0xC0
2262 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2265 /// System Boot Information (Type 32).
2267 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
2268 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
2269 /// application via this structure. When used in the PXE environment, for example,
2270 /// this code identifies the reason the PXE was initiated and can be used by boot-image
2271 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
2272 /// could choose to automatically download a hardware-diagnostic image to a client whose
2273 /// reason code indicated either a firmware- or operating system-detected hardware failure.
2276 SMBIOS_STRUCTURE Hdr
;
2278 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
2279 } SMBIOS_TABLE_TYPE32
;
2282 /// 64-bit Memory Error Information (Type 33).
2284 /// This structure describes an error within a Physical Memory Array,
2285 /// when the error address is above 4G (0xFFFFFFFF).
2288 SMBIOS_STRUCTURE Hdr
;
2289 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
2290 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
2291 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
2292 UINT32 VendorSyndrome
;
2293 UINT64 MemoryArrayErrorAddress
;
2294 UINT64 DeviceErrorAddress
;
2295 UINT32 ErrorResolution
;
2296 } SMBIOS_TABLE_TYPE33
;
2299 /// Management Device - Type.
2302 ManagementDeviceTypeOther
= 0x01,
2303 ManagementDeviceTypeUnknown
= 0x02,
2304 ManagementDeviceTypeLm75
= 0x03,
2305 ManagementDeviceTypeLm78
= 0x04,
2306 ManagementDeviceTypeLm79
= 0x05,
2307 ManagementDeviceTypeLm80
= 0x06,
2308 ManagementDeviceTypeLm81
= 0x07,
2309 ManagementDeviceTypeAdm9240
= 0x08,
2310 ManagementDeviceTypeDs1780
= 0x09,
2311 ManagementDeviceTypeMaxim1617
= 0x0A,
2312 ManagementDeviceTypeGl518Sm
= 0x0B,
2313 ManagementDeviceTypeW83781D
= 0x0C,
2314 ManagementDeviceTypeHt82H791
= 0x0D
2315 } MISC_MANAGEMENT_DEVICE_TYPE
;
2318 /// Management Device - Address Type.
2321 ManagementDeviceAddressTypeOther
= 0x01,
2322 ManagementDeviceAddressTypeUnknown
= 0x02,
2323 ManagementDeviceAddressTypeIOPort
= 0x03,
2324 ManagementDeviceAddressTypeMemory
= 0x04,
2325 ManagementDeviceAddressTypeSmbus
= 0x05
2326 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2329 /// Management Device (Type 34).
2331 /// The information in this structure defines the attributes of a Management Device.
2332 /// A Management Device might control one or more fans or voltage, current, or temperature
2333 /// probes as defined by one or more Management Device Component structures.
2336 SMBIOS_STRUCTURE Hdr
;
2337 SMBIOS_TABLE_STRING Description
;
2338 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
2340 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
2341 } SMBIOS_TABLE_TYPE34
;
2344 /// Management Device Component (Type 35)
2346 /// This structure associates a cooling device or environmental probe with structures
2347 /// that define the controlling hardware device and (optionally) the component's thresholds.
2350 SMBIOS_STRUCTURE Hdr
;
2351 SMBIOS_TABLE_STRING Description
;
2352 UINT16 ManagementDeviceHandle
;
2353 UINT16 ComponentHandle
;
2354 UINT16 ThresholdHandle
;
2355 } SMBIOS_TABLE_TYPE35
;
2358 /// Management Device Threshold Data (Type 36).
2360 /// The information in this structure defines threshold information for
2361 /// a component (probe or cooling-unit) contained within a Management Device.
2364 SMBIOS_STRUCTURE Hdr
;
2365 UINT16 LowerThresholdNonCritical
;
2366 UINT16 UpperThresholdNonCritical
;
2367 UINT16 LowerThresholdCritical
;
2368 UINT16 UpperThresholdCritical
;
2369 UINT16 LowerThresholdNonRecoverable
;
2370 UINT16 UpperThresholdNonRecoverable
;
2371 } SMBIOS_TABLE_TYPE36
;
2374 /// Memory Channel Entry.
2378 UINT16 DeviceHandle
;
2382 /// Memory Channel - Channel Type.
2385 MemoryChannelTypeOther
= 0x01,
2386 MemoryChannelTypeUnknown
= 0x02,
2387 MemoryChannelTypeRambus
= 0x03,
2388 MemoryChannelTypeSyncLink
= 0x04
2389 } MEMORY_CHANNEL_TYPE
;
2392 /// Memory Channel (Type 37)
2394 /// The information in this structure provides the correlation between a Memory Channel
2395 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
2396 /// The sum of all device loads cannot exceed the channel's defined maximum.
2399 SMBIOS_STRUCTURE Hdr
;
2401 UINT8 MaximumChannelLoad
;
2402 UINT8 MemoryDeviceCount
;
2403 MEMORY_DEVICE MemoryDevice
[1];
2404 } SMBIOS_TABLE_TYPE37
;
2407 /// IPMI Device Information - BMC Interface Type
2410 IPMIDeviceInfoInterfaceTypeUnknown
= 0x00,
2411 IPMIDeviceInfoInterfaceTypeKCS
= 0x01, ///< The Keyboard Controller Style.
2412 IPMIDeviceInfoInterfaceTypeSMIC
= 0x02, ///< The Server Management Interface Chip.
2413 IPMIDeviceInfoInterfaceTypeBT
= 0x03, ///< The Block Transfer
2414 IPMIDeviceInfoInterfaceTypeSSIF
= 0x04 ///< SMBus System Interface
2415 } BMC_INTERFACE_TYPE
;
2418 /// IPMI Device Information (Type 38).
2420 /// The information in this structure defines the attributes of an
2421 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
2423 /// The Type 42 structure can also be used to describe a physical management controller
2424 /// host interface and one or more protocols that share that interface. If IPMI is not
2425 /// shared with other protocols, either the Type 38 or Type 42 structures can be used.
2426 /// Providing Type 38 is recommended for backward compatibility.
2429 SMBIOS_STRUCTURE Hdr
;
2430 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
2431 UINT8 IPMISpecificationRevision
;
2432 UINT8 I2CSlaveAddress
;
2433 UINT8 NVStorageDeviceAddress
;
2435 UINT8 BaseAddressModifier_InterruptInfo
;
2436 UINT8 InterruptNumber
;
2437 } SMBIOS_TABLE_TYPE38
;
2440 /// System Power Supply - Power Supply Characteristics.
2443 UINT16 PowerSupplyHotReplaceable
: 1;
2444 UINT16 PowerSupplyPresent
: 1;
2445 UINT16 PowerSupplyUnplugged
: 1;
2446 UINT16 InputVoltageRangeSwitch
: 4;
2447 UINT16 PowerSupplyStatus
: 3;
2448 UINT16 PowerSupplyType
: 4;
2449 UINT16 Reserved
: 2;
2450 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2453 /// System Power Supply (Type 39).
2455 /// This structure identifies attributes of a system power supply. One instance
2456 /// of this record is present for each possible power supply in a system.
2459 SMBIOS_STRUCTURE Hdr
;
2460 UINT8 PowerUnitGroup
;
2461 SMBIOS_TABLE_STRING Location
;
2462 SMBIOS_TABLE_STRING DeviceName
;
2463 SMBIOS_TABLE_STRING Manufacturer
;
2464 SMBIOS_TABLE_STRING SerialNumber
;
2465 SMBIOS_TABLE_STRING AssetTagNumber
;
2466 SMBIOS_TABLE_STRING ModelPartNumber
;
2467 SMBIOS_TABLE_STRING RevisionLevel
;
2468 UINT16 MaxPowerCapacity
;
2469 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2470 UINT16 InputVoltageProbeHandle
;
2471 UINT16 CoolingDeviceHandle
;
2472 UINT16 InputCurrentProbeHandle
;
2473 } SMBIOS_TABLE_TYPE39
;
2476 /// Additional Information Entry Format.
2480 UINT16 ReferencedHandle
;
2481 UINT8 ReferencedOffset
;
2482 SMBIOS_TABLE_STRING EntryString
;
2484 } ADDITIONAL_INFORMATION_ENTRY
;
2487 /// Additional Information (Type 40).
2489 /// This structure is intended to provide additional information for handling unspecified
2490 /// enumerated values and interim field updates in another structure.
2493 SMBIOS_STRUCTURE Hdr
;
2494 UINT8 NumberOfAdditionalInformationEntries
;
2495 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2496 } SMBIOS_TABLE_TYPE40
;
2499 /// Onboard Devices Extended Information - Onboard Device Types.
2502 OnBoardDeviceExtendedTypeOther
= 0x01,
2503 OnBoardDeviceExtendedTypeUnknown
= 0x02,
2504 OnBoardDeviceExtendedTypeVideo
= 0x03,
2505 OnBoardDeviceExtendedTypeScsiController
= 0x04,
2506 OnBoardDeviceExtendedTypeEthernet
= 0x05,
2507 OnBoardDeviceExtendedTypeTokenRing
= 0x06,
2508 OnBoardDeviceExtendedTypeSound
= 0x07,
2509 OnBoardDeviceExtendedTypePATAController
= 0x08,
2510 OnBoardDeviceExtendedTypeSATAController
= 0x09,
2511 OnBoardDeviceExtendedTypeSASController
= 0x0A
2512 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE
;
2515 /// Onboard Devices Extended Information (Type 41).
2517 /// The information in this structure defines the attributes of devices that
2518 /// are onboard (soldered onto) a system element, usually the baseboard.
2519 /// In general, an entry in this table implies that the BIOS has some level of
2520 /// control over the enabling of the associated device for use by the system.
2523 SMBIOS_STRUCTURE Hdr
;
2524 SMBIOS_TABLE_STRING ReferenceDesignation
;
2525 UINT8 DeviceType
; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2526 UINT8 DeviceTypeInstance
;
2527 UINT16 SegmentGroupNum
;
2530 } SMBIOS_TABLE_TYPE41
;
2533 /// Management Controller Host Interface - Protocol Record Data Format.
2537 UINT8 ProtocolTypeDataLen
;
2538 UINT8 ProtocolTypeData
[1];
2539 } MC_HOST_INTERFACE_PROTOCOL_RECORD
;
2542 /// Management Controller Host Interface - Interface Types.
2543 /// 00h - 3Fh: MCTP Host Interfaces
2546 MCHostInterfaceTypeNetworkHostInterface
= 0x40,
2547 MCHostInterfaceTypeOemDefined
= 0xF0
2548 } MC_HOST_INTERFACE_TYPE
;
2551 /// Management Controller Host Interface - Protocol Types.
2554 MCHostInterfaceProtocolTypeIPMI
= 0x02,
2555 MCHostInterfaceProtocolTypeMCTP
= 0x03,
2556 MCHostInterfaceProtocolTypeRedfishOverIP
= 0x04,
2557 MCHostInterfaceProtocolTypeOemDefined
= 0xF0
2558 } MC_HOST_INTERFACE_PROTOCOL_TYPE
;
2561 /// Management Controller Host Interface (Type 42).
2563 /// The information in this structure defines the attributes of a Management
2564 /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.
2566 /// Type 42 should be used for management controller host interfaces that use protocols
2567 /// other than IPMI or that use multiple protocols on a single host interface type.
2569 /// This structure should also be provided if IPMI is shared with other protocols
2570 /// over the same interface hardware. If IPMI is not shared with other protocols,
2571 /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is
2572 /// recommended for backward compatibility. The structures are not required to
2573 /// be mutually exclusive. Type 38 and Type 42 structures may be implemented
2574 /// simultaneously to provide backward compatibility with IPMI applications or drivers
2575 /// that do not yet recognize the Type 42 structure.
2578 SMBIOS_STRUCTURE Hdr
;
2579 UINT8 InterfaceType
; ///< The enumeration value from MC_HOST_INTERFACE_TYPE
2580 UINT8 InterfaceTypeSpecificDataLength
;
2581 UINT8 InterfaceTypeSpecificData
[4]; ///< This field has a minimum of four bytes
2582 } SMBIOS_TABLE_TYPE42
;
2585 /// Processor Specific Block - Processor Architecture Type
2588 ProcessorSpecificBlockArchTypeReserved
= 0x00,
2589 ProcessorSpecificBlockArchTypeIa32
= 0x01,
2590 ProcessorSpecificBlockArchTypeX64
= 0x02,
2591 ProcessorSpecificBlockArchTypeItanium
= 0x03,
2592 ProcessorSpecificBlockArchTypeAarch32
= 0x04,
2593 ProcessorSpecificBlockArchTypeAarch64
= 0x05,
2594 ProcessorSpecificBlockArchTypeRiscVRV32
= 0x06,
2595 ProcessorSpecificBlockArchTypeRiscVRV64
= 0x07,
2596 ProcessorSpecificBlockArchTypeRiscVRV128
= 0x08
2597 } PROCESSOR_SPECIFIC_BLOCK_ARCH_TYPE
;
2600 /// Processor Specific Block is the standard container of processor-specific data.
2604 UINT8 ProcessorArchType
;
2606 /// Below followed by Processor-specific data
2609 } PROCESSOR_SPECIFIC_BLOCK
;
2612 /// Processor Additional Information(Type 44).
2614 /// The information in this structure defines the processor additional information in case
2615 /// SMBIOS type 4 is not sufficient to describe processor characteristics.
2616 /// The SMBIOS type 44 structure has a reference handle field to link back to the related
2617 /// SMBIOS type 4 structure. There may be multiple SMBIOS type 44 structures linked to the
2618 /// same SMBIOS type 4 structure. For example, when cores are not identical in a processor,
2619 /// SMBIOS type 44 structures describe different core-specific information.
2621 /// SMBIOS type 44 defines the standard header for the processor-specific block, while the
2622 /// contents of processor-specific data are maintained by processor
2623 /// architecture workgroups or vendors in separate documents.
2626 SMBIOS_STRUCTURE Hdr
;
2627 SMBIOS_HANDLE RefHandle
; ///< This field refer to associated SMBIOS type 4
2629 /// Below followed by Processor-specific block
2631 PROCESSOR_SPECIFIC_BLOCK ProcessorSpecificBlock
;
2632 } SMBIOS_TABLE_TYPE44
;
2635 /// TPM Device (Type 43).
2638 SMBIOS_STRUCTURE Hdr
;
2640 UINT8 MajorSpecVersion
;
2641 UINT8 MinorSpecVersion
;
2642 UINT32 FirmwareVersion1
;
2643 UINT32 FirmwareVersion2
;
2644 SMBIOS_TABLE_STRING Description
;
2645 UINT64 Characteristics
;
2647 } SMBIOS_TABLE_TYPE43
;
2650 /// Inactive (Type 126)
2653 SMBIOS_STRUCTURE Hdr
;
2654 } SMBIOS_TABLE_TYPE126
;
2657 /// End-of-Table (Type 127)
2660 SMBIOS_STRUCTURE Hdr
;
2661 } SMBIOS_TABLE_TYPE127
;
2664 /// Union of all the possible SMBIOS record types.
2667 SMBIOS_STRUCTURE
*Hdr
;
2668 SMBIOS_TABLE_TYPE0
*Type0
;
2669 SMBIOS_TABLE_TYPE1
*Type1
;
2670 SMBIOS_TABLE_TYPE2
*Type2
;
2671 SMBIOS_TABLE_TYPE3
*Type3
;
2672 SMBIOS_TABLE_TYPE4
*Type4
;
2673 SMBIOS_TABLE_TYPE5
*Type5
;
2674 SMBIOS_TABLE_TYPE6
*Type6
;
2675 SMBIOS_TABLE_TYPE7
*Type7
;
2676 SMBIOS_TABLE_TYPE8
*Type8
;
2677 SMBIOS_TABLE_TYPE9
*Type9
;
2678 SMBIOS_TABLE_TYPE10
*Type10
;
2679 SMBIOS_TABLE_TYPE11
*Type11
;
2680 SMBIOS_TABLE_TYPE12
*Type12
;
2681 SMBIOS_TABLE_TYPE13
*Type13
;
2682 SMBIOS_TABLE_TYPE14
*Type14
;
2683 SMBIOS_TABLE_TYPE15
*Type15
;
2684 SMBIOS_TABLE_TYPE16
*Type16
;
2685 SMBIOS_TABLE_TYPE17
*Type17
;
2686 SMBIOS_TABLE_TYPE18
*Type18
;
2687 SMBIOS_TABLE_TYPE19
*Type19
;
2688 SMBIOS_TABLE_TYPE20
*Type20
;
2689 SMBIOS_TABLE_TYPE21
*Type21
;
2690 SMBIOS_TABLE_TYPE22
*Type22
;
2691 SMBIOS_TABLE_TYPE23
*Type23
;
2692 SMBIOS_TABLE_TYPE24
*Type24
;
2693 SMBIOS_TABLE_TYPE25
*Type25
;
2694 SMBIOS_TABLE_TYPE26
*Type26
;
2695 SMBIOS_TABLE_TYPE27
*Type27
;
2696 SMBIOS_TABLE_TYPE28
*Type28
;
2697 SMBIOS_TABLE_TYPE29
*Type29
;
2698 SMBIOS_TABLE_TYPE30
*Type30
;
2699 SMBIOS_TABLE_TYPE31
*Type31
;
2700 SMBIOS_TABLE_TYPE32
*Type32
;
2701 SMBIOS_TABLE_TYPE33
*Type33
;
2702 SMBIOS_TABLE_TYPE34
*Type34
;
2703 SMBIOS_TABLE_TYPE35
*Type35
;
2704 SMBIOS_TABLE_TYPE36
*Type36
;
2705 SMBIOS_TABLE_TYPE37
*Type37
;
2706 SMBIOS_TABLE_TYPE38
*Type38
;
2707 SMBIOS_TABLE_TYPE39
*Type39
;
2708 SMBIOS_TABLE_TYPE40
*Type40
;
2709 SMBIOS_TABLE_TYPE41
*Type41
;
2710 SMBIOS_TABLE_TYPE42
*Type42
;
2711 SMBIOS_TABLE_TYPE43
*Type43
;
2712 SMBIOS_TABLE_TYPE44
*Type44
;
2713 SMBIOS_TABLE_TYPE126
*Type126
;
2714 SMBIOS_TABLE_TYPE127
*Type127
;
2716 } SMBIOS_STRUCTURE_POINTER
;