2 Industry Standard Definitions of SMBIOS Table Specification v3.1.1.
4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
6 This program and the accompanying materials are licensed and made available under
7 the terms and conditions of the BSD License that accompanies this distribution.
8 The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #ifndef __SMBIOS_STANDARD_H__
17 #define __SMBIOS_STANDARD_H__
20 /// Reference SMBIOS 2.6, chapter 3.1.2.
21 /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
22 /// use by this specification.
24 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
27 /// Reference SMBIOS 2.7, chapter 6.1.2.
28 /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its
29 /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."
30 /// This number is not used for any other purpose by the SMBIOS specification.
32 #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
35 /// Reference SMBIOS 2.6, chapter 3.1.3.
36 /// Each text string is limited to 64 significant characters due to system MIF limitations.
37 /// Reference SMBIOS 2.7, chapter 6.1.3.
38 /// It will have no limit on the length of each individual text string.
40 #define SMBIOS_STRING_MAX_LENGTH 64
43 // The length of the entire structure table (including all strings) must be reported
44 // in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
45 // which is a WORD field limited to 65,535 bytes.
47 #define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
50 // For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
52 #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
55 // SMBIOS type macros which is according to SMBIOS 2.7 specification.
57 #define SMBIOS_TYPE_BIOS_INFORMATION 0
58 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
59 #define SMBIOS_TYPE_BASEBOARD_INFORMATION 2
60 #define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3
61 #define SMBIOS_TYPE_PROCESSOR_INFORMATION 4
62 #define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5
63 #define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6
64 #define SMBIOS_TYPE_CACHE_INFORMATION 7
65 #define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8
66 #define SMBIOS_TYPE_SYSTEM_SLOTS 9
67 #define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10
68 #define SMBIOS_TYPE_OEM_STRINGS 11
69 #define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12
70 #define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13
71 #define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14
72 #define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15
73 #define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16
74 #define SMBIOS_TYPE_MEMORY_DEVICE 17
75 #define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18
76 #define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19
77 #define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20
78 #define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21
79 #define SMBIOS_TYPE_PORTABLE_BATTERY 22
80 #define SMBIOS_TYPE_SYSTEM_RESET 23
81 #define SMBIOS_TYPE_HARDWARE_SECURITY 24
82 #define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25
83 #define SMBIOS_TYPE_VOLTAGE_PROBE 26
84 #define SMBIOS_TYPE_COOLING_DEVICE 27
85 #define SMBIOS_TYPE_TEMPERATURE_PROBE 28
86 #define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29
87 #define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30
88 #define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31
89 #define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32
90 #define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33
91 #define SMBIOS_TYPE_MANAGEMENT_DEVICE 34
92 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35
93 #define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36
94 #define SMBIOS_TYPE_MEMORY_CHANNEL 37
95 #define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38
96 #define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39
97 #define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40
98 #define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
99 #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
100 #define SMBIOS_TYPE_TPM_DEVICE 43
103 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
104 /// Upper-level software that interprets the SMBIOS structure-table should bypass an
105 /// Inactive structure just like a structure type that the software does not recognize.
107 #define SMBIOS_TYPE_INACTIVE 0x007E
110 /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
111 /// The end-of-table indicator is used in the last physical structure in a table
113 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
115 #define SMBIOS_OEM_BEGIN 128
116 #define SMBIOS_OEM_END 255
119 /// Types 0 through 127 (7Fh) are reserved for and defined by this
120 /// specification. Types 128 through 256 (80h to FFh) are available for system- and OEM-specific information.
122 typedef UINT8 SMBIOS_TYPE
;
125 /// Specifies the structure's handle, a unique 16-bit number in the range 0 to 0FFFEh (for version
126 /// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used with the Get SMBIOS
127 /// Structure function to retrieve a specific structure; the handle numbers are not required to be
128 /// contiguous. For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
129 /// use by this specification.
130 /// If the system configuration changes, a previously assigned handle might no longer exist.
131 /// However once a handle has been assigned by the BIOS, the BIOS cannot re-assign that handle
132 /// number to another structure.
134 typedef UINT16 SMBIOS_HANDLE
;
137 /// Smbios Table Entry Point Structure.
141 UINT8 AnchorString
[4];
142 UINT8 EntryPointStructureChecksum
;
143 UINT8 EntryPointLength
;
146 UINT16 MaxStructureSize
;
147 UINT8 EntryPointRevision
;
148 UINT8 FormattedArea
[5];
149 UINT8 IntermediateAnchorString
[5];
150 UINT8 IntermediateChecksum
;
153 UINT16 NumberOfSmbiosStructures
;
154 UINT8 SmbiosBcdRevision
;
155 } SMBIOS_TABLE_ENTRY_POINT
;
158 UINT8 AnchorString
[5];
159 UINT8 EntryPointStructureChecksum
;
160 UINT8 EntryPointLength
;
164 UINT8 EntryPointRevision
;
166 UINT32 TableMaximumSize
;
168 } SMBIOS_TABLE_3_0_ENTRY_POINT
;
171 /// The Smbios structure header.
176 SMBIOS_HANDLE Handle
;
180 /// Text strings associated with a given SMBIOS structure are returned in the dmiStrucBuffer, appended directly after
181 /// the formatted portion of the structure. This method of returning string information eliminates the need for
182 /// application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null
183 /// (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of
184 /// a SMBIOS structure references a string, it does so by specifying a non-zero string number within the structure's
185 /// string-set. For example, if a string field contains 02h, it references the second string following the formatted portion
186 /// of the SMBIOS structure. If a string field references no string, a null (0) is placed in that string field. If the
187 /// formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string
188 /// references), the formatted section of the structure is followed by two null (00h) BYTES.
190 typedef UINT8 SMBIOS_TABLE_STRING
;
193 /// BIOS Characteristics
194 /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
197 UINT32 Reserved
:2; ///< Bits 0-1.
199 UINT32 BiosCharacteristicsNotSupported
:1;
200 UINT32 IsaIsSupported
:1;
201 UINT32 McaIsSupported
:1;
202 UINT32 EisaIsSupported
:1;
203 UINT32 PciIsSupported
:1;
204 UINT32 PcmciaIsSupported
:1;
205 UINT32 PlugAndPlayIsSupported
:1;
206 UINT32 ApmIsSupported
:1;
207 UINT32 BiosIsUpgradable
:1;
208 UINT32 BiosShadowingAllowed
:1;
209 UINT32 VlVesaIsSupported
:1;
210 UINT32 EscdSupportIsAvailable
:1;
211 UINT32 BootFromCdIsSupported
:1;
212 UINT32 SelectableBootIsSupported
:1;
213 UINT32 RomBiosIsSocketed
:1;
214 UINT32 BootFromPcmciaIsSupported
:1;
215 UINT32 EDDSpecificationIsSupported
:1;
216 UINT32 JapaneseNecFloppyIsSupported
:1;
217 UINT32 JapaneseToshibaFloppyIsSupported
:1;
218 UINT32 Floppy525_360IsSupported
:1;
219 UINT32 Floppy525_12IsSupported
:1;
220 UINT32 Floppy35_720IsSupported
:1;
221 UINT32 Floppy35_288IsSupported
:1;
222 UINT32 PrintScreenIsSupported
:1;
223 UINT32 Keyboard8042IsSupported
:1;
224 UINT32 SerialIsSupported
:1;
225 UINT32 PrinterIsSupported
:1;
226 UINT32 CgaMonoIsSupported
:1;
228 UINT32 ReservedForVendor
:32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
229 ///< and bits 48-63 reserved for System Vendor.
230 } MISC_BIOS_CHARACTERISTICS
;
233 /// BIOS Characteristics Extension Byte 1.
234 /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h
235 /// within the BIOS Information structure.
238 UINT8 AcpiIsSupported
:1;
239 UINT8 UsbLegacyIsSupported
:1;
240 UINT8 AgpIsSupported
:1;
241 UINT8 I2OBootIsSupported
:1;
242 UINT8 Ls120BootIsSupported
:1;
243 UINT8 AtapiZipDriveBootIsSupported
:1;
244 UINT8 Boot1394IsSupported
:1;
245 UINT8 SmartBatteryIsSupported
:1;
246 } MBCE_BIOS_RESERVED
;
249 /// BIOS Characteristics Extension Byte 2.
250 /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h
251 /// within the BIOS Information structure.
254 UINT8 BiosBootSpecIsSupported
:1;
255 UINT8 FunctionKeyNetworkBootIsSupported
:1;
256 UINT8 TargetContentDistributionEnabled
:1;
257 UINT8 UefiSpecificationSupported
:1;
258 UINT8 VirtualMachineSupported
:1;
259 UINT8 ExtensionByte2Reserved
:3;
260 } MBCE_SYSTEM_RESERVED
;
263 /// BIOS Characteristics Extension Bytes.
266 MBCE_BIOS_RESERVED BiosReserved
;
267 MBCE_SYSTEM_RESERVED SystemReserved
;
268 } MISC_BIOS_CHARACTERISTICS_EXTENSION
;
271 /// Extended BIOS ROM size.
276 } EXTENDED_BIOS_ROM_SIZE
;
279 /// BIOS Information (Type 0).
282 SMBIOS_STRUCTURE Hdr
;
283 SMBIOS_TABLE_STRING Vendor
;
284 SMBIOS_TABLE_STRING BiosVersion
;
286 SMBIOS_TABLE_STRING BiosReleaseDate
;
288 MISC_BIOS_CHARACTERISTICS BiosCharacteristics
;
289 UINT8 BIOSCharacteristicsExtensionBytes
[2];
290 UINT8 SystemBiosMajorRelease
;
291 UINT8 SystemBiosMinorRelease
;
292 UINT8 EmbeddedControllerFirmwareMajorRelease
;
293 UINT8 EmbeddedControllerFirmwareMinorRelease
;
295 // Add for smbios 3.1.0
297 EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize
;
298 } SMBIOS_TABLE_TYPE0
;
301 /// System Wake-up Type.
304 SystemWakeupTypeReserved
= 0x00,
305 SystemWakeupTypeOther
= 0x01,
306 SystemWakeupTypeUnknown
= 0x02,
307 SystemWakeupTypeApmTimer
= 0x03,
308 SystemWakeupTypeModemRing
= 0x04,
309 SystemWakeupTypeLanRemote
= 0x05,
310 SystemWakeupTypePowerSwitch
= 0x06,
311 SystemWakeupTypePciPme
= 0x07,
312 SystemWakeupTypeAcPowerRestored
= 0x08
313 } MISC_SYSTEM_WAKEUP_TYPE
;
316 /// System Information (Type 1).
318 /// The information in this structure defines attributes of the overall system and is
319 /// intended to be associated with the Component ID group of the system's MIF.
320 /// An SMBIOS implementation is associated with a single system instance and contains
321 /// one and only one System Information (Type 1) structure.
324 SMBIOS_STRUCTURE Hdr
;
325 SMBIOS_TABLE_STRING Manufacturer
;
326 SMBIOS_TABLE_STRING ProductName
;
327 SMBIOS_TABLE_STRING Version
;
328 SMBIOS_TABLE_STRING SerialNumber
;
330 UINT8 WakeUpType
; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
331 SMBIOS_TABLE_STRING SKUNumber
;
332 SMBIOS_TABLE_STRING Family
;
333 } SMBIOS_TABLE_TYPE1
;
336 /// Base Board - Feature Flags.
339 UINT8 Motherboard
:1;
340 UINT8 RequiresDaughterCard
:1;
342 UINT8 Replaceable
:1;
343 UINT8 HotSwappable
:1;
345 } BASE_BOARD_FEATURE_FLAGS
;
348 /// Base Board - Board Type.
351 BaseBoardTypeUnknown
= 0x1,
352 BaseBoardTypeOther
= 0x2,
353 BaseBoardTypeServerBlade
= 0x3,
354 BaseBoardTypeConnectivitySwitch
= 0x4,
355 BaseBoardTypeSystemManagementModule
= 0x5,
356 BaseBoardTypeProcessorModule
= 0x6,
357 BaseBoardTypeIOModule
= 0x7,
358 BaseBoardTypeMemoryModule
= 0x8,
359 BaseBoardTypeDaughterBoard
= 0x9,
360 BaseBoardTypeMotherBoard
= 0xA,
361 BaseBoardTypeProcessorMemoryModule
= 0xB,
362 BaseBoardTypeProcessorIOModule
= 0xC,
363 BaseBoardTypeInterconnectBoard
= 0xD
367 /// Base Board (or Module) Information (Type 2).
369 /// The information in this structure defines attributes of a system baseboard -
370 /// for example a motherboard, planar, or server blade or other standard system module.
373 SMBIOS_STRUCTURE Hdr
;
374 SMBIOS_TABLE_STRING Manufacturer
;
375 SMBIOS_TABLE_STRING ProductName
;
376 SMBIOS_TABLE_STRING Version
;
377 SMBIOS_TABLE_STRING SerialNumber
;
378 SMBIOS_TABLE_STRING AssetTag
;
379 BASE_BOARD_FEATURE_FLAGS FeatureFlag
;
380 SMBIOS_TABLE_STRING LocationInChassis
;
381 UINT16 ChassisHandle
;
382 UINT8 BoardType
; ///< The enumeration value from BASE_BOARD_TYPE.
383 UINT8 NumberOfContainedObjectHandles
;
384 UINT16 ContainedObjectHandles
[1];
385 } SMBIOS_TABLE_TYPE2
;
388 /// System Enclosure or Chassis Types
391 MiscChassisTypeOther
= 0x01,
392 MiscChassisTypeUnknown
= 0x02,
393 MiscChassisTypeDeskTop
= 0x03,
394 MiscChassisTypeLowProfileDesktop
= 0x04,
395 MiscChassisTypePizzaBox
= 0x05,
396 MiscChassisTypeMiniTower
= 0x06,
397 MiscChassisTypeTower
= 0x07,
398 MiscChassisTypePortable
= 0x08,
399 MiscChassisTypeLapTop
= 0x09,
400 MiscChassisTypeNotebook
= 0x0A,
401 MiscChassisTypeHandHeld
= 0x0B,
402 MiscChassisTypeDockingStation
= 0x0C,
403 MiscChassisTypeAllInOne
= 0x0D,
404 MiscChassisTypeSubNotebook
= 0x0E,
405 MiscChassisTypeSpaceSaving
= 0x0F,
406 MiscChassisTypeLunchBox
= 0x10,
407 MiscChassisTypeMainServerChassis
= 0x11,
408 MiscChassisTypeExpansionChassis
= 0x12,
409 MiscChassisTypeSubChassis
= 0x13,
410 MiscChassisTypeBusExpansionChassis
= 0x14,
411 MiscChassisTypePeripheralChassis
= 0x15,
412 MiscChassisTypeRaidChassis
= 0x16,
413 MiscChassisTypeRackMountChassis
= 0x17,
414 MiscChassisTypeSealedCasePc
= 0x18,
415 MiscChassisMultiSystemChassis
= 0x19,
416 MiscChassisCompactPCI
= 0x1A,
417 MiscChassisAdvancedTCA
= 0x1B,
418 MiscChassisBlade
= 0x1C,
419 MiscChassisBladeEnclosure
= 0x1D,
420 MiscChassisTablet
= 0x1E,
421 MiscChassisConvertible
= 0x1F,
422 MiscChassisDetachable
= 0x20,
423 MiscChassisIoTGateway
= 0x21,
424 MiscChassisEmbeddedPc
= 0x22,
425 MiscChassisMiniPc
= 0x23,
426 MiscChassisStickPc
= 0x24
430 /// System Enclosure or Chassis States .
433 ChassisStateOther
= 0x01,
434 ChassisStateUnknown
= 0x02,
435 ChassisStateSafe
= 0x03,
436 ChassisStateWarning
= 0x04,
437 ChassisStateCritical
= 0x05,
438 ChassisStateNonRecoverable
= 0x06
439 } MISC_CHASSIS_STATE
;
442 /// System Enclosure or Chassis Security Status.
445 ChassisSecurityStatusOther
= 0x01,
446 ChassisSecurityStatusUnknown
= 0x02,
447 ChassisSecurityStatusNone
= 0x03,
448 ChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
449 ChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
450 } MISC_CHASSIS_SECURITY_STATE
;
453 /// Contained Element record
456 UINT8 ContainedElementType
;
457 UINT8 ContainedElementMinimum
;
458 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 ProcessorFamilyViaC7M
= 0xD2,
689 ProcessorFamilyViaC7D
= 0xD3,
690 ProcessorFamilyViaC7
= 0xD4,
691 ProcessorFamilyViaEden
= 0xD5,
692 ProcessorFamilyMultiCoreIntelXeon
= 0xD6,
693 ProcessorFamilyDualCoreIntelXeon3Series
= 0xD7,
694 ProcessorFamilyQuadCoreIntelXeon3Series
= 0xD8,
695 ProcessorFamilyViaNano
= 0xD9,
696 ProcessorFamilyDualCoreIntelXeon5Series
= 0xDA,
697 ProcessorFamilyQuadCoreIntelXeon5Series
= 0xDB,
698 ProcessorFamilyDualCoreIntelXeon7Series
= 0xDD,
699 ProcessorFamilyQuadCoreIntelXeon7Series
= 0xDE,
700 ProcessorFamilyMultiCoreIntelXeon7Series
= 0xDF,
701 ProcessorFamilyMultiCoreIntelXeon3400Series
= 0xE0,
702 ProcessorFamilyAmdOpteron3000Series
= 0xE4,
703 ProcessorFamilyAmdSempronII
= 0xE5,
704 ProcessorFamilyEmbeddedAmdOpteronQuadCore
= 0xE6,
705 ProcessorFamilyAmdPhenomTripleCore
= 0xE7,
706 ProcessorFamilyAmdTurionUltraDualCoreMobile
= 0xE8,
707 ProcessorFamilyAmdTurionDualCoreMobile
= 0xE9,
708 ProcessorFamilyAmdAthlonDualCore
= 0xEA,
709 ProcessorFamilyAmdSempronSI
= 0xEB,
710 ProcessorFamilyAmdPhenomII
= 0xEC,
711 ProcessorFamilyAmdAthlonII
= 0xED,
712 ProcessorFamilySixCoreAmdOpteron
= 0xEE,
713 ProcessorFamilyAmdSempronM
= 0xEF,
714 ProcessorFamilyi860
= 0xFA,
715 ProcessorFamilyi960
= 0xFB,
716 ProcessorFamilyIndicatorFamily2
= 0xFE,
717 ProcessorFamilyReserved1
= 0xFF
718 } PROCESSOR_FAMILY_DATA
;
721 /// Processor Information2 - Processor Family2.
724 ProcessorFamilyARMv7
= 0x0100,
725 ProcessorFamilyARMv8
= 0x0101,
726 ProcessorFamilySH3
= 0x0104,
727 ProcessorFamilySH4
= 0x0105,
728 ProcessorFamilyARM
= 0x0118,
729 ProcessorFamilyStrongARM
= 0x0119,
730 ProcessorFamily6x86
= 0x012C,
731 ProcessorFamilyMediaGX
= 0x012D,
732 ProcessorFamilyMII
= 0x012E,
733 ProcessorFamilyWinChip
= 0x0140,
734 ProcessorFamilyDSP
= 0x015E,
735 ProcessorFamilyVideoProcessor
= 0x01F4
736 } PROCESSOR_FAMILY2_DATA
;
739 /// Processor Information - Voltage.
742 UINT8 ProcessorVoltageCapability5V
:1;
743 UINT8 ProcessorVoltageCapability3_3V
:1;
744 UINT8 ProcessorVoltageCapability2_9V
:1;
745 UINT8 ProcessorVoltageCapabilityReserved
:1; ///< Bit 3, must be zero.
746 UINT8 ProcessorVoltageReserved
:3; ///< Bits 4-6, must be zero.
747 UINT8 ProcessorVoltageIndicateLegacy
:1;
751 /// Processor Information - Processor Upgrade.
754 ProcessorUpgradeOther
= 0x01,
755 ProcessorUpgradeUnknown
= 0x02,
756 ProcessorUpgradeDaughterBoard
= 0x03,
757 ProcessorUpgradeZIFSocket
= 0x04,
758 ProcessorUpgradePiggyBack
= 0x05, ///< Replaceable.
759 ProcessorUpgradeNone
= 0x06,
760 ProcessorUpgradeLIFSocket
= 0x07,
761 ProcessorUpgradeSlot1
= 0x08,
762 ProcessorUpgradeSlot2
= 0x09,
763 ProcessorUpgrade370PinSocket
= 0x0A,
764 ProcessorUpgradeSlotA
= 0x0B,
765 ProcessorUpgradeSlotM
= 0x0C,
766 ProcessorUpgradeSocket423
= 0x0D,
767 ProcessorUpgradeSocketA
= 0x0E, ///< Socket 462.
768 ProcessorUpgradeSocket478
= 0x0F,
769 ProcessorUpgradeSocket754
= 0x10,
770 ProcessorUpgradeSocket940
= 0x11,
771 ProcessorUpgradeSocket939
= 0x12,
772 ProcessorUpgradeSocketmPGA604
= 0x13,
773 ProcessorUpgradeSocketLGA771
= 0x14,
774 ProcessorUpgradeSocketLGA775
= 0x15,
775 ProcessorUpgradeSocketS1
= 0x16,
776 ProcessorUpgradeAM2
= 0x17,
777 ProcessorUpgradeF1207
= 0x18,
778 ProcessorSocketLGA1366
= 0x19,
779 ProcessorUpgradeSocketG34
= 0x1A,
780 ProcessorUpgradeSocketAM3
= 0x1B,
781 ProcessorUpgradeSocketC32
= 0x1C,
782 ProcessorUpgradeSocketLGA1156
= 0x1D,
783 ProcessorUpgradeSocketLGA1567
= 0x1E,
784 ProcessorUpgradeSocketPGA988A
= 0x1F,
785 ProcessorUpgradeSocketBGA1288
= 0x20,
786 ProcessorUpgradeSocketrPGA988B
= 0x21,
787 ProcessorUpgradeSocketBGA1023
= 0x22,
788 ProcessorUpgradeSocketBGA1224
= 0x23,
789 ProcessorUpgradeSocketLGA1155
= 0x24, ///< SMBIOS spec 2.8.0 updated the name
790 ProcessorUpgradeSocketLGA1356
= 0x25,
791 ProcessorUpgradeSocketLGA2011
= 0x26,
792 ProcessorUpgradeSocketFS1
= 0x27,
793 ProcessorUpgradeSocketFS2
= 0x28,
794 ProcessorUpgradeSocketFM1
= 0x29,
795 ProcessorUpgradeSocketFM2
= 0x2A,
796 ProcessorUpgradeSocketLGA2011_3
= 0x2B,
797 ProcessorUpgradeSocketLGA1356_3
= 0x2C,
798 ProcessorUpgradeSocketLGA1150
= 0x2D,
799 ProcessorUpgradeSocketBGA1168
= 0x2E,
800 ProcessorUpgradeSocketBGA1234
= 0x2F,
801 ProcessorUpgradeSocketBGA1364
= 0x30,
802 ProcessorUpgradeSocketAM4
= 0x31,
803 ProcessorUpgradeSocketLGA1151
= 0x32,
804 ProcessorUpgradeSocketBGA1356
= 0x33,
805 ProcessorUpgradeSocketBGA1440
= 0x34,
806 ProcessorUpgradeSocketBGA1515
= 0x35,
807 ProcessorUpgradeSocketLGA3647_1
= 0x36,
808 ProcessorUpgradeSocketSP3
= 0x37,
809 ProcessorUpgradeSocketSP3r2
= 0x38
813 /// Processor ID Field Description
816 UINT32 ProcessorSteppingId
:4;
817 UINT32 ProcessorModel
: 4;
818 UINT32 ProcessorFamily
: 4;
819 UINT32 ProcessorType
: 2;
820 UINT32 ProcessorReserved1
: 2;
821 UINT32 ProcessorXModel
: 4;
822 UINT32 ProcessorXFamily
: 8;
823 UINT32 ProcessorReserved2
: 4;
824 } PROCESSOR_SIGNATURE
;
827 UINT32 ProcessorFpu
:1;
828 UINT32 ProcessorVme
:1;
829 UINT32 ProcessorDe
:1;
830 UINT32 ProcessorPse
:1;
831 UINT32 ProcessorTsc
:1;
832 UINT32 ProcessorMsr
:1;
833 UINT32 ProcessorPae
:1;
834 UINT32 ProcessorMce
:1;
835 UINT32 ProcessorCx8
:1;
836 UINT32 ProcessorApic
:1;
837 UINT32 ProcessorReserved1
:1;
838 UINT32 ProcessorSep
:1;
839 UINT32 ProcessorMtrr
:1;
840 UINT32 ProcessorPge
:1;
841 UINT32 ProcessorMca
:1;
842 UINT32 ProcessorCmov
:1;
843 UINT32 ProcessorPat
:1;
844 UINT32 ProcessorPse36
:1;
845 UINT32 ProcessorPsn
:1;
846 UINT32 ProcessorClfsh
:1;
847 UINT32 ProcessorReserved2
:1;
848 UINT32 ProcessorDs
:1;
849 UINT32 ProcessorAcpi
:1;
850 UINT32 ProcessorMmx
:1;
851 UINT32 ProcessorFxsr
:1;
852 UINT32 ProcessorSse
:1;
853 UINT32 ProcessorSse2
:1;
854 UINT32 ProcessorSs
:1;
855 UINT32 ProcessorReserved3
:1;
856 UINT32 ProcessorTm
:1;
857 UINT32 ProcessorReserved4
:2;
858 } PROCESSOR_FEATURE_FLAGS
;
861 PROCESSOR_SIGNATURE Signature
;
862 PROCESSOR_FEATURE_FLAGS FeatureFlags
;
866 /// Processor Information (Type 4).
868 /// The information in this structure defines the attributes of a single processor;
869 /// a separate structure instance is provided for each system processor socket/slot.
870 /// For example, a system with an IntelDX2 processor would have a single
871 /// structure instance, while a system with an IntelSX2 processor would have a structure
872 /// to describe the main CPU, and a second structure to describe the 80487 co-processor.
875 SMBIOS_STRUCTURE Hdr
;
876 SMBIOS_TABLE_STRING Socket
;
877 UINT8 ProcessorType
; ///< The enumeration value from PROCESSOR_TYPE_DATA.
878 UINT8 ProcessorFamily
; ///< The enumeration value from PROCESSOR_FAMILY_DATA.
879 SMBIOS_TABLE_STRING ProcessorManufacture
;
880 PROCESSOR_ID_DATA ProcessorId
;
881 SMBIOS_TABLE_STRING ProcessorVersion
;
882 PROCESSOR_VOLTAGE Voltage
;
883 UINT16 ExternalClock
;
887 UINT8 ProcessorUpgrade
; ///< The enumeration value from PROCESSOR_UPGRADE.
888 UINT16 L1CacheHandle
;
889 UINT16 L2CacheHandle
;
890 UINT16 L3CacheHandle
;
891 SMBIOS_TABLE_STRING SerialNumber
;
892 SMBIOS_TABLE_STRING AssetTag
;
893 SMBIOS_TABLE_STRING PartNumber
;
895 // Add for smbios 2.5
898 UINT8 EnabledCoreCount
;
900 UINT16 ProcessorCharacteristics
;
902 // Add for smbios 2.6
904 UINT16 ProcessorFamily2
;
906 // Add for smbios 3.0
909 UINT16 EnabledCoreCount2
;
911 } SMBIOS_TABLE_TYPE4
;
914 /// Memory Controller Error Detecting Method.
917 ErrorDetectingMethodOther
= 0x01,
918 ErrorDetectingMethodUnknown
= 0x02,
919 ErrorDetectingMethodNone
= 0x03,
920 ErrorDetectingMethodParity
= 0x04,
921 ErrorDetectingMethod32Ecc
= 0x05,
922 ErrorDetectingMethod64Ecc
= 0x06,
923 ErrorDetectingMethod128Ecc
= 0x07,
924 ErrorDetectingMethodCrc
= 0x08
925 } MEMORY_ERROR_DETECT_METHOD
;
928 /// Memory Controller Error Correcting Capability.
934 UINT8 SingleBitErrorCorrect
:1;
935 UINT8 DoubleBitErrorCorrect
:1;
936 UINT8 ErrorScrubbing
:1;
938 } MEMORY_ERROR_CORRECT_CAPABILITY
;
941 /// Memory Controller Information - Interleave Support.
944 MemoryInterleaveOther
= 0x01,
945 MemoryInterleaveUnknown
= 0x02,
946 MemoryInterleaveOneWay
= 0x03,
947 MemoryInterleaveTwoWay
= 0x04,
948 MemoryInterleaveFourWay
= 0x05,
949 MemoryInterleaveEightWay
= 0x06,
950 MemoryInterleaveSixteenWay
= 0x07
951 } MEMORY_SUPPORT_INTERLEAVE_TYPE
;
954 /// Memory Controller Information - Memory Speeds.
966 /// Memory Controller Information (Type 5, Obsolete).
968 /// The information in this structure defines the attributes of the system's memory controller(s)
969 /// and the supported attributes of any memory-modules present in the sockets controlled by
971 /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),
972 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
973 /// and Memory Device (Type 17) structures should be used instead. BIOS providers might
974 /// choose to implement both memory description types to allow existing DMI browsers
975 /// to properly display the system's memory attributes.
978 SMBIOS_STRUCTURE Hdr
;
979 UINT8 ErrDetectMethod
; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.
980 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability
;
981 UINT8 SupportInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
982 UINT8 CurrentInterleave
; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
983 UINT8 MaxMemoryModuleSize
;
984 MEMORY_SPEED_TYPE SupportSpeed
;
985 UINT16 SupportMemoryType
;
986 UINT8 MemoryModuleVoltage
;
987 UINT8 AssociatedMemorySlotNum
;
988 UINT16 MemoryModuleConfigHandles
[1];
989 } SMBIOS_TABLE_TYPE5
;
992 /// Memory Module Information - Memory Types
998 UINT16 FastPageMode
:1;
1007 } MEMORY_CURRENT_TYPE
;
1010 /// Memory Module Information - Memory Size.
1013 UINT8 InstalledOrEnabledSize
:7; ///< Size (n), where 2**n is the size in MB.
1014 UINT8 SingleOrDoubleBank
:1;
1015 } MEMORY_INSTALLED_ENABLED_SIZE
;
1018 /// Memory Module Information (Type 6, Obsolete)
1020 /// One Memory Module Information structure is included for each memory-module socket
1021 /// in the system. The structure describes the speed, type, size, and error status
1022 /// of each system memory module. The supported attributes of each module are described
1023 /// by the "owning" Memory Controller Information structure.
1024 /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),
1025 /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)
1026 /// and Memory Device (Type 17) structures should be used instead.
1029 SMBIOS_STRUCTURE Hdr
;
1030 SMBIOS_TABLE_STRING SocketDesignation
;
1031 UINT8 BankConnections
;
1033 MEMORY_CURRENT_TYPE CurrentMemoryType
;
1034 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize
;
1035 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize
;
1037 } SMBIOS_TABLE_TYPE6
;
1040 /// Cache Information - SRAM Type.
1047 UINT16 PipelineBurst
:1;
1048 UINT16 Synchronous
:1;
1049 UINT16 Asynchronous
:1;
1051 } CACHE_SRAM_TYPE_DATA
;
1054 /// Cache Information - Error Correction Type.
1057 CacheErrorOther
= 0x01,
1058 CacheErrorUnknown
= 0x02,
1059 CacheErrorNone
= 0x03,
1060 CacheErrorParity
= 0x04,
1061 CacheErrorSingleBit
= 0x05, ///< ECC
1062 CacheErrorMultiBit
= 0x06 ///< ECC
1063 } CACHE_ERROR_TYPE_DATA
;
1066 /// Cache Information - System Cache Type.
1069 CacheTypeOther
= 0x01,
1070 CacheTypeUnknown
= 0x02,
1071 CacheTypeInstruction
= 0x03,
1072 CacheTypeData
= 0x04,
1073 CacheTypeUnified
= 0x05
1077 /// Cache Information - Associativity.
1080 CacheAssociativityOther
= 0x01,
1081 CacheAssociativityUnknown
= 0x02,
1082 CacheAssociativityDirectMapped
= 0x03,
1083 CacheAssociativity2Way
= 0x04,
1084 CacheAssociativity4Way
= 0x05,
1085 CacheAssociativityFully
= 0x06,
1086 CacheAssociativity8Way
= 0x07,
1087 CacheAssociativity16Way
= 0x08,
1088 CacheAssociativity12Way
= 0x09,
1089 CacheAssociativity24Way
= 0x0A,
1090 CacheAssociativity32Way
= 0x0B,
1091 CacheAssociativity48Way
= 0x0C,
1092 CacheAssociativity64Way
= 0x0D,
1093 CacheAssociativity20Way
= 0x0E
1094 } CACHE_ASSOCIATIVITY_DATA
;
1097 /// Cache Information (Type 7).
1099 /// The information in this structure defines the attributes of CPU cache device in the system.
1100 /// One structure is specified for each such device, whether the device is internal to
1101 /// or external to the CPU module. Cache modules can be associated with a processor structure
1102 /// in one or two ways, depending on the SMBIOS version.
1105 SMBIOS_STRUCTURE Hdr
;
1106 SMBIOS_TABLE_STRING SocketDesignation
;
1107 UINT16 CacheConfiguration
;
1108 UINT16 MaximumCacheSize
;
1109 UINT16 InstalledSize
;
1110 CACHE_SRAM_TYPE_DATA SupportedSRAMType
;
1111 CACHE_SRAM_TYPE_DATA CurrentSRAMType
;
1113 UINT8 ErrorCorrectionType
; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.
1114 UINT8 SystemCacheType
; ///< The enumeration value from CACHE_TYPE_DATA.
1115 UINT8 Associativity
; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.
1117 // Add for smbios 3.1.0
1119 UINT32 MaximumCacheSize2
;
1120 UINT32 InstalledSize2
;
1121 } SMBIOS_TABLE_TYPE7
;
1124 /// Port Connector Information - Connector Types.
1127 PortConnectorTypeNone
= 0x00,
1128 PortConnectorTypeCentronics
= 0x01,
1129 PortConnectorTypeMiniCentronics
= 0x02,
1130 PortConnectorTypeProprietary
= 0x03,
1131 PortConnectorTypeDB25Male
= 0x04,
1132 PortConnectorTypeDB25Female
= 0x05,
1133 PortConnectorTypeDB15Male
= 0x06,
1134 PortConnectorTypeDB15Female
= 0x07,
1135 PortConnectorTypeDB9Male
= 0x08,
1136 PortConnectorTypeDB9Female
= 0x09,
1137 PortConnectorTypeRJ11
= 0x0A,
1138 PortConnectorTypeRJ45
= 0x0B,
1139 PortConnectorType50PinMiniScsi
= 0x0C,
1140 PortConnectorTypeMiniDin
= 0x0D,
1141 PortConnectorTypeMicroDin
= 0x0E,
1142 PortConnectorTypePS2
= 0x0F,
1143 PortConnectorTypeInfrared
= 0x10,
1144 PortConnectorTypeHpHil
= 0x11,
1145 PortConnectorTypeUsb
= 0x12,
1146 PortConnectorTypeSsaScsi
= 0x13,
1147 PortConnectorTypeCircularDin8Male
= 0x14,
1148 PortConnectorTypeCircularDin8Female
= 0x15,
1149 PortConnectorTypeOnboardIde
= 0x16,
1150 PortConnectorTypeOnboardFloppy
= 0x17,
1151 PortConnectorType9PinDualInline
= 0x18,
1152 PortConnectorType25PinDualInline
= 0x19,
1153 PortConnectorType50PinDualInline
= 0x1A,
1154 PortConnectorType68PinDualInline
= 0x1B,
1155 PortConnectorTypeOnboardSoundInput
= 0x1C,
1156 PortConnectorTypeMiniCentronicsType14
= 0x1D,
1157 PortConnectorTypeMiniCentronicsType26
= 0x1E,
1158 PortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1159 PortConnectorTypeBNC
= 0x20,
1160 PortConnectorType1394
= 0x21,
1161 PortConnectorTypeSasSata
= 0x22,
1162 PortConnectorTypePC98
= 0xA0,
1163 PortConnectorTypePC98Hireso
= 0xA1,
1164 PortConnectorTypePCH98
= 0xA2,
1165 PortConnectorTypePC98Note
= 0xA3,
1166 PortConnectorTypePC98Full
= 0xA4,
1167 PortConnectorTypeOther
= 0xFF
1168 } MISC_PORT_CONNECTOR_TYPE
;
1171 /// Port Connector Information - Port Types
1174 PortTypeNone
= 0x00,
1175 PortTypeParallelXtAtCompatible
= 0x01,
1176 PortTypeParallelPortPs2
= 0x02,
1177 PortTypeParallelPortEcp
= 0x03,
1178 PortTypeParallelPortEpp
= 0x04,
1179 PortTypeParallelPortEcpEpp
= 0x05,
1180 PortTypeSerialXtAtCompatible
= 0x06,
1181 PortTypeSerial16450Compatible
= 0x07,
1182 PortTypeSerial16550Compatible
= 0x08,
1183 PortTypeSerial16550ACompatible
= 0x09,
1184 PortTypeScsi
= 0x0A,
1185 PortTypeMidi
= 0x0B,
1186 PortTypeJoyStick
= 0x0C,
1187 PortTypeKeyboard
= 0x0D,
1188 PortTypeMouse
= 0x0E,
1189 PortTypeSsaScsi
= 0x0F,
1191 PortTypeFireWire
= 0x11,
1192 PortTypePcmciaTypeI
= 0x12,
1193 PortTypePcmciaTypeII
= 0x13,
1194 PortTypePcmciaTypeIII
= 0x14,
1195 PortTypeCardBus
= 0x15,
1196 PortTypeAccessBusPort
= 0x16,
1197 PortTypeScsiII
= 0x17,
1198 PortTypeScsiWide
= 0x18,
1199 PortTypePC98
= 0x19,
1200 PortTypePC98Hireso
= 0x1A,
1201 PortTypePCH98
= 0x1B,
1202 PortTypeVideoPort
= 0x1C,
1203 PortTypeAudioPort
= 0x1D,
1204 PortTypeModemPort
= 0x1E,
1205 PortTypeNetworkPort
= 0x1F,
1206 PortTypeSata
= 0x20,
1208 PortType8251Compatible
= 0xA0,
1209 PortType8251FifoCompatible
= 0xA1,
1210 PortTypeOther
= 0xFF
1214 /// Port Connector Information (Type 8).
1216 /// The information in this structure defines the attributes of a system port connector,
1217 /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information
1218 /// are provided. One structure is present for each port provided by the system.
1221 SMBIOS_STRUCTURE Hdr
;
1222 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
1223 UINT8 InternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1224 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
1225 UINT8 ExternalConnectorType
; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
1226 UINT8 PortType
; ///< The enumeration value from MISC_PORT_TYPE.
1227 } SMBIOS_TABLE_TYPE8
;
1230 /// System Slots - Slot Type
1233 SlotTypeOther
= 0x01,
1234 SlotTypeUnknown
= 0x02,
1237 SlotTypeEisa
= 0x05,
1239 SlotTypePcmcia
= 0x07,
1240 SlotTypeVlVesa
= 0x08,
1241 SlotTypeProprietary
= 0x09,
1242 SlotTypeProcessorCardSlot
= 0x0A,
1243 SlotTypeProprietaryMemoryCardSlot
= 0x0B,
1244 SlotTypeIORiserCardSlot
= 0x0C,
1245 SlotTypeNuBus
= 0x0D,
1246 SlotTypePci66MhzCapable
= 0x0E,
1248 SlotTypeApg2X
= 0x10,
1249 SlotTypeAgp4X
= 0x11,
1250 SlotTypePciX
= 0x12,
1251 SlotTypeAgp8X
= 0x13,
1252 SlotTypeM2Socket1_DP
= 0x14,
1253 SlotTypeM2Socket1_SD
= 0x15,
1254 SlotTypeM2Socket2
= 0x16,
1255 SlotTypeM2Socket3
= 0x17,
1256 SlotTypeMxmTypeI
= 0x18,
1257 SlotTypeMxmTypeII
= 0x19,
1258 SlotTypeMxmTypeIIIStandard
= 0x1A,
1259 SlotTypeMxmTypeIIIHe
= 0x1B,
1260 SlotTypeMxmTypeIV
= 0x1C,
1261 SlotTypeMxm30TypeA
= 0x1D,
1262 SlotTypeMxm30TypeB
= 0x1E,
1263 SlotTypePciExpressGen2Sff_8639
= 0x1F,
1264 SlotTypePciExpressGen3Sff_8639
= 0x20,
1265 SlotTypePciExpressMini52pinWithBSKO
= 0x21, ///< PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs.
1266 SlotTypePciExpressMini52pinWithoutBSKO
= 0x22, ///< PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs.
1267 SlotTypePciExpressMini76pin
= 0x23, ///< PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card.
1268 SlotTypePC98C20
= 0xA0,
1269 SlotTypePC98C24
= 0xA1,
1270 SlotTypePC98E
= 0xA2,
1271 SlotTypePC98LocalBus
= 0xA3,
1272 SlotTypePC98Card
= 0xA4,
1273 SlotTypePciExpress
= 0xA5,
1274 SlotTypePciExpressX1
= 0xA6,
1275 SlotTypePciExpressX2
= 0xA7,
1276 SlotTypePciExpressX4
= 0xA8,
1277 SlotTypePciExpressX8
= 0xA9,
1278 SlotTypePciExpressX16
= 0xAA,
1279 SlotTypePciExpressGen2
= 0xAB,
1280 SlotTypePciExpressGen2X1
= 0xAC,
1281 SlotTypePciExpressGen2X2
= 0xAD,
1282 SlotTypePciExpressGen2X4
= 0xAE,
1283 SlotTypePciExpressGen2X8
= 0xAF,
1284 SlotTypePciExpressGen2X16
= 0xB0,
1285 SlotTypePciExpressGen3
= 0xB1,
1286 SlotTypePciExpressGen3X1
= 0xB2,
1287 SlotTypePciExpressGen3X2
= 0xB3,
1288 SlotTypePciExpressGen3X4
= 0xB4,
1289 SlotTypePciExpressGen3X8
= 0xB5,
1290 SlotTypePciExpressGen3X16
= 0xB6
1294 /// System Slots - Slot Data Bus Width.
1297 SlotDataBusWidthOther
= 0x01,
1298 SlotDataBusWidthUnknown
= 0x02,
1299 SlotDataBusWidth8Bit
= 0x03,
1300 SlotDataBusWidth16Bit
= 0x04,
1301 SlotDataBusWidth32Bit
= 0x05,
1302 SlotDataBusWidth64Bit
= 0x06,
1303 SlotDataBusWidth128Bit
= 0x07,
1304 SlotDataBusWidth1X
= 0x08, ///< Or X1
1305 SlotDataBusWidth2X
= 0x09, ///< Or X2
1306 SlotDataBusWidth4X
= 0x0A, ///< Or X4
1307 SlotDataBusWidth8X
= 0x0B, ///< Or X8
1308 SlotDataBusWidth12X
= 0x0C, ///< Or X12
1309 SlotDataBusWidth16X
= 0x0D, ///< Or X16
1310 SlotDataBusWidth32X
= 0x0E ///< Or X32
1311 } MISC_SLOT_DATA_BUS_WIDTH
;
1314 /// System Slots - Current Usage.
1317 SlotUsageOther
= 0x01,
1318 SlotUsageUnknown
= 0x02,
1319 SlotUsageAvailable
= 0x03,
1320 SlotUsageInUse
= 0x04
1324 /// System Slots - Slot Length.
1327 SlotLengthOther
= 0x01,
1328 SlotLengthUnknown
= 0x02,
1329 SlotLengthShort
= 0x03,
1330 SlotLengthLong
= 0x04
1334 /// System Slots - Slot Characteristics 1.
1337 UINT8 CharacteristicsUnknown
:1;
1338 UINT8 Provides50Volts
:1;
1339 UINT8 Provides33Volts
:1;
1340 UINT8 SharedSlot
:1;
1341 UINT8 PcCard16Supported
:1;
1342 UINT8 CardBusSupported
:1;
1343 UINT8 ZoomVideoSupported
:1;
1344 UINT8 ModemRingResumeSupported
:1;
1345 } MISC_SLOT_CHARACTERISTICS1
;
1347 /// System Slots - Slot Characteristics 2.
1350 UINT8 PmeSignalSupported
:1;
1351 UINT8 HotPlugDevicesSupported
:1;
1352 UINT8 SmbusSignalSupported
:1;
1353 UINT8 Reserved
:5; ///< Set to 0.
1354 } MISC_SLOT_CHARACTERISTICS2
;
1357 /// System Slots (Type 9)
1359 /// The information in this structure defines the attributes of a system slot.
1360 /// One structure is provided for each slot in the system.
1364 SMBIOS_STRUCTURE Hdr
;
1365 SMBIOS_TABLE_STRING SlotDesignation
;
1366 UINT8 SlotType
; ///< The enumeration value from MISC_SLOT_TYPE.
1367 UINT8 SlotDataBusWidth
; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
1368 UINT8 CurrentUsage
; ///< The enumeration value from MISC_SLOT_USAGE.
1369 UINT8 SlotLength
; ///< The enumeration value from MISC_SLOT_LENGTH.
1371 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1
;
1372 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2
;
1374 // Add for smbios 2.6
1376 UINT16 SegmentGroupNum
;
1379 } SMBIOS_TABLE_TYPE9
;
1382 /// On Board Devices Information - Device Types.
1385 OnBoardDeviceTypeOther
= 0x01,
1386 OnBoardDeviceTypeUnknown
= 0x02,
1387 OnBoardDeviceTypeVideo
= 0x03,
1388 OnBoardDeviceTypeScsiController
= 0x04,
1389 OnBoardDeviceTypeEthernet
= 0x05,
1390 OnBoardDeviceTypeTokenRing
= 0x06,
1391 OnBoardDeviceTypeSound
= 0x07,
1392 OnBoardDeviceTypePATAController
= 0x08,
1393 OnBoardDeviceTypeSATAController
= 0x09,
1394 OnBoardDeviceTypeSASController
= 0x0A
1395 } MISC_ONBOARD_DEVICE_TYPE
;
1398 /// Device Item Entry
1401 UINT8 DeviceType
; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.
1402 ///< Bit 7 - 1 : device enabled, 0 : device disabled.
1403 SMBIOS_TABLE_STRING DescriptionString
;
1407 /// On Board Devices Information (Type 10, obsolete).
1409 /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended
1410 /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both
1411 /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.
1412 /// The information in this structure defines the attributes of devices that are onboard (soldered onto)
1413 /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS
1414 /// has some level of control over the enabling of the associated device for use by the system.
1417 SMBIOS_STRUCTURE Hdr
;
1418 DEVICE_STRUCT Device
[1];
1419 } SMBIOS_TABLE_TYPE10
;
1422 /// OEM Strings (Type 11).
1423 /// This structure contains free form strings defined by the OEM. Examples of this are:
1424 /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.
1427 SMBIOS_STRUCTURE Hdr
;
1429 } SMBIOS_TABLE_TYPE11
;
1432 /// System Configuration Options (Type 12).
1434 /// This structure contains information required to configure the base board's Jumpers and Switches.
1437 SMBIOS_STRUCTURE Hdr
;
1439 } SMBIOS_TABLE_TYPE12
;
1443 /// BIOS Language Information (Type 13).
1445 /// The information in this structure defines the installable language attributes of the BIOS.
1448 SMBIOS_STRUCTURE Hdr
;
1449 UINT8 InstallableLanguages
;
1452 SMBIOS_TABLE_STRING CurrentLanguages
;
1453 } SMBIOS_TABLE_TYPE13
;
1456 /// Group Item Entry
1464 /// Group Associations (Type 14).
1466 /// The Group Associations structure is provided for OEMs who want to specify
1467 /// the arrangement or hierarchy of certain components (including other Group Associations)
1468 /// within the system.
1471 SMBIOS_STRUCTURE Hdr
;
1472 SMBIOS_TABLE_STRING GroupName
;
1473 GROUP_STRUCT Group
[1];
1474 } SMBIOS_TABLE_TYPE14
;
1477 /// System Event Log - Event Log Types.
1480 EventLogTypeReserved
= 0x00,
1481 EventLogTypeSingleBitECC
= 0x01,
1482 EventLogTypeMultiBitECC
= 0x02,
1483 EventLogTypeParityMemErr
= 0x03,
1484 EventLogTypeBusTimeOut
= 0x04,
1485 EventLogTypeIOChannelCheck
= 0x05,
1486 EventLogTypeSoftwareNMI
= 0x06,
1487 EventLogTypePOSTMemResize
= 0x07,
1488 EventLogTypePOSTErr
= 0x08,
1489 EventLogTypePCIParityErr
= 0x09,
1490 EventLogTypePCISystemErr
= 0x0A,
1491 EventLogTypeCPUFailure
= 0x0B,
1492 EventLogTypeEISATimeOut
= 0x0C,
1493 EventLogTypeMemLogDisabled
= 0x0D,
1494 EventLogTypeLoggingDisabled
= 0x0E,
1495 EventLogTypeSysLimitExce
= 0x10,
1496 EventLogTypeAsyncHWTimer
= 0x11,
1497 EventLogTypeSysConfigInfo
= 0x12,
1498 EventLogTypeHDInfo
= 0x13,
1499 EventLogTypeSysReconfig
= 0x14,
1500 EventLogTypeUncorrectCPUErr
= 0x15,
1501 EventLogTypeAreaResetAndClr
= 0x16,
1502 EventLogTypeSystemBoot
= 0x17,
1503 EventLogTypeUnused
= 0x18, ///< 0x18 - 0x7F
1504 EventLogTypeAvailForSys
= 0x80, ///< 0x80 - 0xFE
1505 EventLogTypeEndOfLog
= 0xFF
1506 } EVENT_LOG_TYPE_DATA
;
1509 /// System Event Log - Variable Data Format Types.
1512 EventLogVariableNone
= 0x00,
1513 EventLogVariableHandle
= 0x01,
1514 EventLogVariableMutilEvent
= 0x02,
1515 EventLogVariableMutilEventHandle
= 0x03,
1516 EventLogVariablePOSTResultBitmap
= 0x04,
1517 EventLogVariableSysManagementType
= 0x05,
1518 EventLogVariableMutliEventSysManagmentType
= 0x06,
1519 EventLogVariableUnused
= 0x07,
1520 EventLogVariableOEMAssigned
= 0x80
1521 } EVENT_LOG_VARIABLE_DATA
;
1524 /// Event Log Type Descriptors
1527 UINT8 LogType
; ///< The enumeration value from EVENT_LOG_TYPE_DATA.
1528 UINT8 DataFormatType
;
1532 /// System Event Log (Type 15).
1534 /// The presence of this structure within the SMBIOS data returned for a system indicates
1535 /// that the system supports an event log. An event log is a fixed-length area within a
1536 /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header
1537 /// record, followed by one or more variable-length log records.
1540 SMBIOS_STRUCTURE Hdr
;
1541 UINT16 LogAreaLength
;
1542 UINT16 LogHeaderStartOffset
;
1543 UINT16 LogDataStartOffset
;
1546 UINT32 LogChangeToken
;
1547 UINT32 AccessMethodAddress
;
1548 UINT8 LogHeaderFormat
;
1549 UINT8 NumberOfSupportedLogTypeDescriptors
;
1550 UINT8 LengthOfLogTypeDescriptor
;
1551 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
1552 } SMBIOS_TABLE_TYPE15
;
1555 /// Physical Memory Array - Location.
1558 MemoryArrayLocationOther
= 0x01,
1559 MemoryArrayLocationUnknown
= 0x02,
1560 MemoryArrayLocationSystemBoard
= 0x03,
1561 MemoryArrayLocationIsaAddonCard
= 0x04,
1562 MemoryArrayLocationEisaAddonCard
= 0x05,
1563 MemoryArrayLocationPciAddonCard
= 0x06,
1564 MemoryArrayLocationMcaAddonCard
= 0x07,
1565 MemoryArrayLocationPcmciaAddonCard
= 0x08,
1566 MemoryArrayLocationProprietaryAddonCard
= 0x09,
1567 MemoryArrayLocationNuBus
= 0x0A,
1568 MemoryArrayLocationPc98C20AddonCard
= 0xA0,
1569 MemoryArrayLocationPc98C24AddonCard
= 0xA1,
1570 MemoryArrayLocationPc98EAddonCard
= 0xA2,
1571 MemoryArrayLocationPc98LocalBusAddonCard
= 0xA3
1572 } MEMORY_ARRAY_LOCATION
;
1575 /// Physical Memory Array - Use.
1578 MemoryArrayUseOther
= 0x01,
1579 MemoryArrayUseUnknown
= 0x02,
1580 MemoryArrayUseSystemMemory
= 0x03,
1581 MemoryArrayUseVideoMemory
= 0x04,
1582 MemoryArrayUseFlashMemory
= 0x05,
1583 MemoryArrayUseNonVolatileRam
= 0x06,
1584 MemoryArrayUseCacheMemory
= 0x07
1588 /// Physical Memory Array - Error Correction Types.
1591 MemoryErrorCorrectionOther
= 0x01,
1592 MemoryErrorCorrectionUnknown
= 0x02,
1593 MemoryErrorCorrectionNone
= 0x03,
1594 MemoryErrorCorrectionParity
= 0x04,
1595 MemoryErrorCorrectionSingleBitEcc
= 0x05,
1596 MemoryErrorCorrectionMultiBitEcc
= 0x06,
1597 MemoryErrorCorrectionCrc
= 0x07
1598 } MEMORY_ERROR_CORRECTION
;
1601 /// Physical Memory Array (Type 16).
1603 /// This structure describes a collection of memory devices that operate
1604 /// together to form a memory address space.
1607 SMBIOS_STRUCTURE Hdr
;
1608 UINT8 Location
; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
1609 UINT8 Use
; ///< The enumeration value from MEMORY_ARRAY_USE.
1610 UINT8 MemoryErrorCorrection
; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
1611 UINT32 MaximumCapacity
;
1612 UINT16 MemoryErrorInformationHandle
;
1613 UINT16 NumberOfMemoryDevices
;
1615 // Add for smbios 2.7
1617 UINT64 ExtendedMaximumCapacity
;
1618 } SMBIOS_TABLE_TYPE16
;
1621 /// Memory Device - Form Factor.
1624 MemoryFormFactorOther
= 0x01,
1625 MemoryFormFactorUnknown
= 0x02,
1626 MemoryFormFactorSimm
= 0x03,
1627 MemoryFormFactorSip
= 0x04,
1628 MemoryFormFactorChip
= 0x05,
1629 MemoryFormFactorDip
= 0x06,
1630 MemoryFormFactorZip
= 0x07,
1631 MemoryFormFactorProprietaryCard
= 0x08,
1632 MemoryFormFactorDimm
= 0x09,
1633 MemoryFormFactorTsop
= 0x0A,
1634 MemoryFormFactorRowOfChips
= 0x0B,
1635 MemoryFormFactorRimm
= 0x0C,
1636 MemoryFormFactorSodimm
= 0x0D,
1637 MemoryFormFactorSrimm
= 0x0E,
1638 MemoryFormFactorFbDimm
= 0x0F
1639 } MEMORY_FORM_FACTOR
;
1642 /// Memory Device - Type
1645 MemoryTypeOther
= 0x01,
1646 MemoryTypeUnknown
= 0x02,
1647 MemoryTypeDram
= 0x03,
1648 MemoryTypeEdram
= 0x04,
1649 MemoryTypeVram
= 0x05,
1650 MemoryTypeSram
= 0x06,
1651 MemoryTypeRam
= 0x07,
1652 MemoryTypeRom
= 0x08,
1653 MemoryTypeFlash
= 0x09,
1654 MemoryTypeEeprom
= 0x0A,
1655 MemoryTypeFeprom
= 0x0B,
1656 MemoryTypeEprom
= 0x0C,
1657 MemoryTypeCdram
= 0x0D,
1658 MemoryType3Dram
= 0x0E,
1659 MemoryTypeSdram
= 0x0F,
1660 MemoryTypeSgram
= 0x10,
1661 MemoryTypeRdram
= 0x11,
1662 MemoryTypeDdr
= 0x12,
1663 MemoryTypeDdr2
= 0x13,
1664 MemoryTypeDdr2FbDimm
= 0x14,
1665 MemoryTypeDdr3
= 0x18,
1666 MemoryTypeFbd2
= 0x19,
1667 MemoryTypeDdr4
= 0x1A,
1668 MemoryTypeLpddr
= 0x1B,
1669 MemoryTypeLpddr2
= 0x1C,
1670 MemoryTypeLpddr3
= 0x1D,
1671 MemoryTypeLpddr4
= 0x1E
1672 } MEMORY_DEVICE_TYPE
;
1678 UINT16 FastPaged
:1;
1679 UINT16 StaticColumn
:1;
1680 UINT16 PseudoStatic
:1;
1682 UINT16 Synchronous
:1;
1685 UINT16 WindowDram
:1;
1686 UINT16 CacheDram
:1;
1687 UINT16 Nonvolatile
:1;
1688 UINT16 Registered
:1;
1689 UINT16 Unbuffered
:1;
1691 } MEMORY_DEVICE_TYPE_DETAIL
;
1694 /// Memory Device (Type 17).
1696 /// This structure describes a single memory device that is part of
1697 /// a larger Physical Memory Array (Type 16).
1698 /// Note: If a system includes memory-device sockets, the SMBIOS implementation
1699 /// includes a Memory Device structure instance for each slot, whether or not the
1700 /// socket is currently populated.
1703 SMBIOS_STRUCTURE Hdr
;
1704 UINT16 MemoryArrayHandle
;
1705 UINT16 MemoryErrorInformationHandle
;
1709 UINT8 FormFactor
; ///< The enumeration value from MEMORY_FORM_FACTOR.
1711 SMBIOS_TABLE_STRING DeviceLocator
;
1712 SMBIOS_TABLE_STRING BankLocator
;
1713 UINT8 MemoryType
; ///< The enumeration value from MEMORY_DEVICE_TYPE.
1714 MEMORY_DEVICE_TYPE_DETAIL TypeDetail
;
1716 SMBIOS_TABLE_STRING Manufacturer
;
1717 SMBIOS_TABLE_STRING SerialNumber
;
1718 SMBIOS_TABLE_STRING AssetTag
;
1719 SMBIOS_TABLE_STRING PartNumber
;
1721 // Add for smbios 2.6
1725 // Add for smbios 2.7
1727 UINT32 ExtendedSize
;
1728 UINT16 ConfiguredMemoryClockSpeed
;
1730 // Add for smbios 2.8.0
1732 UINT16 MinimumVoltage
;
1733 UINT16 MaximumVoltage
;
1734 UINT16 ConfiguredVoltage
;
1735 } SMBIOS_TABLE_TYPE17
;
1738 /// 32-bit Memory Error Information - Error Type.
1741 MemoryErrorOther
= 0x01,
1742 MemoryErrorUnknown
= 0x02,
1743 MemoryErrorOk
= 0x03,
1744 MemoryErrorBadRead
= 0x04,
1745 MemoryErrorParity
= 0x05,
1746 MemoryErrorSigleBit
= 0x06,
1747 MemoryErrorDoubleBit
= 0x07,
1748 MemoryErrorMultiBit
= 0x08,
1749 MemoryErrorNibble
= 0x09,
1750 MemoryErrorChecksum
= 0x0A,
1751 MemoryErrorCrc
= 0x0B,
1752 MemoryErrorCorrectSingleBit
= 0x0C,
1753 MemoryErrorCorrected
= 0x0D,
1754 MemoryErrorUnCorrectable
= 0x0E
1755 } MEMORY_ERROR_TYPE
;
1758 /// 32-bit Memory Error Information - Error Granularity.
1761 MemoryGranularityOther
= 0x01,
1762 MemoryGranularityOtherUnknown
= 0x02,
1763 MemoryGranularityDeviceLevel
= 0x03,
1764 MemoryGranularityMemPartitionLevel
= 0x04
1765 } MEMORY_ERROR_GRANULARITY
;
1768 /// 32-bit Memory Error Information - Error Operation.
1771 MemoryErrorOperationOther
= 0x01,
1772 MemoryErrorOperationUnknown
= 0x02,
1773 MemoryErrorOperationRead
= 0x03,
1774 MemoryErrorOperationWrite
= 0x04,
1775 MemoryErrorOperationPartialWrite
= 0x05
1776 } MEMORY_ERROR_OPERATION
;
1779 /// 32-bit Memory Error Information (Type 18).
1781 /// This structure identifies the specifics of an error that might be detected
1782 /// within a Physical Memory Array.
1785 SMBIOS_STRUCTURE Hdr
;
1786 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
1787 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
1788 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
1789 UINT32 VendorSyndrome
;
1790 UINT32 MemoryArrayErrorAddress
;
1791 UINT32 DeviceErrorAddress
;
1792 UINT32 ErrorResolution
;
1793 } SMBIOS_TABLE_TYPE18
;
1796 /// Memory Array Mapped Address (Type 19).
1798 /// This structure provides the address mapping for a Physical Memory Array.
1799 /// One structure is present for each contiguous address range described.
1802 SMBIOS_STRUCTURE Hdr
;
1803 UINT32 StartingAddress
;
1804 UINT32 EndingAddress
;
1805 UINT16 MemoryArrayHandle
;
1806 UINT8 PartitionWidth
;
1808 // Add for smbios 2.7
1810 UINT64 ExtendedStartingAddress
;
1811 UINT64 ExtendedEndingAddress
;
1812 } SMBIOS_TABLE_TYPE19
;
1815 /// Memory Device Mapped Address (Type 20).
1817 /// This structure maps memory address space usually to a device-level granularity.
1818 /// One structure is present for each contiguous address range described.
1821 SMBIOS_STRUCTURE Hdr
;
1822 UINT32 StartingAddress
;
1823 UINT32 EndingAddress
;
1824 UINT16 MemoryDeviceHandle
;
1825 UINT16 MemoryArrayMappedAddressHandle
;
1826 UINT8 PartitionRowPosition
;
1827 UINT8 InterleavePosition
;
1828 UINT8 InterleavedDataDepth
;
1830 // Add for smbios 2.7
1832 UINT64 ExtendedStartingAddress
;
1833 UINT64 ExtendedEndingAddress
;
1834 } SMBIOS_TABLE_TYPE20
;
1837 /// Built-in Pointing Device - Type
1840 PointingDeviceTypeOther
= 0x01,
1841 PointingDeviceTypeUnknown
= 0x02,
1842 PointingDeviceTypeMouse
= 0x03,
1843 PointingDeviceTypeTrackBall
= 0x04,
1844 PointingDeviceTypeTrackPoint
= 0x05,
1845 PointingDeviceTypeGlidePoint
= 0x06,
1846 PointingDeviceTouchPad
= 0x07,
1847 PointingDeviceTouchScreen
= 0x08,
1848 PointingDeviceOpticalSensor
= 0x09
1849 } BUILTIN_POINTING_DEVICE_TYPE
;
1852 /// Built-in Pointing Device - Interface.
1855 PointingDeviceInterfaceOther
= 0x01,
1856 PointingDeviceInterfaceUnknown
= 0x02,
1857 PointingDeviceInterfaceSerial
= 0x03,
1858 PointingDeviceInterfacePs2
= 0x04,
1859 PointingDeviceInterfaceInfrared
= 0x05,
1860 PointingDeviceInterfaceHpHil
= 0x06,
1861 PointingDeviceInterfaceBusMouse
= 0x07,
1862 PointingDeviceInterfaceADB
= 0x08,
1863 PointingDeviceInterfaceBusMouseDB9
= 0xA0,
1864 PointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
1865 PointingDeviceInterfaceUsb
= 0xA2
1866 } BUILTIN_POINTING_DEVICE_INTERFACE
;
1869 /// Built-in Pointing Device (Type 21).
1871 /// This structure describes the attributes of the built-in pointing device for the
1872 /// system. The presence of this structure does not imply that the built-in
1873 /// pointing device is active for the system's use!
1876 SMBIOS_STRUCTURE Hdr
;
1877 UINT8 Type
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
1878 UINT8 Interface
; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
1879 UINT8 NumberOfButtons
;
1880 } SMBIOS_TABLE_TYPE21
;
1883 /// Portable Battery - Device Chemistry
1886 PortableBatteryDeviceChemistryOther
= 0x01,
1887 PortableBatteryDeviceChemistryUnknown
= 0x02,
1888 PortableBatteryDeviceChemistryLeadAcid
= 0x03,
1889 PortableBatteryDeviceChemistryNickelCadmium
= 0x04,
1890 PortableBatteryDeviceChemistryNickelMetalHydride
= 0x05,
1891 PortableBatteryDeviceChemistryLithiumIon
= 0x06,
1892 PortableBatteryDeviceChemistryZincAir
= 0x07,
1893 PortableBatteryDeviceChemistryLithiumPolymer
= 0x08
1894 } PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
1897 /// Portable Battery (Type 22).
1899 /// This structure describes the attributes of the portable battery(s) for the system.
1900 /// The structure contains the static attributes for the group. Each structure describes
1901 /// a single battery pack's attributes.
1904 SMBIOS_STRUCTURE Hdr
;
1905 SMBIOS_TABLE_STRING Location
;
1906 SMBIOS_TABLE_STRING Manufacturer
;
1907 SMBIOS_TABLE_STRING ManufactureDate
;
1908 SMBIOS_TABLE_STRING SerialNumber
;
1909 SMBIOS_TABLE_STRING DeviceName
;
1910 UINT8 DeviceChemistry
; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
1911 UINT16 DeviceCapacity
;
1912 UINT16 DesignVoltage
;
1913 SMBIOS_TABLE_STRING SBDSVersionNumber
;
1914 UINT8 MaximumErrorInBatteryData
;
1915 UINT16 SBDSSerialNumber
;
1916 UINT16 SBDSManufactureDate
;
1917 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
1918 UINT8 DesignCapacityMultiplier
;
1920 } SMBIOS_TABLE_TYPE22
;
1923 /// System Reset (Type 23)
1925 /// This structure describes whether Automatic System Reset functions enabled (Status).
1926 /// If the system has a watchdog Timer and the timer is not reset (Timer Reset)
1927 /// before the Interval elapses, an automatic system reset will occur. The system will re-boot
1928 /// according to the Boot Option. This function may repeat until the Limit is reached, at which time
1929 /// the system will re-boot according to the Boot Option at Limit.
1932 SMBIOS_STRUCTURE Hdr
;
1936 UINT16 TimerInterval
;
1938 } SMBIOS_TABLE_TYPE23
;
1941 /// Hardware Security (Type 24).
1943 /// This structure describes the system-wide hardware security settings.
1946 SMBIOS_STRUCTURE Hdr
;
1947 UINT8 HardwareSecuritySettings
;
1948 } SMBIOS_TABLE_TYPE24
;
1951 /// System Power Controls (Type 25).
1953 /// This structure describes the attributes for controlling the main power supply to the system.
1954 /// Software that interprets this structure uses the month, day, hour, minute, and second values
1955 /// to determine the number of seconds until the next power-on of the system. The presence of
1956 /// this structure implies that a timed power-on facility is available for the system.
1959 SMBIOS_STRUCTURE Hdr
;
1960 UINT8 NextScheduledPowerOnMonth
;
1961 UINT8 NextScheduledPowerOnDayOfMonth
;
1962 UINT8 NextScheduledPowerOnHour
;
1963 UINT8 NextScheduledPowerOnMinute
;
1964 UINT8 NextScheduledPowerOnSecond
;
1965 } SMBIOS_TABLE_TYPE25
;
1968 /// Voltage Probe - Location and Status.
1971 UINT8 VoltageProbeSite
:5;
1972 UINT8 VoltageProbeStatus
:3;
1973 } MISC_VOLTAGE_PROBE_LOCATION
;
1976 /// Voltage Probe (Type 26)
1978 /// This describes the attributes for a voltage probe in the system.
1979 /// Each structure describes a single voltage probe.
1982 SMBIOS_STRUCTURE Hdr
;
1983 SMBIOS_TABLE_STRING Description
;
1984 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus
;
1985 UINT16 MaximumValue
;
1986 UINT16 MinimumValue
;
1991 UINT16 NominalValue
;
1992 } SMBIOS_TABLE_TYPE26
;
1995 /// Cooling Device - Device Type and Status.
1998 UINT8 CoolingDevice
:5;
1999 UINT8 CoolingDeviceStatus
:3;
2000 } MISC_COOLING_DEVICE_TYPE
;
2003 /// Cooling Device (Type 27)
2005 /// This structure describes the attributes for a cooling device in the system.
2006 /// Each structure describes a single cooling device.
2009 SMBIOS_STRUCTURE Hdr
;
2010 UINT16 TemperatureProbeHandle
;
2011 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus
;
2012 UINT8 CoolingUnitGroup
;
2014 UINT16 NominalSpeed
;
2016 // Add for smbios 2.7
2018 SMBIOS_TABLE_STRING Description
;
2019 } SMBIOS_TABLE_TYPE27
;
2022 /// Temperature Probe - Location and Status.
2025 UINT8 TemperatureProbeSite
:5;
2026 UINT8 TemperatureProbeStatus
:3;
2027 } MISC_TEMPERATURE_PROBE_LOCATION
;
2030 /// Temperature Probe (Type 28).
2032 /// This structure describes the attributes for a temperature probe in the system.
2033 /// Each structure describes a single temperature probe.
2036 SMBIOS_STRUCTURE Hdr
;
2037 SMBIOS_TABLE_STRING Description
;
2038 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus
;
2039 UINT16 MaximumValue
;
2040 UINT16 MinimumValue
;
2045 UINT16 NominalValue
;
2046 } SMBIOS_TABLE_TYPE28
;
2049 /// Electrical Current Probe - Location and Status.
2052 UINT8 ElectricalCurrentProbeSite
:5;
2053 UINT8 ElectricalCurrentProbeStatus
:3;
2054 } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2057 /// Electrical Current Probe (Type 29).
2059 /// This structure describes the attributes for an electrical current probe in the system.
2060 /// Each structure describes a single electrical current probe.
2063 SMBIOS_STRUCTURE Hdr
;
2064 SMBIOS_TABLE_STRING Description
;
2065 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus
;
2066 UINT16 MaximumValue
;
2067 UINT16 MinimumValue
;
2072 UINT16 NominalValue
;
2073 } SMBIOS_TABLE_TYPE29
;
2076 /// Out-of-Band Remote Access (Type 30).
2078 /// This structure describes the attributes and policy settings of a hardware facility
2079 /// that may be used to gain remote access to a hardware system when the operating system
2080 /// is not available due to power-down status, hardware failures, or boot failures.
2083 SMBIOS_STRUCTURE Hdr
;
2084 SMBIOS_TABLE_STRING ManufacturerName
;
2086 } SMBIOS_TABLE_TYPE30
;
2089 /// Boot Integrity Services (BIS) Entry Point (Type 31).
2091 /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
2094 SMBIOS_STRUCTURE Hdr
;
2102 } SMBIOS_TABLE_TYPE31
;
2105 /// System Boot Information - System Boot Status.
2108 BootInformationStatusNoError
= 0x00,
2109 BootInformationStatusNoBootableMedia
= 0x01,
2110 BootInformationStatusNormalOSFailedLoading
= 0x02,
2111 BootInformationStatusFirmwareDetectedFailure
= 0x03,
2112 BootInformationStatusOSDetectedFailure
= 0x04,
2113 BootInformationStatusUserRequestedBoot
= 0x05,
2114 BootInformationStatusSystemSecurityViolation
= 0x06,
2115 BootInformationStatusPreviousRequestedImage
= 0x07,
2116 BootInformationStatusWatchdogTimerExpired
= 0x08,
2117 BootInformationStatusStartReserved
= 0x09,
2118 BootInformationStatusStartOemSpecific
= 0x80,
2119 BootInformationStatusStartProductSpecific
= 0xC0
2120 } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2123 /// System Boot Information (Type 32).
2125 /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the
2126 /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management
2127 /// application via this structure. When used in the PXE environment, for example,
2128 /// this code identifies the reason the PXE was initiated and can be used by boot-image
2129 /// software to further automate an enterprise's PXE sessions. For example, an enterprise
2130 /// could choose to automatically download a hardware-diagnostic image to a client whose
2131 /// reason code indicated either a firmware- or operating system-detected hardware failure.
2134 SMBIOS_STRUCTURE Hdr
;
2136 UINT8 BootStatus
; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
2137 } SMBIOS_TABLE_TYPE32
;
2140 /// 64-bit Memory Error Information (Type 33).
2142 /// This structure describes an error within a Physical Memory Array,
2143 /// when the error address is above 4G (0xFFFFFFFF).
2146 SMBIOS_STRUCTURE Hdr
;
2147 UINT8 ErrorType
; ///< The enumeration value from MEMORY_ERROR_TYPE.
2148 UINT8 ErrorGranularity
; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.
2149 UINT8 ErrorOperation
; ///< The enumeration value from MEMORY_ERROR_OPERATION.
2150 UINT32 VendorSyndrome
;
2151 UINT64 MemoryArrayErrorAddress
;
2152 UINT64 DeviceErrorAddress
;
2153 UINT32 ErrorResolution
;
2154 } SMBIOS_TABLE_TYPE33
;
2157 /// Management Device - Type.
2160 ManagementDeviceTypeOther
= 0x01,
2161 ManagementDeviceTypeUnknown
= 0x02,
2162 ManagementDeviceTypeLm75
= 0x03,
2163 ManagementDeviceTypeLm78
= 0x04,
2164 ManagementDeviceTypeLm79
= 0x05,
2165 ManagementDeviceTypeLm80
= 0x06,
2166 ManagementDeviceTypeLm81
= 0x07,
2167 ManagementDeviceTypeAdm9240
= 0x08,
2168 ManagementDeviceTypeDs1780
= 0x09,
2169 ManagementDeviceTypeMaxim1617
= 0x0A,
2170 ManagementDeviceTypeGl518Sm
= 0x0B,
2171 ManagementDeviceTypeW83781D
= 0x0C,
2172 ManagementDeviceTypeHt82H791
= 0x0D
2173 } MISC_MANAGEMENT_DEVICE_TYPE
;
2176 /// Management Device - Address Type.
2179 ManagementDeviceAddressTypeOther
= 0x01,
2180 ManagementDeviceAddressTypeUnknown
= 0x02,
2181 ManagementDeviceAddressTypeIOPort
= 0x03,
2182 ManagementDeviceAddressTypeMemory
= 0x04,
2183 ManagementDeviceAddressTypeSmbus
= 0x05
2184 } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2187 /// Management Device (Type 34).
2189 /// The information in this structure defines the attributes of a Management Device.
2190 /// A Management Device might control one or more fans or voltage, current, or temperature
2191 /// probes as defined by one or more Management Device Component structures.
2194 SMBIOS_STRUCTURE Hdr
;
2195 SMBIOS_TABLE_STRING Description
;
2196 UINT8 Type
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
2198 UINT8 AddressType
; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
2199 } SMBIOS_TABLE_TYPE34
;
2202 /// Management Device Component (Type 35)
2204 /// This structure associates a cooling device or environmental probe with structures
2205 /// that define the controlling hardware device and (optionally) the component's thresholds.
2208 SMBIOS_STRUCTURE Hdr
;
2209 SMBIOS_TABLE_STRING Description
;
2210 UINT16 ManagementDeviceHandle
;
2211 UINT16 ComponentHandle
;
2212 UINT16 ThresholdHandle
;
2213 } SMBIOS_TABLE_TYPE35
;
2216 /// Management Device Threshold Data (Type 36).
2218 /// The information in this structure defines threshold information for
2219 /// a component (probe or cooling-unit) contained within a Management Device.
2222 SMBIOS_STRUCTURE Hdr
;
2223 UINT16 LowerThresholdNonCritical
;
2224 UINT16 UpperThresholdNonCritical
;
2225 UINT16 LowerThresholdCritical
;
2226 UINT16 UpperThresholdCritical
;
2227 UINT16 LowerThresholdNonRecoverable
;
2228 UINT16 UpperThresholdNonRecoverable
;
2229 } SMBIOS_TABLE_TYPE36
;
2232 /// Memory Channel Entry.
2236 UINT16 DeviceHandle
;
2240 /// Memory Channel - Channel Type.
2243 MemoryChannelTypeOther
= 0x01,
2244 MemoryChannelTypeUnknown
= 0x02,
2245 MemoryChannelTypeRambus
= 0x03,
2246 MemoryChannelTypeSyncLink
= 0x04
2247 } MEMORY_CHANNEL_TYPE
;
2250 /// Memory Channel (Type 37)
2252 /// The information in this structure provides the correlation between a Memory Channel
2253 /// and its associated Memory Devices. Each device presents one or more loads to the channel.
2254 /// The sum of all device loads cannot exceed the channel's defined maximum.
2257 SMBIOS_STRUCTURE Hdr
;
2259 UINT8 MaximumChannelLoad
;
2260 UINT8 MemoryDeviceCount
;
2261 MEMORY_DEVICE MemoryDevice
[1];
2262 } SMBIOS_TABLE_TYPE37
;
2265 /// IPMI Device Information - BMC Interface Type
2268 IPMIDeviceInfoInterfaceTypeUnknown
= 0x00,
2269 IPMIDeviceInfoInterfaceTypeKCS
= 0x01, ///< The Keyboard Controller Style.
2270 IPMIDeviceInfoInterfaceTypeSMIC
= 0x02, ///< The Server Management Interface Chip.
2271 IPMIDeviceInfoInterfaceTypeBT
= 0x03, ///< The Block Transfer
2272 IPMIDeviceInfoInterfaceTypeReserved
= 0x04
2273 } BMC_INTERFACE_TYPE
;
2276 /// IPMI Device Information (Type 38).
2278 /// The information in this structure defines the attributes of an
2279 /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).
2281 /// The Type 42 structure can also be used to describe a physical management controller
2282 /// host interface and one or more protocols that share that interface. If IPMI is not
2283 /// shared with other protocols, either the Type 38 or Type 42 structures can be used.
2284 /// Providing Type 38 is recommended for backward compatibility.
2287 SMBIOS_STRUCTURE Hdr
;
2288 UINT8 InterfaceType
; ///< The enumeration value from BMC_INTERFACE_TYPE.
2289 UINT8 IPMISpecificationRevision
;
2290 UINT8 I2CSlaveAddress
;
2291 UINT8 NVStorageDeviceAddress
;
2293 UINT8 BaseAddressModifier_InterruptInfo
;
2294 UINT8 InterruptNumber
;
2295 } SMBIOS_TABLE_TYPE38
;
2298 /// System Power Supply - Power Supply Characteristics.
2301 UINT16 PowerSupplyHotReplaceable
:1;
2302 UINT16 PowerSupplyPresent
:1;
2303 UINT16 PowerSupplyUnplugged
:1;
2304 UINT16 InputVoltageRangeSwitch
:4;
2305 UINT16 PowerSupplyStatus
:3;
2306 UINT16 PowerSupplyType
:4;
2308 } SYS_POWER_SUPPLY_CHARACTERISTICS
;
2311 /// System Power Supply (Type 39).
2313 /// This structure identifies attributes of a system power supply. One instance
2314 /// of this record is present for each possible power supply in a system.
2317 SMBIOS_STRUCTURE Hdr
;
2318 UINT8 PowerUnitGroup
;
2319 SMBIOS_TABLE_STRING Location
;
2320 SMBIOS_TABLE_STRING DeviceName
;
2321 SMBIOS_TABLE_STRING Manufacturer
;
2322 SMBIOS_TABLE_STRING SerialNumber
;
2323 SMBIOS_TABLE_STRING AssetTagNumber
;
2324 SMBIOS_TABLE_STRING ModelPartNumber
;
2325 SMBIOS_TABLE_STRING RevisionLevel
;
2326 UINT16 MaxPowerCapacity
;
2327 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2328 UINT16 InputVoltageProbeHandle
;
2329 UINT16 CoolingDeviceHandle
;
2330 UINT16 InputCurrentProbeHandle
;
2331 } SMBIOS_TABLE_TYPE39
;
2334 /// Additional Information Entry Format.
2338 UINT16 ReferencedHandle
;
2339 UINT8 ReferencedOffset
;
2340 SMBIOS_TABLE_STRING EntryString
;
2342 }ADDITIONAL_INFORMATION_ENTRY
;
2345 /// Additional Information (Type 40).
2347 /// This structure is intended to provide additional information for handling unspecified
2348 /// enumerated values and interim field updates in another structure.
2351 SMBIOS_STRUCTURE Hdr
;
2352 UINT8 NumberOfAdditionalInformationEntries
;
2353 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
2354 } SMBIOS_TABLE_TYPE40
;
2357 /// Onboard Devices Extended Information - Onboard Device Types.
2360 OnBoardDeviceExtendedTypeOther
= 0x01,
2361 OnBoardDeviceExtendedTypeUnknown
= 0x02,
2362 OnBoardDeviceExtendedTypeVideo
= 0x03,
2363 OnBoardDeviceExtendedTypeScsiController
= 0x04,
2364 OnBoardDeviceExtendedTypeEthernet
= 0x05,
2365 OnBoardDeviceExtendedTypeTokenRing
= 0x06,
2366 OnBoardDeviceExtendedTypeSound
= 0x07,
2367 OnBoardDeviceExtendedTypePATAController
= 0x08,
2368 OnBoardDeviceExtendedTypeSATAController
= 0x09,
2369 OnBoardDeviceExtendedTypeSASController
= 0x0A
2370 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE
;
2373 /// Onboard Devices Extended Information (Type 41).
2375 /// The information in this structure defines the attributes of devices that
2376 /// are onboard (soldered onto) a system element, usually the baseboard.
2377 /// In general, an entry in this table implies that the BIOS has some level of
2378 /// control over the enabling of the associated device for use by the system.
2381 SMBIOS_STRUCTURE Hdr
;
2382 SMBIOS_TABLE_STRING ReferenceDesignation
;
2383 UINT8 DeviceType
; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE
2384 UINT8 DeviceTypeInstance
;
2385 UINT16 SegmentGroupNum
;
2388 } SMBIOS_TABLE_TYPE41
;
2391 /// Management Controller Host Interface - Interface Types.
2392 /// 00h - 3Fh: MCTP Host Interfaces
2395 MCHostInterfaceTypeNetworkHostInterface
= 0x40,
2396 MCHostInterfaceTypeOemDefined
= 0xF0
2397 } MC_HOST_INTERFACE_TYPE
;
2400 /// Management Controller Host Interface - Protocol Types.
2403 MCHostInterfaceProtocolTypeIPMI
= 0x02,
2404 MCHostInterfaceProtocolTypeMCTP
= 0x03,
2405 MCHostInterfaceProtocolTypeRedfishOverIP
= 0x04,
2406 MCHostInterfaceProtocolTypeOemDefined
= 0xF0
2407 } MC_HOST_INTERFACE_PROTOCOL_TYPE
;
2410 /// Management Controller Host Interface (Type 42).
2412 /// The information in this structure defines the attributes of a Management
2413 /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.
2415 /// Type 42 should be used for management controller host interfaces that use protocols
2416 /// other than IPMI or that use multiple protocols on a single host interface type.
2418 /// This structure should also be provided if IPMI is shared with other protocols
2419 /// over the same interface hardware. If IPMI is not shared with other protocols,
2420 /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is
2421 /// recommended for backward compatibility. The structures are not required to
2422 /// be mutually exclusive. Type 38 and Type 42 structures may be implemented
2423 /// simultaneously to provide backward compatibility with IPMI applications or drivers
2424 /// that do not yet recognize the Type 42 structure.
2427 SMBIOS_STRUCTURE Hdr
;
2428 UINT8 InterfaceType
; ///< The enumeration value from MC_HOST_INTERFACE_TYPE
2429 UINT8 MCHostInterfaceData
[1]; ///< This field has a minimum of four bytes
2430 } SMBIOS_TABLE_TYPE42
;
2433 /// TPM Device (Type 43).
2436 SMBIOS_STRUCTURE Hdr
;
2438 UINT8 MajorSpecVersion
;
2439 UINT8 MinorSpecVersion
;
2440 UINT32 FirmwareVersion1
;
2441 UINT32 FirmwareVersion2
;
2442 SMBIOS_TABLE_STRING Description
;
2443 UINT64 Characteristics
;
2445 } SMBIOS_TABLE_TYPE43
;
2448 /// Inactive (Type 126)
2451 SMBIOS_STRUCTURE Hdr
;
2452 } SMBIOS_TABLE_TYPE126
;
2455 /// End-of-Table (Type 127)
2458 SMBIOS_STRUCTURE Hdr
;
2459 } SMBIOS_TABLE_TYPE127
;
2462 /// Union of all the possible SMBIOS record types.
2465 SMBIOS_STRUCTURE
*Hdr
;
2466 SMBIOS_TABLE_TYPE0
*Type0
;
2467 SMBIOS_TABLE_TYPE1
*Type1
;
2468 SMBIOS_TABLE_TYPE2
*Type2
;
2469 SMBIOS_TABLE_TYPE3
*Type3
;
2470 SMBIOS_TABLE_TYPE4
*Type4
;
2471 SMBIOS_TABLE_TYPE5
*Type5
;
2472 SMBIOS_TABLE_TYPE6
*Type6
;
2473 SMBIOS_TABLE_TYPE7
*Type7
;
2474 SMBIOS_TABLE_TYPE8
*Type8
;
2475 SMBIOS_TABLE_TYPE9
*Type9
;
2476 SMBIOS_TABLE_TYPE10
*Type10
;
2477 SMBIOS_TABLE_TYPE11
*Type11
;
2478 SMBIOS_TABLE_TYPE12
*Type12
;
2479 SMBIOS_TABLE_TYPE13
*Type13
;
2480 SMBIOS_TABLE_TYPE14
*Type14
;
2481 SMBIOS_TABLE_TYPE15
*Type15
;
2482 SMBIOS_TABLE_TYPE16
*Type16
;
2483 SMBIOS_TABLE_TYPE17
*Type17
;
2484 SMBIOS_TABLE_TYPE18
*Type18
;
2485 SMBIOS_TABLE_TYPE19
*Type19
;
2486 SMBIOS_TABLE_TYPE20
*Type20
;
2487 SMBIOS_TABLE_TYPE21
*Type21
;
2488 SMBIOS_TABLE_TYPE22
*Type22
;
2489 SMBIOS_TABLE_TYPE23
*Type23
;
2490 SMBIOS_TABLE_TYPE24
*Type24
;
2491 SMBIOS_TABLE_TYPE25
*Type25
;
2492 SMBIOS_TABLE_TYPE26
*Type26
;
2493 SMBIOS_TABLE_TYPE27
*Type27
;
2494 SMBIOS_TABLE_TYPE28
*Type28
;
2495 SMBIOS_TABLE_TYPE29
*Type29
;
2496 SMBIOS_TABLE_TYPE30
*Type30
;
2497 SMBIOS_TABLE_TYPE31
*Type31
;
2498 SMBIOS_TABLE_TYPE32
*Type32
;
2499 SMBIOS_TABLE_TYPE33
*Type33
;
2500 SMBIOS_TABLE_TYPE34
*Type34
;
2501 SMBIOS_TABLE_TYPE35
*Type35
;
2502 SMBIOS_TABLE_TYPE36
*Type36
;
2503 SMBIOS_TABLE_TYPE37
*Type37
;
2504 SMBIOS_TABLE_TYPE38
*Type38
;
2505 SMBIOS_TABLE_TYPE39
*Type39
;
2506 SMBIOS_TABLE_TYPE40
*Type40
;
2507 SMBIOS_TABLE_TYPE41
*Type41
;
2508 SMBIOS_TABLE_TYPE42
*Type42
;
2509 SMBIOS_TABLE_TYPE43
*Type43
;
2510 SMBIOS_TABLE_TYPE126
*Type126
;
2511 SMBIOS_TABLE_TYPE127
*Type127
;
2513 } SMBIOS_STRUCTURE_POINTER
;