| /** @file | |
| Industry Standard Definitions of SMBIOS Table Specification v3.7.0. | |
| Copyright (c) 2006 - 2023, Intel Corporation. All rights reserved.<BR> | |
| (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR> | |
| (C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR> | |
| Copyright (c) 2022, AMD Incorporated. All rights reserved.<BR> | |
| Copyright (c) 1985 - 2022, American Megatrends International LLC.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef __SMBIOS_STANDARD_H__ | |
| #define __SMBIOS_STANDARD_H__ | |
| /// | |
| /// Reference SMBIOS 2.6, chapter 3.1.2. | |
| /// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for | |
| /// use by this specification. | |
| /// | |
| #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00 | |
| /// | |
| /// Reference SMBIOS 2.7, chapter 6.1.2. | |
| /// The UEFI Platform Initialization Specification reserves handle number FFFEh for its | |
| /// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically." | |
| /// This number is not used for any other purpose by the SMBIOS specification. | |
| /// | |
| #define SMBIOS_HANDLE_PI_RESERVED 0xFFFE | |
| /// | |
| /// Reference SMBIOS 2.6, chapter 3.1.3. | |
| /// Each text string is limited to 64 significant characters due to system MIF limitations. | |
| /// Reference SMBIOS 2.7, chapter 6.1.3. | |
| /// It will have no limit on the length of each individual text string. | |
| /// | |
| #define SMBIOS_STRING_MAX_LENGTH 64 | |
| // | |
| // The length of the entire structure table (including all strings) must be reported | |
| // in the Structure Table Length field of the SMBIOS Structure Table Entry Point, | |
| // which is a WORD field limited to 65,535 bytes. | |
| // | |
| #define SMBIOS_TABLE_MAX_LENGTH 0xFFFF | |
| // | |
| // For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes. | |
| // | |
| #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF | |
| /// | |
| /// Reference SMBIOS 3.4, chapter 5.2.1 SMBIOS 2.1 (32-bit) Entry Point | |
| /// Table 1 - SMBIOS 2.1 (32-bit) Entry Point structure, offset 00h | |
| /// _SM_, specified as four ASCII characters (5F 53 4D 5F). | |
| ///@{ | |
| #define SMBIOS_ANCHOR_STRING "_SM_" | |
| #define SMBIOS_ANCHOR_STRING_LENGTH 4 | |
| ///@} | |
| /// | |
| /// Reference SMBIOS 3.4, chapter 5.2.2 SMBIOS 3.0 (64-bit) Entry Point | |
| /// Table 2 - SMBIOS 3.0 (64-bit) Entry Point structure, offset 00h | |
| /// _SM3_, specified as five ASCII characters (5F 53 4D 33 5F). | |
| ///@{ | |
| #define SMBIOS_3_0_ANCHOR_STRING "_SM3_" | |
| #define SMBIOS_3_0_ANCHOR_STRING_LENGTH 5 | |
| ///@} | |
| // | |
| // SMBIOS type macros which is according to SMBIOS 3.3.0 specification. | |
| // | |
| #define SMBIOS_TYPE_BIOS_INFORMATION 0 | |
| #define SMBIOS_TYPE_SYSTEM_INFORMATION 1 | |
| #define SMBIOS_TYPE_BASEBOARD_INFORMATION 2 | |
| #define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3 | |
| #define SMBIOS_TYPE_PROCESSOR_INFORMATION 4 | |
| #define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5 | |
| #define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6 | |
| #define SMBIOS_TYPE_CACHE_INFORMATION 7 | |
| #define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8 | |
| #define SMBIOS_TYPE_SYSTEM_SLOTS 9 | |
| #define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10 | |
| #define SMBIOS_TYPE_OEM_STRINGS 11 | |
| #define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12 | |
| #define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13 | |
| #define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14 | |
| #define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15 | |
| #define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16 | |
| #define SMBIOS_TYPE_MEMORY_DEVICE 17 | |
| #define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18 | |
| #define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19 | |
| #define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20 | |
| #define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21 | |
| #define SMBIOS_TYPE_PORTABLE_BATTERY 22 | |
| #define SMBIOS_TYPE_SYSTEM_RESET 23 | |
| #define SMBIOS_TYPE_HARDWARE_SECURITY 24 | |
| #define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25 | |
| #define SMBIOS_TYPE_VOLTAGE_PROBE 26 | |
| #define SMBIOS_TYPE_COOLING_DEVICE 27 | |
| #define SMBIOS_TYPE_TEMPERATURE_PROBE 28 | |
| #define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29 | |
| #define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30 | |
| #define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31 | |
| #define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32 | |
| #define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33 | |
| #define SMBIOS_TYPE_MANAGEMENT_DEVICE 34 | |
| #define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35 | |
| #define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36 | |
| #define SMBIOS_TYPE_MEMORY_CHANNEL 37 | |
| #define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38 | |
| #define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39 | |
| #define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40 | |
| #define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41 | |
| #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42 | |
| #define SMBIOS_TYPE_TPM_DEVICE 43 | |
| #define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44 | |
| #define SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION 45 | |
| #define SMBIOS_TYPE_STRING_PROPERTY_INFORMATION 46 | |
| /// | |
| /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43. | |
| /// Upper-level software that interprets the SMBIOS structure-table should bypass an | |
| /// Inactive structure just like a structure type that the software does not recognize. | |
| /// | |
| #define SMBIOS_TYPE_INACTIVE 0x007E | |
| /// | |
| /// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44. | |
| /// The end-of-table indicator is used in the last physical structure in a table | |
| /// | |
| #define SMBIOS_TYPE_END_OF_TABLE 0x007F | |
| #define SMBIOS_OEM_BEGIN 128 | |
| #define SMBIOS_OEM_END 255 | |
| /// | |
| /// Types 0 through 127 (7Fh) are reserved for and defined by this | |
| /// specification. Types 128 through 256 (80h to FFh) are available for system- and OEM-specific information. | |
| /// | |
| typedef UINT8 SMBIOS_TYPE; | |
| /// | |
| /// Specifies the structure's handle, a unique 16-bit number in the range 0 to 0FFFEh (for version | |
| /// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used with the Get SMBIOS | |
| /// Structure function to retrieve a specific structure; the handle numbers are not required to be | |
| /// contiguous. For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for | |
| /// use by this specification. | |
| /// If the system configuration changes, a previously assigned handle might no longer exist. | |
| /// However once a handle has been assigned by the BIOS, the BIOS cannot re-assign that handle | |
| /// number to another structure. | |
| /// | |
| typedef UINT16 SMBIOS_HANDLE; | |
| /// | |
| /// Smbios Table Entry Point Structure. | |
| /// | |
| #pragma pack(1) | |
| typedef struct { | |
| UINT8 AnchorString[SMBIOS_ANCHOR_STRING_LENGTH]; | |
| UINT8 EntryPointStructureChecksum; | |
| UINT8 EntryPointLength; | |
| UINT8 MajorVersion; | |
| UINT8 MinorVersion; | |
| UINT16 MaxStructureSize; | |
| UINT8 EntryPointRevision; | |
| UINT8 FormattedArea[5]; | |
| UINT8 IntermediateAnchorString[5]; | |
| UINT8 IntermediateChecksum; | |
| UINT16 TableLength; | |
| UINT32 TableAddress; | |
| UINT16 NumberOfSmbiosStructures; | |
| UINT8 SmbiosBcdRevision; | |
| } SMBIOS_TABLE_ENTRY_POINT; | |
| typedef struct { | |
| UINT8 AnchorString[SMBIOS_3_0_ANCHOR_STRING_LENGTH]; | |
| UINT8 EntryPointStructureChecksum; | |
| UINT8 EntryPointLength; | |
| UINT8 MajorVersion; | |
| UINT8 MinorVersion; | |
| UINT8 DocRev; | |
| UINT8 EntryPointRevision; | |
| UINT8 Reserved; | |
| UINT32 TableMaximumSize; | |
| UINT64 TableAddress; | |
| } SMBIOS_TABLE_3_0_ENTRY_POINT; | |
| /// | |
| /// The Smbios structure header. | |
| /// | |
| typedef struct { | |
| SMBIOS_TYPE Type; | |
| UINT8 Length; | |
| SMBIOS_HANDLE Handle; | |
| } SMBIOS_STRUCTURE; | |
| /// | |
| /// Text strings associated with a given SMBIOS structure are returned in the dmiStrucBuffer, appended directly after | |
| /// the formatted portion of the structure. This method of returning string information eliminates the need for | |
| /// application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null | |
| /// (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of | |
| /// a SMBIOS structure references a string, it does so by specifying a non-zero string number within the structure's | |
| /// string-set. For example, if a string field contains 02h, it references the second string following the formatted portion | |
| /// of the SMBIOS structure. If a string field references no string, a null (0) is placed in that string field. If the | |
| /// formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string | |
| /// references), the formatted section of the structure is followed by two null (00h) BYTES. | |
| /// | |
| typedef UINT8 SMBIOS_TABLE_STRING; | |
| /// | |
| /// BIOS Characteristics | |
| /// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc. | |
| /// | |
| typedef struct { | |
| UINT32 Reserved : 2; ///< Bits 0-1. | |
| UINT32 Unknown : 1; | |
| UINT32 BiosCharacteristicsNotSupported : 1; | |
| UINT32 IsaIsSupported : 1; | |
| UINT32 McaIsSupported : 1; | |
| UINT32 EisaIsSupported : 1; | |
| UINT32 PciIsSupported : 1; | |
| UINT32 PcmciaIsSupported : 1; | |
| UINT32 PlugAndPlayIsSupported : 1; | |
| UINT32 ApmIsSupported : 1; | |
| UINT32 BiosIsUpgradable : 1; | |
| UINT32 BiosShadowingAllowed : 1; | |
| UINT32 VlVesaIsSupported : 1; | |
| UINT32 EscdSupportIsAvailable : 1; | |
| UINT32 BootFromCdIsSupported : 1; | |
| UINT32 SelectableBootIsSupported : 1; | |
| UINT32 RomBiosIsSocketed : 1; | |
| UINT32 BootFromPcmciaIsSupported : 1; | |
| UINT32 EDDSpecificationIsSupported : 1; | |
| UINT32 JapaneseNecFloppyIsSupported : 1; | |
| UINT32 JapaneseToshibaFloppyIsSupported : 1; | |
| UINT32 Floppy525_360IsSupported : 1; | |
| UINT32 Floppy525_12IsSupported : 1; | |
| UINT32 Floppy35_720IsSupported : 1; | |
| UINT32 Floppy35_288IsSupported : 1; | |
| UINT32 PrintScreenIsSupported : 1; | |
| UINT32 Keyboard8042IsSupported : 1; | |
| UINT32 SerialIsSupported : 1; | |
| UINT32 PrinterIsSupported : 1; | |
| UINT32 CgaMonoIsSupported : 1; | |
| UINT32 NecPc98 : 1; | |
| UINT32 ReservedForVendor : 32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor | |
| ///< and bits 48-63 reserved for System Vendor. | |
| } MISC_BIOS_CHARACTERISTICS; | |
| /// | |
| /// BIOS Characteristics Extension Byte 1. | |
| /// This information, available for SMBIOS version 2.1 and later, appears at offset 12h | |
| /// within the BIOS Information structure. | |
| /// | |
| typedef struct { | |
| UINT8 AcpiIsSupported : 1; | |
| UINT8 UsbLegacyIsSupported : 1; | |
| UINT8 AgpIsSupported : 1; | |
| UINT8 I2OBootIsSupported : 1; | |
| UINT8 Ls120BootIsSupported : 1; | |
| UINT8 AtapiZipDriveBootIsSupported : 1; | |
| UINT8 Boot1394IsSupported : 1; | |
| UINT8 SmartBatteryIsSupported : 1; | |
| } MBCE_BIOS_RESERVED; | |
| /// | |
| /// BIOS Characteristics Extension Byte 2. | |
| /// This information, available for SMBIOS version 2.3 and later, appears at offset 13h | |
| /// within the BIOS Information structure. | |
| /// | |
| typedef struct { | |
| UINT8 BiosBootSpecIsSupported : 1; | |
| UINT8 FunctionKeyNetworkBootIsSupported : 1; | |
| UINT8 TargetContentDistributionEnabled : 1; | |
| UINT8 UefiSpecificationSupported : 1; | |
| UINT8 VirtualMachineSupported : 1; | |
| UINT8 ManufacturingModeSupported : 1; | |
| UINT8 ManufacturingModeEnabled : 1; | |
| UINT8 ExtensionByte2Reserved : 1; | |
| } MBCE_SYSTEM_RESERVED; | |
| /// | |
| /// BIOS Characteristics Extension Bytes. | |
| /// | |
| typedef struct { | |
| MBCE_BIOS_RESERVED BiosReserved; | |
| MBCE_SYSTEM_RESERVED SystemReserved; | |
| } MISC_BIOS_CHARACTERISTICS_EXTENSION; | |
| /// | |
| /// Extended BIOS ROM size. | |
| /// | |
| typedef struct { | |
| UINT16 Size : 14; | |
| UINT16 Unit : 2; | |
| } EXTENDED_BIOS_ROM_SIZE; | |
| /// | |
| /// BIOS Information (Type 0). | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Vendor; | |
| SMBIOS_TABLE_STRING BiosVersion; | |
| UINT16 BiosSegment; | |
| SMBIOS_TABLE_STRING BiosReleaseDate; | |
| UINT8 BiosSize; | |
| MISC_BIOS_CHARACTERISTICS BiosCharacteristics; | |
| UINT8 BIOSCharacteristicsExtensionBytes[2]; | |
| UINT8 SystemBiosMajorRelease; | |
| UINT8 SystemBiosMinorRelease; | |
| UINT8 EmbeddedControllerFirmwareMajorRelease; | |
| UINT8 EmbeddedControllerFirmwareMinorRelease; | |
| // | |
| // Add for smbios 3.1.0 | |
| // | |
| EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize; | |
| } SMBIOS_TABLE_TYPE0; | |
| /// | |
| /// System Wake-up Type. | |
| /// | |
| typedef enum { | |
| SystemWakeupTypeReserved = 0x00, | |
| SystemWakeupTypeOther = 0x01, | |
| SystemWakeupTypeUnknown = 0x02, | |
| SystemWakeupTypeApmTimer = 0x03, | |
| SystemWakeupTypeModemRing = 0x04, | |
| SystemWakeupTypeLanRemote = 0x05, | |
| SystemWakeupTypePowerSwitch = 0x06, | |
| SystemWakeupTypePciPme = 0x07, | |
| SystemWakeupTypeAcPowerRestored = 0x08 | |
| } MISC_SYSTEM_WAKEUP_TYPE; | |
| /// | |
| /// System Information (Type 1). | |
| /// | |
| /// The information in this structure defines attributes of the overall system and is | |
| /// intended to be associated with the Component ID group of the system's MIF. | |
| /// An SMBIOS implementation is associated with a single system instance and contains | |
| /// one and only one System Information (Type 1) structure. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING ProductName; | |
| SMBIOS_TABLE_STRING Version; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| GUID Uuid; | |
| UINT8 WakeUpType; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE. | |
| SMBIOS_TABLE_STRING SKUNumber; | |
| SMBIOS_TABLE_STRING Family; | |
| } SMBIOS_TABLE_TYPE1; | |
| /// | |
| /// Base Board - Feature Flags. | |
| /// | |
| typedef struct { | |
| UINT8 Motherboard : 1; | |
| UINT8 RequiresDaughterCard : 1; | |
| UINT8 Removable : 1; | |
| UINT8 Replaceable : 1; | |
| UINT8 HotSwappable : 1; | |
| UINT8 Reserved : 3; | |
| } BASE_BOARD_FEATURE_FLAGS; | |
| /// | |
| /// Base Board - Board Type. | |
| /// | |
| typedef enum { | |
| BaseBoardTypeUnknown = 0x1, | |
| BaseBoardTypeOther = 0x2, | |
| BaseBoardTypeServerBlade = 0x3, | |
| BaseBoardTypeConnectivitySwitch = 0x4, | |
| BaseBoardTypeSystemManagementModule = 0x5, | |
| BaseBoardTypeProcessorModule = 0x6, | |
| BaseBoardTypeIOModule = 0x7, | |
| BaseBoardTypeMemoryModule = 0x8, | |
| BaseBoardTypeDaughterBoard = 0x9, | |
| BaseBoardTypeMotherBoard = 0xA, | |
| BaseBoardTypeProcessorMemoryModule = 0xB, | |
| BaseBoardTypeProcessorIOModule = 0xC, | |
| BaseBoardTypeInterconnectBoard = 0xD | |
| } BASE_BOARD_TYPE; | |
| /// | |
| /// Base Board (or Module) Information (Type 2). | |
| /// | |
| /// The information in this structure defines attributes of a system baseboard - | |
| /// for example a motherboard, planar, or server blade or other standard system module. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING ProductName; | |
| SMBIOS_TABLE_STRING Version; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING AssetTag; | |
| BASE_BOARD_FEATURE_FLAGS FeatureFlag; | |
| SMBIOS_TABLE_STRING LocationInChassis; | |
| UINT16 ChassisHandle; | |
| UINT8 BoardType; ///< The enumeration value from BASE_BOARD_TYPE. | |
| UINT8 NumberOfContainedObjectHandles; | |
| UINT16 ContainedObjectHandles[1]; | |
| } SMBIOS_TABLE_TYPE2; | |
| /// | |
| /// System Enclosure or Chassis Types | |
| /// | |
| typedef enum { | |
| MiscChassisTypeOther = 0x01, | |
| MiscChassisTypeUnknown = 0x02, | |
| MiscChassisTypeDeskTop = 0x03, | |
| MiscChassisTypeLowProfileDesktop = 0x04, | |
| MiscChassisTypePizzaBox = 0x05, | |
| MiscChassisTypeMiniTower = 0x06, | |
| MiscChassisTypeTower = 0x07, | |
| MiscChassisTypePortable = 0x08, | |
| MiscChassisTypeLapTop = 0x09, | |
| MiscChassisTypeNotebook = 0x0A, | |
| MiscChassisTypeHandHeld = 0x0B, | |
| MiscChassisTypeDockingStation = 0x0C, | |
| MiscChassisTypeAllInOne = 0x0D, | |
| MiscChassisTypeSubNotebook = 0x0E, | |
| MiscChassisTypeSpaceSaving = 0x0F, | |
| MiscChassisTypeLunchBox = 0x10, | |
| MiscChassisTypeMainServerChassis = 0x11, | |
| MiscChassisTypeExpansionChassis = 0x12, | |
| MiscChassisTypeSubChassis = 0x13, | |
| MiscChassisTypeBusExpansionChassis = 0x14, | |
| MiscChassisTypePeripheralChassis = 0x15, | |
| MiscChassisTypeRaidChassis = 0x16, | |
| MiscChassisTypeRackMountChassis = 0x17, | |
| MiscChassisTypeSealedCasePc = 0x18, | |
| MiscChassisMultiSystemChassis = 0x19, | |
| MiscChassisCompactPCI = 0x1A, | |
| MiscChassisAdvancedTCA = 0x1B, | |
| MiscChassisBlade = 0x1C, | |
| MiscChassisBladeEnclosure = 0x1D, | |
| MiscChassisTablet = 0x1E, | |
| MiscChassisConvertible = 0x1F, | |
| MiscChassisDetachable = 0x20, | |
| MiscChassisIoTGateway = 0x21, | |
| MiscChassisEmbeddedPc = 0x22, | |
| MiscChassisMiniPc = 0x23, | |
| MiscChassisStickPc = 0x24 | |
| } MISC_CHASSIS_TYPE; | |
| /// | |
| /// System Enclosure or Chassis States . | |
| /// | |
| typedef enum { | |
| ChassisStateOther = 0x01, | |
| ChassisStateUnknown = 0x02, | |
| ChassisStateSafe = 0x03, | |
| ChassisStateWarning = 0x04, | |
| ChassisStateCritical = 0x05, | |
| ChassisStateNonRecoverable = 0x06 | |
| } MISC_CHASSIS_STATE; | |
| /// | |
| /// System Enclosure or Chassis Security Status. | |
| /// | |
| typedef enum { | |
| ChassisSecurityStatusOther = 0x01, | |
| ChassisSecurityStatusUnknown = 0x02, | |
| ChassisSecurityStatusNone = 0x03, | |
| ChassisSecurityStatusExternalInterfaceLockedOut = 0x04, | |
| ChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05 | |
| } MISC_CHASSIS_SECURITY_STATE; | |
| /// | |
| /// Contained Element record | |
| /// | |
| typedef struct { | |
| UINT8 ContainedElementType; | |
| UINT8 ContainedElementMinimum; | |
| UINT8 ContainedElementMaximum; | |
| } CONTAINED_ELEMENT; | |
| /// | |
| /// System Enclosure or Chassis (Type 3). | |
| /// | |
| /// The information in this structure defines attributes of the system's mechanical enclosure(s). | |
| /// For example, if a system included a separate enclosure for its peripheral devices, | |
| /// two structures would be returned: one for the main, system enclosure and the second for | |
| /// the peripheral device enclosure. The additions to this structure in v2.1 of this specification | |
| /// support the population of the CIM_Chassis class. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| UINT8 Type; | |
| SMBIOS_TABLE_STRING Version; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING AssetTag; | |
| UINT8 BootupState; ///< The enumeration value from MISC_CHASSIS_STATE. | |
| UINT8 PowerSupplyState; ///< The enumeration value from MISC_CHASSIS_STATE. | |
| UINT8 ThermalState; ///< The enumeration value from MISC_CHASSIS_STATE. | |
| UINT8 SecurityStatus; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE. | |
| UINT8 OemDefined[4]; | |
| UINT8 Height; | |
| UINT8 NumberofPowerCords; | |
| UINT8 ContainedElementCount; | |
| UINT8 ContainedElementRecordLength; | |
| // | |
| // Can have 0 to (ContainedElementCount * ContainedElementRecordLength) contained elements | |
| // | |
| CONTAINED_ELEMENT ContainedElements[1]; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| // Since ContainedElements has a variable number of entries, must not define SKUNumber in | |
| // the structure. Need to reference it by starting at offset 0x15 and adding | |
| // (ContainedElementCount * ContainedElementRecordLength) bytes. | |
| // | |
| // SMBIOS_TABLE_STRING SKUNumber; | |
| } SMBIOS_TABLE_TYPE3; | |
| /// | |
| /// Processor Information - Processor Type. | |
| /// | |
| typedef enum { | |
| ProcessorOther = 0x01, | |
| ProcessorUnknown = 0x02, | |
| CentralProcessor = 0x03, | |
| MathProcessor = 0x04, | |
| DspProcessor = 0x05, | |
| VideoProcessor = 0x06 | |
| } PROCESSOR_TYPE_DATA; | |
| /// | |
| /// Processor Information - Processor Family. | |
| /// | |
| typedef enum { | |
| ProcessorFamilyOther = 0x01, | |
| ProcessorFamilyUnknown = 0x02, | |
| ProcessorFamily8086 = 0x03, | |
| ProcessorFamily80286 = 0x04, | |
| ProcessorFamilyIntel386 = 0x05, | |
| ProcessorFamilyIntel486 = 0x06, | |
| ProcessorFamily8087 = 0x07, | |
| ProcessorFamily80287 = 0x08, | |
| ProcessorFamily80387 = 0x09, | |
| ProcessorFamily80487 = 0x0A, | |
| ProcessorFamilyPentium = 0x0B, | |
| ProcessorFamilyPentiumPro = 0x0C, | |
| ProcessorFamilyPentiumII = 0x0D, | |
| ProcessorFamilyPentiumMMX = 0x0E, | |
| ProcessorFamilyCeleron = 0x0F, | |
| ProcessorFamilyPentiumIIXeon = 0x10, | |
| ProcessorFamilyPentiumIII = 0x11, | |
| ProcessorFamilyM1 = 0x12, | |
| ProcessorFamilyM2 = 0x13, | |
| ProcessorFamilyIntelCeleronM = 0x14, | |
| ProcessorFamilyIntelPentium4Ht = 0x15, | |
| ProcessorFamilyIntel = 0x16, | |
| ProcessorFamilyAmdDuron = 0x18, | |
| ProcessorFamilyK5 = 0x19, | |
| ProcessorFamilyK6 = 0x1A, | |
| ProcessorFamilyK6_2 = 0x1B, | |
| ProcessorFamilyK6_3 = 0x1C, | |
| ProcessorFamilyAmdAthlon = 0x1D, | |
| ProcessorFamilyAmd29000 = 0x1E, | |
| ProcessorFamilyK6_2Plus = 0x1F, | |
| ProcessorFamilyPowerPC = 0x20, | |
| ProcessorFamilyPowerPC601 = 0x21, | |
| ProcessorFamilyPowerPC603 = 0x22, | |
| ProcessorFamilyPowerPC603Plus = 0x23, | |
| ProcessorFamilyPowerPC604 = 0x24, | |
| ProcessorFamilyPowerPC620 = 0x25, | |
| ProcessorFamilyPowerPCx704 = 0x26, | |
| ProcessorFamilyPowerPC750 = 0x27, | |
| ProcessorFamilyIntelCoreDuo = 0x28, | |
| ProcessorFamilyIntelCoreDuoMobile = 0x29, | |
| ProcessorFamilyIntelCoreSoloMobile = 0x2A, | |
| ProcessorFamilyIntelAtom = 0x2B, | |
| ProcessorFamilyIntelCoreM = 0x2C, | |
| ProcessorFamilyIntelCorem3 = 0x2D, | |
| ProcessorFamilyIntelCorem5 = 0x2E, | |
| ProcessorFamilyIntelCorem7 = 0x2F, | |
| ProcessorFamilyAlpha = 0x30, | |
| ProcessorFamilyAlpha21064 = 0x31, | |
| ProcessorFamilyAlpha21066 = 0x32, | |
| ProcessorFamilyAlpha21164 = 0x33, | |
| ProcessorFamilyAlpha21164PC = 0x34, | |
| ProcessorFamilyAlpha21164a = 0x35, | |
| ProcessorFamilyAlpha21264 = 0x36, | |
| ProcessorFamilyAlpha21364 = 0x37, | |
| ProcessorFamilyAmdTurionIIUltraDualCoreMobileM = 0x38, | |
| ProcessorFamilyAmdTurionIIDualCoreMobileM = 0x39, | |
| ProcessorFamilyAmdAthlonIIDualCoreM = 0x3A, | |
| ProcessorFamilyAmdOpteron6100Series = 0x3B, | |
| ProcessorFamilyAmdOpteron4100Series = 0x3C, | |
| ProcessorFamilyAmdOpteron6200Series = 0x3D, | |
| ProcessorFamilyAmdOpteron4200Series = 0x3E, | |
| ProcessorFamilyAmdFxSeries = 0x3F, | |
| ProcessorFamilyMips = 0x40, | |
| ProcessorFamilyMIPSR4000 = 0x41, | |
| ProcessorFamilyMIPSR4200 = 0x42, | |
| ProcessorFamilyMIPSR4400 = 0x43, | |
| ProcessorFamilyMIPSR4600 = 0x44, | |
| ProcessorFamilyMIPSR10000 = 0x45, | |
| ProcessorFamilyAmdCSeries = 0x46, | |
| ProcessorFamilyAmdESeries = 0x47, | |
| ProcessorFamilyAmdASeries = 0x48, ///< SMBIOS spec 2.8.0 updated the name | |
| ProcessorFamilyAmdGSeries = 0x49, | |
| ProcessorFamilyAmdZSeries = 0x4A, | |
| ProcessorFamilyAmdRSeries = 0x4B, | |
| ProcessorFamilyAmdOpteron4300 = 0x4C, | |
| ProcessorFamilyAmdOpteron6300 = 0x4D, | |
| ProcessorFamilyAmdOpteron3300 = 0x4E, | |
| ProcessorFamilyAmdFireProSeries = 0x4F, | |
| ProcessorFamilySparc = 0x50, | |
| ProcessorFamilySuperSparc = 0x51, | |
| ProcessorFamilymicroSparcII = 0x52, | |
| ProcessorFamilymicroSparcIIep = 0x53, | |
| ProcessorFamilyUltraSparc = 0x54, | |
| ProcessorFamilyUltraSparcII = 0x55, | |
| ProcessorFamilyUltraSparcIii = 0x56, | |
| ProcessorFamilyUltraSparcIII = 0x57, | |
| ProcessorFamilyUltraSparcIIIi = 0x58, | |
| ProcessorFamily68040 = 0x60, | |
| ProcessorFamily68xxx = 0x61, | |
| ProcessorFamily68000 = 0x62, | |
| ProcessorFamily68010 = 0x63, | |
| ProcessorFamily68020 = 0x64, | |
| ProcessorFamily68030 = 0x65, | |
| ProcessorFamilyAmdAthlonX4QuadCore = 0x66, | |
| ProcessorFamilyAmdOpteronX1000Series = 0x67, | |
| ProcessorFamilyAmdOpteronX2000Series = 0x68, | |
| ProcessorFamilyAmdOpteronASeries = 0x69, | |
| ProcessorFamilyAmdOpteronX3000Series = 0x6A, | |
| ProcessorFamilyAmdZen = 0x6B, | |
| ProcessorFamilyHobbit = 0x70, | |
| ProcessorFamilyCrusoeTM5000 = 0x78, | |
| ProcessorFamilyCrusoeTM3000 = 0x79, | |
| ProcessorFamilyEfficeonTM8000 = 0x7A, | |
| ProcessorFamilyWeitek = 0x80, | |
| ProcessorFamilyItanium = 0x82, | |
| ProcessorFamilyAmdAthlon64 = 0x83, | |
| ProcessorFamilyAmdOpteron = 0x84, | |
| ProcessorFamilyAmdSempron = 0x85, | |
| ProcessorFamilyAmdTurion64Mobile = 0x86, | |
| ProcessorFamilyDualCoreAmdOpteron = 0x87, | |
| ProcessorFamilyAmdAthlon64X2DualCore = 0x88, | |
| ProcessorFamilyAmdTurion64X2Mobile = 0x89, | |
| ProcessorFamilyQuadCoreAmdOpteron = 0x8A, | |
| ProcessorFamilyThirdGenerationAmdOpteron = 0x8B, | |
| ProcessorFamilyAmdPhenomFxQuadCore = 0x8C, | |
| ProcessorFamilyAmdPhenomX4QuadCore = 0x8D, | |
| ProcessorFamilyAmdPhenomX2DualCore = 0x8E, | |
| ProcessorFamilyAmdAthlonX2DualCore = 0x8F, | |
| ProcessorFamilyPARISC = 0x90, | |
| ProcessorFamilyPaRisc8500 = 0x91, | |
| ProcessorFamilyPaRisc8000 = 0x92, | |
| ProcessorFamilyPaRisc7300LC = 0x93, | |
| ProcessorFamilyPaRisc7200 = 0x94, | |
| ProcessorFamilyPaRisc7100LC = 0x95, | |
| ProcessorFamilyPaRisc7100 = 0x96, | |
| ProcessorFamilyV30 = 0xA0, | |
| ProcessorFamilyQuadCoreIntelXeon3200Series = 0xA1, | |
| ProcessorFamilyDualCoreIntelXeon3000Series = 0xA2, | |
| ProcessorFamilyQuadCoreIntelXeon5300Series = 0xA3, | |
| ProcessorFamilyDualCoreIntelXeon5100Series = 0xA4, | |
| ProcessorFamilyDualCoreIntelXeon5000Series = 0xA5, | |
| ProcessorFamilyDualCoreIntelXeonLV = 0xA6, | |
| ProcessorFamilyDualCoreIntelXeonULV = 0xA7, | |
| ProcessorFamilyDualCoreIntelXeon7100Series = 0xA8, | |
| ProcessorFamilyQuadCoreIntelXeon5400Series = 0xA9, | |
| ProcessorFamilyQuadCoreIntelXeon = 0xAA, | |
| ProcessorFamilyDualCoreIntelXeon5200Series = 0xAB, | |
| ProcessorFamilyDualCoreIntelXeon7200Series = 0xAC, | |
| ProcessorFamilyQuadCoreIntelXeon7300Series = 0xAD, | |
| ProcessorFamilyQuadCoreIntelXeon7400Series = 0xAE, | |
| ProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF, | |
| ProcessorFamilyPentiumIIIXeon = 0xB0, | |
| ProcessorFamilyPentiumIIISpeedStep = 0xB1, | |
| ProcessorFamilyPentium4 = 0xB2, | |
| ProcessorFamilyIntelXeon = 0xB3, | |
| ProcessorFamilyAS400 = 0xB4, | |
| ProcessorFamilyIntelXeonMP = 0xB5, | |
| ProcessorFamilyAMDAthlonXP = 0xB6, | |
| ProcessorFamilyAMDAthlonMP = 0xB7, | |
| ProcessorFamilyIntelItanium2 = 0xB8, | |
| ProcessorFamilyIntelPentiumM = 0xB9, | |
| ProcessorFamilyIntelCeleronD = 0xBA, | |
| ProcessorFamilyIntelPentiumD = 0xBB, | |
| ProcessorFamilyIntelPentiumEx = 0xBC, | |
| ProcessorFamilyIntelCoreSolo = 0xBD, ///< SMBIOS spec 2.6 updated this value | |
| ProcessorFamilyReserved = 0xBE, | |
| ProcessorFamilyIntelCore2 = 0xBF, | |
| ProcessorFamilyIntelCore2Solo = 0xC0, | |
| ProcessorFamilyIntelCore2Extreme = 0xC1, | |
| ProcessorFamilyIntelCore2Quad = 0xC2, | |
| ProcessorFamilyIntelCore2ExtremeMobile = 0xC3, | |
| ProcessorFamilyIntelCore2DuoMobile = 0xC4, | |
| ProcessorFamilyIntelCore2SoloMobile = 0xC5, | |
| ProcessorFamilyIntelCoreI7 = 0xC6, | |
| ProcessorFamilyDualCoreIntelCeleron = 0xC7, | |
| ProcessorFamilyIBM390 = 0xC8, | |
| ProcessorFamilyG4 = 0xC9, | |
| ProcessorFamilyG5 = 0xCA, | |
| ProcessorFamilyG6 = 0xCB, | |
| ProcessorFamilyzArchitecture = 0xCC, | |
| ProcessorFamilyIntelCoreI5 = 0xCD, | |
| ProcessorFamilyIntelCoreI3 = 0xCE, | |
| ProcessorFamilyIntelCoreI9 = 0xCF, | |
| ProcessorFamilyViaC7M = 0xD2, | |
| ProcessorFamilyViaC7D = 0xD3, | |
| ProcessorFamilyViaC7 = 0xD4, | |
| ProcessorFamilyViaEden = 0xD5, | |
| ProcessorFamilyMultiCoreIntelXeon = 0xD6, | |
| ProcessorFamilyDualCoreIntelXeon3Series = 0xD7, | |
| ProcessorFamilyQuadCoreIntelXeon3Series = 0xD8, | |
| ProcessorFamilyViaNano = 0xD9, | |
| ProcessorFamilyDualCoreIntelXeon5Series = 0xDA, | |
| ProcessorFamilyQuadCoreIntelXeon5Series = 0xDB, | |
| ProcessorFamilyDualCoreIntelXeon7Series = 0xDD, | |
| ProcessorFamilyQuadCoreIntelXeon7Series = 0xDE, | |
| ProcessorFamilyMultiCoreIntelXeon7Series = 0xDF, | |
| ProcessorFamilyMultiCoreIntelXeon3400Series = 0xE0, | |
| ProcessorFamilyAmdOpteron3000Series = 0xE4, | |
| ProcessorFamilyAmdSempronII = 0xE5, | |
| ProcessorFamilyEmbeddedAmdOpteronQuadCore = 0xE6, | |
| ProcessorFamilyAmdPhenomTripleCore = 0xE7, | |
| ProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8, | |
| ProcessorFamilyAmdTurionDualCoreMobile = 0xE9, | |
| ProcessorFamilyAmdAthlonDualCore = 0xEA, | |
| ProcessorFamilyAmdSempronSI = 0xEB, | |
| ProcessorFamilyAmdPhenomII = 0xEC, | |
| ProcessorFamilyAmdAthlonII = 0xED, | |
| ProcessorFamilySixCoreAmdOpteron = 0xEE, | |
| ProcessorFamilyAmdSempronM = 0xEF, | |
| ProcessorFamilyi860 = 0xFA, | |
| ProcessorFamilyi960 = 0xFB, | |
| ProcessorFamilyIndicatorFamily2 = 0xFE, | |
| ProcessorFamilyReserved1 = 0xFF | |
| } PROCESSOR_FAMILY_DATA; | |
| /// | |
| /// Processor Information2 - Processor Family2. | |
| /// | |
| typedef enum { | |
| ProcessorFamilyARMv7 = 0x0100, | |
| ProcessorFamilyARMv8 = 0x0101, | |
| ProcessorFamilyARMv9 = 0x0102, | |
| ProcessorFamilySH3 = 0x0104, | |
| ProcessorFamilySH4 = 0x0105, | |
| ProcessorFamilyARM = 0x0118, | |
| ProcessorFamilyStrongARM = 0x0119, | |
| ProcessorFamily6x86 = 0x012C, | |
| ProcessorFamilyMediaGX = 0x012D, | |
| ProcessorFamilyMII = 0x012E, | |
| ProcessorFamilyWinChip = 0x0140, | |
| ProcessorFamilyDSP = 0x015E, | |
| ProcessorFamilyVideoProcessor = 0x01F4, | |
| ProcessorFamilyRiscvRV32 = 0x0200, | |
| ProcessorFamilyRiscVRV64 = 0x0201, | |
| ProcessorFamilyRiscVRV128 = 0x0202, | |
| ProcessorFamilyLoongArch = 0x0258, | |
| ProcessorFamilyLoongson1 = 0x0259, | |
| ProcessorFamilyLoongson2 = 0x025A, | |
| ProcessorFamilyLoongson3 = 0x025B, | |
| ProcessorFamilyLoongson2K = 0x025C, | |
| ProcessorFamilyLoongson3A = 0x025D, | |
| ProcessorFamilyLoongson3B = 0x025E, | |
| ProcessorFamilyLoongson3C = 0x025F, | |
| ProcessorFamilyLoongson3D = 0x0260, | |
| ProcessorFamilyLoongson3E = 0x0261, | |
| ProcessorFamilyDualCoreLoongson2K = 0x0262, | |
| ProcessorFamilyQuadCoreLoongson3A = 0x026C, | |
| ProcessorFamilyMultiCoreLoongson3A = 0x026D, | |
| ProcessorFamilyQuadCoreLoongson3B = 0x026E, | |
| ProcessorFamilyMultiCoreLoongson3B = 0x026F, | |
| ProcessorFamilyMultiCoreLoongson3C = 0x0270, | |
| ProcessorFamilyMultiCoreLoongson3D = 0x0271 | |
| } PROCESSOR_FAMILY2_DATA; | |
| /// | |
| /// Processor Information - Voltage. | |
| /// | |
| typedef struct { | |
| UINT8 ProcessorVoltageCapability5V : 1; | |
| UINT8 ProcessorVoltageCapability3_3V : 1; | |
| UINT8 ProcessorVoltageCapability2_9V : 1; | |
| UINT8 ProcessorVoltageCapabilityReserved : 1; ///< Bit 3, must be zero. | |
| UINT8 ProcessorVoltageReserved : 3; ///< Bits 4-6, must be zero. | |
| UINT8 ProcessorVoltageIndicateLegacy : 1; | |
| } PROCESSOR_VOLTAGE; | |
| /// | |
| /// Processor Information - Processor Upgrade. | |
| /// | |
| typedef enum { | |
| ProcessorUpgradeOther = 0x01, | |
| ProcessorUpgradeUnknown = 0x02, | |
| ProcessorUpgradeDaughterBoard = 0x03, | |
| ProcessorUpgradeZIFSocket = 0x04, | |
| ProcessorUpgradePiggyBack = 0x05, ///< Replaceable. | |
| ProcessorUpgradeNone = 0x06, | |
| ProcessorUpgradeLIFSocket = 0x07, | |
| ProcessorUpgradeSlot1 = 0x08, | |
| ProcessorUpgradeSlot2 = 0x09, | |
| ProcessorUpgrade370PinSocket = 0x0A, | |
| ProcessorUpgradeSlotA = 0x0B, | |
| ProcessorUpgradeSlotM = 0x0C, | |
| ProcessorUpgradeSocket423 = 0x0D, | |
| ProcessorUpgradeSocketA = 0x0E, ///< Socket 462. | |
| ProcessorUpgradeSocket478 = 0x0F, | |
| ProcessorUpgradeSocket754 = 0x10, | |
| ProcessorUpgradeSocket940 = 0x11, | |
| ProcessorUpgradeSocket939 = 0x12, | |
| ProcessorUpgradeSocketmPGA604 = 0x13, | |
| ProcessorUpgradeSocketLGA771 = 0x14, | |
| ProcessorUpgradeSocketLGA775 = 0x15, | |
| ProcessorUpgradeSocketS1 = 0x16, | |
| ProcessorUpgradeAM2 = 0x17, | |
| ProcessorUpgradeF1207 = 0x18, | |
| ProcessorSocketLGA1366 = 0x19, | |
| ProcessorUpgradeSocketG34 = 0x1A, | |
| ProcessorUpgradeSocketAM3 = 0x1B, | |
| ProcessorUpgradeSocketC32 = 0x1C, | |
| ProcessorUpgradeSocketLGA1156 = 0x1D, | |
| ProcessorUpgradeSocketLGA1567 = 0x1E, | |
| ProcessorUpgradeSocketPGA988A = 0x1F, | |
| ProcessorUpgradeSocketBGA1288 = 0x20, | |
| ProcessorUpgradeSocketrPGA988B = 0x21, | |
| ProcessorUpgradeSocketBGA1023 = 0x22, | |
| ProcessorUpgradeSocketBGA1224 = 0x23, | |
| ProcessorUpgradeSocketLGA1155 = 0x24, ///< SMBIOS spec 2.8.0 updated the name | |
| ProcessorUpgradeSocketLGA1356 = 0x25, | |
| ProcessorUpgradeSocketLGA2011 = 0x26, | |
| ProcessorUpgradeSocketFS1 = 0x27, | |
| ProcessorUpgradeSocketFS2 = 0x28, | |
| ProcessorUpgradeSocketFM1 = 0x29, | |
| ProcessorUpgradeSocketFM2 = 0x2A, | |
| ProcessorUpgradeSocketLGA2011_3 = 0x2B, | |
| ProcessorUpgradeSocketLGA1356_3 = 0x2C, | |
| ProcessorUpgradeSocketLGA1150 = 0x2D, | |
| ProcessorUpgradeSocketBGA1168 = 0x2E, | |
| ProcessorUpgradeSocketBGA1234 = 0x2F, | |
| ProcessorUpgradeSocketBGA1364 = 0x30, | |
| ProcessorUpgradeSocketAM4 = 0x31, | |
| ProcessorUpgradeSocketLGA1151 = 0x32, | |
| ProcessorUpgradeSocketBGA1356 = 0x33, | |
| ProcessorUpgradeSocketBGA1440 = 0x34, | |
| ProcessorUpgradeSocketBGA1515 = 0x35, | |
| ProcessorUpgradeSocketLGA3647_1 = 0x36, | |
| ProcessorUpgradeSocketSP3 = 0x37, | |
| ProcessorUpgradeSocketSP3r2 = 0x38, | |
| ProcessorUpgradeSocketLGA2066 = 0x39, | |
| ProcessorUpgradeSocketBGA1392 = 0x3A, | |
| ProcessorUpgradeSocketBGA1510 = 0x3B, | |
| ProcessorUpgradeSocketBGA1528 = 0x3C, | |
| ProcessorUpgradeSocketLGA4189 = 0x3D, | |
| ProcessorUpgradeSocketLGA1200 = 0x3E, | |
| ProcessorUpgradeSocketLGA4677 = 0x3F, | |
| ProcessorUpgradeSocketLGA1700 = 0x40, | |
| ProcessorUpgradeSocketBGA1744 = 0x41, | |
| ProcessorUpgradeSocketBGA1781 = 0x42, | |
| ProcessorUpgradeSocketBGA1211 = 0x43, | |
| ProcessorUpgradeSocketBGA2422 = 0x44, | |
| ProcessorUpgradeSocketLGA1211 = 0x45, | |
| ProcessorUpgradeSocketLGA2422 = 0x46, | |
| ProcessorUpgradeSocketLGA5773 = 0x47, | |
| ProcessorUpgradeSocketBGA5773 = 0x48, | |
| ProcessorUpgradeSocketAM5 = 0x49, | |
| ProcessorUpgradeSocketSP5 = 0x4A, | |
| ProcessorUpgradeSocketSP6 = 0x4B, | |
| ProcessorUpgradeSocketBGA883 = 0x4C, | |
| ProcessorUpgradeSocketBGA1190 = 0x4D, | |
| ProcessorUpgradeSocketBGA4129 = 0x4E, | |
| ProcessorUpgradeSocketLGA4710 = 0x4F, | |
| ProcessorUpgradeSocketLGA7529 = 0x50 | |
| } PROCESSOR_UPGRADE; | |
| /// | |
| /// Processor ID Field Description | |
| /// | |
| typedef struct { | |
| UINT32 ProcessorSteppingId : 4; | |
| UINT32 ProcessorModel : 4; | |
| UINT32 ProcessorFamily : 4; | |
| UINT32 ProcessorType : 2; | |
| UINT32 ProcessorReserved1 : 2; | |
| UINT32 ProcessorXModel : 4; | |
| UINT32 ProcessorXFamily : 8; | |
| UINT32 ProcessorReserved2 : 4; | |
| } PROCESSOR_SIGNATURE; | |
| typedef struct { | |
| UINT32 ProcessorFpu : 1; | |
| UINT32 ProcessorVme : 1; | |
| UINT32 ProcessorDe : 1; | |
| UINT32 ProcessorPse : 1; | |
| UINT32 ProcessorTsc : 1; | |
| UINT32 ProcessorMsr : 1; | |
| UINT32 ProcessorPae : 1; | |
| UINT32 ProcessorMce : 1; | |
| UINT32 ProcessorCx8 : 1; | |
| UINT32 ProcessorApic : 1; | |
| UINT32 ProcessorReserved1 : 1; | |
| UINT32 ProcessorSep : 1; | |
| UINT32 ProcessorMtrr : 1; | |
| UINT32 ProcessorPge : 1; | |
| UINT32 ProcessorMca : 1; | |
| UINT32 ProcessorCmov : 1; | |
| UINT32 ProcessorPat : 1; | |
| UINT32 ProcessorPse36 : 1; | |
| UINT32 ProcessorPsn : 1; | |
| UINT32 ProcessorClfsh : 1; | |
| UINT32 ProcessorReserved2 : 1; | |
| UINT32 ProcessorDs : 1; | |
| UINT32 ProcessorAcpi : 1; | |
| UINT32 ProcessorMmx : 1; | |
| UINT32 ProcessorFxsr : 1; | |
| UINT32 ProcessorSse : 1; | |
| UINT32 ProcessorSse2 : 1; | |
| UINT32 ProcessorSs : 1; | |
| UINT32 ProcessorReserved3 : 1; | |
| UINT32 ProcessorTm : 1; | |
| UINT32 ProcessorReserved4 : 2; | |
| } PROCESSOR_FEATURE_FLAGS; | |
| typedef struct { | |
| UINT16 ProcessorReserved1 : 1; | |
| UINT16 ProcessorUnknown : 1; | |
| UINT16 Processor64BitCapable : 1; | |
| UINT16 ProcessorMultiCore : 1; | |
| UINT16 ProcessorHardwareThread : 1; | |
| UINT16 ProcessorExecuteProtection : 1; | |
| UINT16 ProcessorEnhancedVirtualization : 1; | |
| UINT16 ProcessorPowerPerformanceCtrl : 1; | |
| UINT16 Processor128BitCapable : 1; | |
| UINT16 ProcessorArm64SocId : 1; | |
| UINT16 ProcessorReserved2 : 6; | |
| } PROCESSOR_CHARACTERISTIC_FLAGS; | |
| /// | |
| /// Processor Information - Status | |
| /// | |
| typedef union { | |
| struct { | |
| UINT8 CpuStatus : 3; ///< Indicates the status of the processor. | |
| UINT8 Reserved1 : 3; ///< Reserved for future use. Must be set to zero. | |
| UINT8 SocketPopulated : 1; ///< Indicates if the processor socket is populated or not. | |
| UINT8 Reserved2 : 1; ///< Reserved for future use. Must be set to zero. | |
| } Bits; | |
| UINT8 Data; | |
| } PROCESSOR_STATUS_DATA; | |
| typedef struct { | |
| PROCESSOR_SIGNATURE Signature; | |
| PROCESSOR_FEATURE_FLAGS FeatureFlags; | |
| } PROCESSOR_ID_DATA; | |
| /// | |
| /// Processor Information (Type 4). | |
| /// | |
| /// The information in this structure defines the attributes of a single processor; | |
| /// a separate structure instance is provided for each system processor socket/slot. | |
| /// For example, a system with an IntelDX2 processor would have a single | |
| /// structure instance, while a system with an IntelSX2 processor would have a structure | |
| /// to describe the main CPU, and a second structure to describe the 80487 co-processor. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Socket; | |
| UINT8 ProcessorType; ///< The enumeration value from PROCESSOR_TYPE_DATA. | |
| UINT8 ProcessorFamily; ///< The enumeration value from PROCESSOR_FAMILY_DATA. | |
| SMBIOS_TABLE_STRING ProcessorManufacturer; | |
| PROCESSOR_ID_DATA ProcessorId; | |
| SMBIOS_TABLE_STRING ProcessorVersion; | |
| PROCESSOR_VOLTAGE Voltage; | |
| UINT16 ExternalClock; | |
| UINT16 MaxSpeed; | |
| UINT16 CurrentSpeed; | |
| UINT8 Status; | |
| UINT8 ProcessorUpgrade; ///< The enumeration value from PROCESSOR_UPGRADE. | |
| UINT16 L1CacheHandle; | |
| UINT16 L2CacheHandle; | |
| UINT16 L3CacheHandle; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING AssetTag; | |
| SMBIOS_TABLE_STRING PartNumber; | |
| // | |
| // Add for smbios 2.5 | |
| // | |
| UINT8 CoreCount; | |
| UINT8 EnabledCoreCount; | |
| UINT8 ThreadCount; | |
| UINT16 ProcessorCharacteristics; | |
| // | |
| // Add for smbios 2.6 | |
| // | |
| UINT16 ProcessorFamily2; | |
| // | |
| // Add for smbios 3.0 | |
| // | |
| UINT16 CoreCount2; | |
| UINT16 EnabledCoreCount2; | |
| UINT16 ThreadCount2; | |
| // | |
| // Add for smbios 3.6 | |
| // | |
| UINT16 ThreadEnabled; | |
| } SMBIOS_TABLE_TYPE4; | |
| /// | |
| /// Memory Controller Error Detecting Method. | |
| /// | |
| typedef enum { | |
| ErrorDetectingMethodOther = 0x01, | |
| ErrorDetectingMethodUnknown = 0x02, | |
| ErrorDetectingMethodNone = 0x03, | |
| ErrorDetectingMethodParity = 0x04, | |
| ErrorDetectingMethod32Ecc = 0x05, | |
| ErrorDetectingMethod64Ecc = 0x06, | |
| ErrorDetectingMethod128Ecc = 0x07, | |
| ErrorDetectingMethodCrc = 0x08 | |
| } MEMORY_ERROR_DETECT_METHOD; | |
| /// | |
| /// Memory Controller Error Correcting Capability. | |
| /// | |
| typedef struct { | |
| UINT8 Other : 1; | |
| UINT8 Unknown : 1; | |
| UINT8 None : 1; | |
| UINT8 SingleBitErrorCorrect : 1; | |
| UINT8 DoubleBitErrorCorrect : 1; | |
| UINT8 ErrorScrubbing : 1; | |
| UINT8 Reserved : 2; | |
| } MEMORY_ERROR_CORRECT_CAPABILITY; | |
| /// | |
| /// Memory Controller Information - Interleave Support. | |
| /// | |
| typedef enum { | |
| MemoryInterleaveOther = 0x01, | |
| MemoryInterleaveUnknown = 0x02, | |
| MemoryInterleaveOneWay = 0x03, | |
| MemoryInterleaveTwoWay = 0x04, | |
| MemoryInterleaveFourWay = 0x05, | |
| MemoryInterleaveEightWay = 0x06, | |
| MemoryInterleaveSixteenWay = 0x07 | |
| } MEMORY_SUPPORT_INTERLEAVE_TYPE; | |
| /// | |
| /// Memory Controller Information - Memory Speeds. | |
| /// | |
| typedef struct { | |
| UINT16 Other : 1; | |
| UINT16 Unknown : 1; | |
| UINT16 SeventyNs : 1; | |
| UINT16 SixtyNs : 1; | |
| UINT16 FiftyNs : 1; | |
| UINT16 Reserved : 11; | |
| } MEMORY_SPEED_TYPE; | |
| /// | |
| /// Memory Controller Information (Type 5, Obsolete). | |
| /// | |
| /// The information in this structure defines the attributes of the system's memory controller(s) | |
| /// and the supported attributes of any memory-modules present in the sockets controlled by | |
| /// this controller. | |
| /// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete), | |
| /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16) | |
| /// and Memory Device (Type 17) structures should be used instead. BIOS providers might | |
| /// choose to implement both memory description types to allow existing DMI browsers | |
| /// to properly display the system's memory attributes. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 ErrDetectMethod; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD. | |
| MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability; | |
| UINT8 SupportInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE. | |
| UINT8 CurrentInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE . | |
| UINT8 MaxMemoryModuleSize; | |
| MEMORY_SPEED_TYPE SupportSpeed; | |
| UINT16 SupportMemoryType; | |
| UINT8 MemoryModuleVoltage; | |
| UINT8 AssociatedMemorySlotNum; | |
| UINT16 MemoryModuleConfigHandles[1]; | |
| } SMBIOS_TABLE_TYPE5; | |
| /// | |
| /// Memory Module Information - Memory Types | |
| /// | |
| typedef struct { | |
| UINT16 Other : 1; | |
| UINT16 Unknown : 1; | |
| UINT16 Standard : 1; | |
| UINT16 FastPageMode : 1; | |
| UINT16 Edo : 1; | |
| UINT16 Parity : 1; | |
| UINT16 Ecc : 1; | |
| UINT16 Simm : 1; | |
| UINT16 Dimm : 1; | |
| UINT16 BurstEdo : 1; | |
| UINT16 Sdram : 1; | |
| UINT16 Reserved : 5; | |
| } MEMORY_CURRENT_TYPE; | |
| /// | |
| /// Memory Module Information - Memory Size. | |
| /// | |
| typedef struct { | |
| UINT8 InstalledOrEnabledSize : 7; ///< Size (n), where 2**n is the size in MB. | |
| UINT8 SingleOrDoubleBank : 1; | |
| } MEMORY_INSTALLED_ENABLED_SIZE; | |
| /// | |
| /// Memory Module Information (Type 6, Obsolete) | |
| /// | |
| /// One Memory Module Information structure is included for each memory-module socket | |
| /// in the system. The structure describes the speed, type, size, and error status | |
| /// of each system memory module. The supported attributes of each module are described | |
| /// by the "owning" Memory Controller Information structure. | |
| /// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete), | |
| /// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16) | |
| /// and Memory Device (Type 17) structures should be used instead. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING SocketDesignation; | |
| UINT8 BankConnections; | |
| UINT8 CurrentSpeed; | |
| MEMORY_CURRENT_TYPE CurrentMemoryType; | |
| MEMORY_INSTALLED_ENABLED_SIZE InstalledSize; | |
| MEMORY_INSTALLED_ENABLED_SIZE EnabledSize; | |
| UINT8 ErrorStatus; | |
| } SMBIOS_TABLE_TYPE6; | |
| /// | |
| /// Cache Information - SRAM Type. | |
| /// | |
| typedef struct { | |
| UINT16 Other : 1; | |
| UINT16 Unknown : 1; | |
| UINT16 NonBurst : 1; | |
| UINT16 Burst : 1; | |
| UINT16 PipelineBurst : 1; | |
| UINT16 Synchronous : 1; | |
| UINT16 Asynchronous : 1; | |
| UINT16 Reserved : 9; | |
| } CACHE_SRAM_TYPE_DATA; | |
| /// | |
| /// Cache Information - Error Correction Type. | |
| /// | |
| typedef enum { | |
| CacheErrorOther = 0x01, | |
| CacheErrorUnknown = 0x02, | |
| CacheErrorNone = 0x03, | |
| CacheErrorParity = 0x04, | |
| CacheErrorSingleBit = 0x05, ///< ECC | |
| CacheErrorMultiBit = 0x06 ///< ECC | |
| } CACHE_ERROR_TYPE_DATA; | |
| /// | |
| /// Cache Information - System Cache Type. | |
| /// | |
| typedef enum { | |
| CacheTypeOther = 0x01, | |
| CacheTypeUnknown = 0x02, | |
| CacheTypeInstruction = 0x03, | |
| CacheTypeData = 0x04, | |
| CacheTypeUnified = 0x05 | |
| } CACHE_TYPE_DATA; | |
| /// | |
| /// Cache Information - Associativity. | |
| /// | |
| typedef enum { | |
| CacheAssociativityOther = 0x01, | |
| CacheAssociativityUnknown = 0x02, | |
| CacheAssociativityDirectMapped = 0x03, | |
| CacheAssociativity2Way = 0x04, | |
| CacheAssociativity4Way = 0x05, | |
| CacheAssociativityFully = 0x06, | |
| CacheAssociativity8Way = 0x07, | |
| CacheAssociativity16Way = 0x08, | |
| CacheAssociativity12Way = 0x09, | |
| CacheAssociativity24Way = 0x0A, | |
| CacheAssociativity32Way = 0x0B, | |
| CacheAssociativity48Way = 0x0C, | |
| CacheAssociativity64Way = 0x0D, | |
| CacheAssociativity20Way = 0x0E | |
| } CACHE_ASSOCIATIVITY_DATA; | |
| /// | |
| /// Cache Information (Type 7). | |
| /// | |
| /// The information in this structure defines the attributes of CPU cache device in the system. | |
| /// One structure is specified for each such device, whether the device is internal to | |
| /// or external to the CPU module. Cache modules can be associated with a processor structure | |
| /// in one or two ways, depending on the SMBIOS version. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING SocketDesignation; | |
| UINT16 CacheConfiguration; | |
| UINT16 MaximumCacheSize; | |
| UINT16 InstalledSize; | |
| CACHE_SRAM_TYPE_DATA SupportedSRAMType; | |
| CACHE_SRAM_TYPE_DATA CurrentSRAMType; | |
| UINT8 CacheSpeed; | |
| UINT8 ErrorCorrectionType; ///< The enumeration value from CACHE_ERROR_TYPE_DATA. | |
| UINT8 SystemCacheType; ///< The enumeration value from CACHE_TYPE_DATA. | |
| UINT8 Associativity; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA. | |
| // | |
| // Add for smbios 3.1.0 | |
| // | |
| UINT32 MaximumCacheSize2; | |
| UINT32 InstalledSize2; | |
| } SMBIOS_TABLE_TYPE7; | |
| /// | |
| /// Port Connector Information - Connector Types. | |
| /// | |
| typedef enum { | |
| PortConnectorTypeNone = 0x00, | |
| PortConnectorTypeCentronics = 0x01, | |
| PortConnectorTypeMiniCentronics = 0x02, | |
| PortConnectorTypeProprietary = 0x03, | |
| PortConnectorTypeDB25Male = 0x04, | |
| PortConnectorTypeDB25Female = 0x05, | |
| PortConnectorTypeDB15Male = 0x06, | |
| PortConnectorTypeDB15Female = 0x07, | |
| PortConnectorTypeDB9Male = 0x08, | |
| PortConnectorTypeDB9Female = 0x09, | |
| PortConnectorTypeRJ11 = 0x0A, | |
| PortConnectorTypeRJ45 = 0x0B, | |
| PortConnectorType50PinMiniScsi = 0x0C, | |
| PortConnectorTypeMiniDin = 0x0D, | |
| PortConnectorTypeMicroDin = 0x0E, | |
| PortConnectorTypePS2 = 0x0F, | |
| PortConnectorTypeInfrared = 0x10, | |
| PortConnectorTypeHpHil = 0x11, | |
| PortConnectorTypeUsb = 0x12, | |
| PortConnectorTypeSsaScsi = 0x13, | |
| PortConnectorTypeCircularDin8Male = 0x14, | |
| PortConnectorTypeCircularDin8Female = 0x15, | |
| PortConnectorTypeOnboardIde = 0x16, | |
| PortConnectorTypeOnboardFloppy = 0x17, | |
| PortConnectorType9PinDualInline = 0x18, | |
| PortConnectorType25PinDualInline = 0x19, | |
| PortConnectorType50PinDualInline = 0x1A, | |
| PortConnectorType68PinDualInline = 0x1B, | |
| PortConnectorTypeOnboardSoundInput = 0x1C, | |
| PortConnectorTypeMiniCentronicsType14 = 0x1D, | |
| PortConnectorTypeMiniCentronicsType26 = 0x1E, | |
| PortConnectorTypeHeadPhoneMiniJack = 0x1F, | |
| PortConnectorTypeBNC = 0x20, | |
| PortConnectorType1394 = 0x21, | |
| PortConnectorTypeSasSata = 0x22, | |
| PortConnectorTypeUsbTypeC = 0x23, | |
| PortConnectorTypePC98 = 0xA0, | |
| PortConnectorTypePC98Hireso = 0xA1, | |
| PortConnectorTypePCH98 = 0xA2, | |
| PortConnectorTypePC98Note = 0xA3, | |
| PortConnectorTypePC98Full = 0xA4, | |
| PortConnectorTypeOther = 0xFF | |
| } MISC_PORT_CONNECTOR_TYPE; | |
| /// | |
| /// Port Connector Information - Port Types | |
| /// | |
| typedef enum { | |
| PortTypeNone = 0x00, | |
| PortTypeParallelXtAtCompatible = 0x01, | |
| PortTypeParallelPortPs2 = 0x02, | |
| PortTypeParallelPortEcp = 0x03, | |
| PortTypeParallelPortEpp = 0x04, | |
| PortTypeParallelPortEcpEpp = 0x05, | |
| PortTypeSerialXtAtCompatible = 0x06, | |
| PortTypeSerial16450Compatible = 0x07, | |
| PortTypeSerial16550Compatible = 0x08, | |
| PortTypeSerial16550ACompatible = 0x09, | |
| PortTypeScsi = 0x0A, | |
| PortTypeMidi = 0x0B, | |
| PortTypeJoyStick = 0x0C, | |
| PortTypeKeyboard = 0x0D, | |
| PortTypeMouse = 0x0E, | |
| PortTypeSsaScsi = 0x0F, | |
| PortTypeUsb = 0x10, | |
| PortTypeFireWire = 0x11, | |
| PortTypePcmciaTypeI = 0x12, | |
| PortTypePcmciaTypeII = 0x13, | |
| PortTypePcmciaTypeIII = 0x14, | |
| PortTypeCardBus = 0x15, | |
| PortTypeAccessBusPort = 0x16, | |
| PortTypeScsiII = 0x17, | |
| PortTypeScsiWide = 0x18, | |
| PortTypePC98 = 0x19, | |
| PortTypePC98Hireso = 0x1A, | |
| PortTypePCH98 = 0x1B, | |
| PortTypeVideoPort = 0x1C, | |
| PortTypeAudioPort = 0x1D, | |
| PortTypeModemPort = 0x1E, | |
| PortTypeNetworkPort = 0x1F, | |
| PortTypeSata = 0x20, | |
| PortTypeSas = 0x21, | |
| PortTypeMfdp = 0x22, ///< Multi-Function Display Port | |
| PortTypeThunderbolt = 0x23, | |
| PortType8251Compatible = 0xA0, | |
| PortType8251FifoCompatible = 0xA1, | |
| PortTypeOther = 0xFF | |
| } MISC_PORT_TYPE; | |
| /// | |
| /// Port Connector Information (Type 8). | |
| /// | |
| /// The information in this structure defines the attributes of a system port connector, | |
| /// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information | |
| /// are provided. One structure is present for each port provided by the system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING InternalReferenceDesignator; | |
| UINT8 InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. | |
| SMBIOS_TABLE_STRING ExternalReferenceDesignator; | |
| UINT8 ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. | |
| UINT8 PortType; ///< The enumeration value from MISC_PORT_TYPE. | |
| } SMBIOS_TABLE_TYPE8; | |
| /// | |
| /// System Slots - Slot Type | |
| /// | |
| typedef enum { | |
| SlotTypeOther = 0x01, | |
| SlotTypeUnknown = 0x02, | |
| SlotTypeIsa = 0x03, | |
| SlotTypeMca = 0x04, | |
| SlotTypeEisa = 0x05, | |
| SlotTypePci = 0x06, | |
| SlotTypePcmcia = 0x07, | |
| SlotTypeVlVesa = 0x08, | |
| SlotTypeProprietary = 0x09, | |
| SlotTypeProcessorCardSlot = 0x0A, | |
| SlotTypeProprietaryMemoryCardSlot = 0x0B, | |
| SlotTypeIORiserCardSlot = 0x0C, | |
| SlotTypeNuBus = 0x0D, | |
| SlotTypePci66MhzCapable = 0x0E, | |
| SlotTypeAgp = 0x0F, | |
| SlotTypeApg2X = 0x10, | |
| SlotTypeAgp4X = 0x11, | |
| SlotTypePciX = 0x12, | |
| SlotTypeAgp8X = 0x13, | |
| SlotTypeM2Socket1_DP = 0x14, | |
| SlotTypeM2Socket1_SD = 0x15, | |
| SlotTypeM2Socket2 = 0x16, | |
| SlotTypeM2Socket3 = 0x17, | |
| SlotTypeMxmTypeI = 0x18, | |
| SlotTypeMxmTypeII = 0x19, | |
| SlotTypeMxmTypeIIIStandard = 0x1A, | |
| SlotTypeMxmTypeIIIHe = 0x1B, | |
| SlotTypeMxmTypeIV = 0x1C, | |
| SlotTypeMxm30TypeA = 0x1D, | |
| SlotTypeMxm30TypeB = 0x1E, | |
| SlotTypePciExpressGen2Sff_8639 = 0x1F, | |
| SlotTypePciExpressGen3Sff_8639 = 0x20, | |
| SlotTypePciExpressMini52pinWithBSKO = 0x21, ///< PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs. | |
| SlotTypePciExpressMini52pinWithoutBSKO = 0x22, ///< PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs. | |
| SlotTypePciExpressMini76pin = 0x23, ///< PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card. | |
| SlotTypePCIExpressGen4SFF_8639 = 0x24, ///< U.2 | |
| SlotTypePCIExpressGen5SFF_8639 = 0x25, ///< U.2 | |
| SlotTypeOCPNIC30SmallFormFactor = 0x26, ///< SFF | |
| SlotTypeOCPNIC30LargeFormFactor = 0x27, ///< LFF | |
| SlotTypeOCPNICPriorto30 = 0x28, | |
| SlotTypeCXLFlexbus10 = 0x30, | |
| SlotTypePC98C20 = 0xA0, | |
| SlotTypePC98C24 = 0xA1, | |
| SlotTypePC98E = 0xA2, | |
| SlotTypePC98LocalBus = 0xA3, | |
| SlotTypePC98Card = 0xA4, | |
| SlotTypePciExpress = 0xA5, | |
| SlotTypePciExpressX1 = 0xA6, | |
| SlotTypePciExpressX2 = 0xA7, | |
| SlotTypePciExpressX4 = 0xA8, | |
| SlotTypePciExpressX8 = 0xA9, | |
| SlotTypePciExpressX16 = 0xAA, | |
| SlotTypePciExpressGen2 = 0xAB, | |
| SlotTypePciExpressGen2X1 = 0xAC, | |
| SlotTypePciExpressGen2X2 = 0xAD, | |
| SlotTypePciExpressGen2X4 = 0xAE, | |
| SlotTypePciExpressGen2X8 = 0xAF, | |
| SlotTypePciExpressGen2X16 = 0xB0, | |
| SlotTypePciExpressGen3 = 0xB1, | |
| SlotTypePciExpressGen3X1 = 0xB2, | |
| SlotTypePciExpressGen3X2 = 0xB3, | |
| SlotTypePciExpressGen3X4 = 0xB4, | |
| SlotTypePciExpressGen3X8 = 0xB5, | |
| SlotTypePciExpressGen3X16 = 0xB6, | |
| SlotTypePciExpressGen4 = 0xB8, | |
| SlotTypePciExpressGen4X1 = 0xB9, | |
| SlotTypePciExpressGen4X2 = 0xBA, | |
| SlotTypePciExpressGen4X4 = 0xBB, | |
| SlotTypePciExpressGen4X8 = 0xBC, | |
| SlotTypePciExpressGen4X16 = 0xBD, | |
| SlotTypePCIExpressGen5 = 0xBE, | |
| SlotTypePCIExpressGen5X1 = 0xBF, | |
| SlotTypePCIExpressGen5X2 = 0xC0, | |
| SlotTypePCIExpressGen5X4 = 0xC1, | |
| SlotTypePCIExpressGen5X8 = 0xC2, | |
| SlotTypePCIExpressGen5X16 = 0xC3, | |
| SlotTypePCIExpressGen6andBeyond = 0xC4, | |
| SlotTypeEnterpriseandDatacenter1UE1FormFactorSlot = 0xC5, | |
| SlotTypeEnterpriseandDatacenter3E3FormFactorSlot = 0xC6 | |
| } MISC_SLOT_TYPE; | |
| /// | |
| /// System Slots - Slot Data Bus Width. | |
| /// | |
| typedef enum { | |
| SlotDataBusWidthOther = 0x01, | |
| SlotDataBusWidthUnknown = 0x02, | |
| SlotDataBusWidth8Bit = 0x03, | |
| SlotDataBusWidth16Bit = 0x04, | |
| SlotDataBusWidth32Bit = 0x05, | |
| SlotDataBusWidth64Bit = 0x06, | |
| SlotDataBusWidth128Bit = 0x07, | |
| SlotDataBusWidth1X = 0x08, ///< Or X1 | |
| SlotDataBusWidth2X = 0x09, ///< Or X2 | |
| SlotDataBusWidth4X = 0x0A, ///< Or X4 | |
| SlotDataBusWidth8X = 0x0B, ///< Or X8 | |
| SlotDataBusWidth12X = 0x0C, ///< Or X12 | |
| SlotDataBusWidth16X = 0x0D, ///< Or X16 | |
| SlotDataBusWidth32X = 0x0E ///< Or X32 | |
| } MISC_SLOT_DATA_BUS_WIDTH; | |
| /// | |
| /// System Slots - Slot Physical Width. | |
| /// | |
| typedef enum { | |
| SlotPhysicalWidthOther = 0x01, | |
| SlotPhysicalWidthUnknown = 0x02, | |
| SlotPhysicalWidth8Bit = 0x03, | |
| SlotPhysicalWidth16Bit = 0x04, | |
| SlotPhysicalWidth32Bit = 0x05, | |
| SlotPhysicalWidth64Bit = 0x06, | |
| SlotPhysicalWidth128Bit = 0x07, | |
| SlotPhysicalWidth1X = 0x08, ///< Or X1 | |
| SlotPhysicalWidth2X = 0x09, ///< Or X2 | |
| SlotPhysicalWidth4X = 0x0A, ///< Or X4 | |
| SlotPhysicalWidth8X = 0x0B, ///< Or X8 | |
| SlotPhysicalWidth12X = 0x0C, ///< Or X12 | |
| SlotPhysicalWidth16X = 0x0D, ///< Or X16 | |
| SlotPhysicalWidth32X = 0x0E ///< Or X32 | |
| } MISC_SLOT_PHYSICAL_WIDTH; | |
| /// | |
| /// System Slots - Slot Information. | |
| /// | |
| typedef enum { | |
| Others = 0x00, | |
| Gen1 = 0x01, | |
| Gen2 = 0x01, | |
| Gen3 = 0x03, | |
| Gen4 = 0x04, | |
| Gen5 = 0x05, | |
| Gen6 = 0x06 | |
| } MISC_SLOT_INFORMATION; | |
| /// | |
| /// System Slots - Current Usage. | |
| /// | |
| typedef enum { | |
| SlotUsageOther = 0x01, | |
| SlotUsageUnknown = 0x02, | |
| SlotUsageAvailable = 0x03, | |
| SlotUsageInUse = 0x04, | |
| SlotUsageUnavailable = 0x05 | |
| } MISC_SLOT_USAGE; | |
| /// | |
| /// System Slots - Slot Length. | |
| /// | |
| typedef enum { | |
| SlotLengthOther = 0x01, | |
| SlotLengthUnknown = 0x02, | |
| SlotLengthShort = 0x03, | |
| SlotLengthLong = 0x04 | |
| } MISC_SLOT_LENGTH; | |
| /// | |
| /// System Slots - Slot Characteristics 1. | |
| /// | |
| typedef struct { | |
| UINT8 CharacteristicsUnknown : 1; | |
| UINT8 Provides50Volts : 1; | |
| UINT8 Provides33Volts : 1; | |
| UINT8 SharedSlot : 1; | |
| UINT8 PcCard16Supported : 1; | |
| UINT8 CardBusSupported : 1; | |
| UINT8 ZoomVideoSupported : 1; | |
| UINT8 ModemRingResumeSupported : 1; | |
| } MISC_SLOT_CHARACTERISTICS1; | |
| /// | |
| /// System Slots - Slot Characteristics 2. | |
| /// | |
| typedef struct { | |
| UINT8 PmeSignalSupported : 1; | |
| UINT8 HotPlugDevicesSupported : 1; | |
| UINT8 SmbusSignalSupported : 1; | |
| UINT8 BifurcationSupported : 1; | |
| UINT8 AsyncSurpriseRemoval : 1; | |
| UINT8 FlexbusSlotCxl10Capable : 1; | |
| UINT8 FlexbusSlotCxl20Capable : 1; | |
| UINT8 Reserved : 1; ///< Set to 0. | |
| } MISC_SLOT_CHARACTERISTICS2; | |
| /// | |
| /// System Slots - Slot Height | |
| /// | |
| typedef enum { | |
| SlotHeightNone = 0x00, | |
| SlotHeightOther = 0x01, | |
| SlotHeightUnknown = 0x02, | |
| SlotHeightFullHeight = 0x03, | |
| SlotHeightLowProfile = 0x04 | |
| } MISC_SLOT_HEIGHT; | |
| /// | |
| /// System Slots - Peer Segment/Bus/Device/Function/Width Groups | |
| /// | |
| typedef struct { | |
| UINT16 SegmentGroupNum; | |
| UINT8 BusNum; | |
| UINT8 DevFuncNum; | |
| UINT8 DataBusWidth; | |
| } MISC_SLOT_PEER_GROUP; | |
| /// | |
| /// System Slots (Type 9) | |
| /// | |
| /// The information in this structure defines the attributes of a system slot. | |
| /// One structure is provided for each slot in the system. | |
| /// | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING SlotDesignation; | |
| UINT8 SlotType; ///< The enumeration value from MISC_SLOT_TYPE. | |
| UINT8 SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH. | |
| UINT8 CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE. | |
| UINT8 SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH. | |
| UINT16 SlotID; | |
| MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1; | |
| MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2; | |
| // | |
| // Add for smbios 2.6 | |
| // | |
| UINT16 SegmentGroupNum; | |
| UINT8 BusNum; | |
| UINT8 DevFuncNum; | |
| // | |
| // Add for smbios 3.2 | |
| // | |
| UINT8 DataBusWidth; | |
| UINT8 PeerGroupingCount; | |
| MISC_SLOT_PEER_GROUP PeerGroups[1]; | |
| // | |
| // Since PeerGroups has a variable number of entries, must not define new | |
| // fields in the structure. Remaining fields can be referenced using | |
| // SMBIOS_TABLE_TYPE9_EXTENDED structure | |
| // | |
| } SMBIOS_TABLE_TYPE9; | |
| /// | |
| /// Extended structure for System Slots (Type 9) | |
| /// | |
| typedef struct { | |
| // | |
| // Add for smbios 3.4 | |
| // | |
| UINT8 SlotInformation; | |
| UINT8 SlotPhysicalWidth; | |
| UINT16 SlotPitch; | |
| // | |
| // Add for smbios 3.5 | |
| // | |
| UINT8 SlotHeight; ///< The enumeration value from MISC_SLOT_HEIGHT. | |
| } SMBIOS_TABLE_TYPE9_EXTENDED; | |
| /// | |
| /// On Board Devices Information - Device Types. | |
| /// | |
| typedef enum { | |
| OnBoardDeviceTypeOther = 0x01, | |
| OnBoardDeviceTypeUnknown = 0x02, | |
| OnBoardDeviceTypeVideo = 0x03, | |
| OnBoardDeviceTypeScsiController = 0x04, | |
| OnBoardDeviceTypeEthernet = 0x05, | |
| OnBoardDeviceTypeTokenRing = 0x06, | |
| OnBoardDeviceTypeSound = 0x07, | |
| OnBoardDeviceTypePATAController = 0x08, | |
| OnBoardDeviceTypeSATAController = 0x09, | |
| OnBoardDeviceTypeSASController = 0x0A | |
| } MISC_ONBOARD_DEVICE_TYPE; | |
| /// | |
| /// Device Item Entry | |
| /// | |
| typedef struct { | |
| UINT8 DeviceType; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE. | |
| ///< Bit 7 - 1 : device enabled, 0 : device disabled. | |
| SMBIOS_TABLE_STRING DescriptionString; | |
| } DEVICE_STRUCT; | |
| /// | |
| /// On Board Devices Information (Type 10, obsolete). | |
| /// | |
| /// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended | |
| /// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both | |
| /// types to allow existing SMBIOS browsers to properly display the system's onboard devices information. | |
| /// The information in this structure defines the attributes of devices that are onboard (soldered onto) | |
| /// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS | |
| /// has some level of control over the enabling of the associated device for use by the system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| DEVICE_STRUCT Device[1]; | |
| } SMBIOS_TABLE_TYPE10; | |
| /// | |
| /// OEM Strings (Type 11). | |
| /// This structure contains free form strings defined by the OEM. Examples of this are: | |
| /// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 StringCount; | |
| } SMBIOS_TABLE_TYPE11; | |
| /// | |
| /// System Configuration Options (Type 12). | |
| /// | |
| /// This structure contains information required to configure the base board's Jumpers and Switches. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 StringCount; | |
| } SMBIOS_TABLE_TYPE12; | |
| /// | |
| /// BIOS Language Information (Type 13). | |
| /// | |
| /// The information in this structure defines the installable language attributes of the BIOS. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 InstallableLanguages; | |
| UINT8 Flags; | |
| UINT8 Reserved[15]; | |
| SMBIOS_TABLE_STRING CurrentLanguages; | |
| } SMBIOS_TABLE_TYPE13; | |
| /// | |
| /// Group Item Entry | |
| /// | |
| typedef struct { | |
| UINT8 ItemType; | |
| UINT16 ItemHandle; | |
| } GROUP_STRUCT; | |
| /// | |
| /// Group Associations (Type 14). | |
| /// | |
| /// The Group Associations structure is provided for OEMs who want to specify | |
| /// the arrangement or hierarchy of certain components (including other Group Associations) | |
| /// within the system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING GroupName; | |
| GROUP_STRUCT Group[1]; | |
| } SMBIOS_TABLE_TYPE14; | |
| /// | |
| /// System Event Log - Event Log Types. | |
| /// | |
| typedef enum { | |
| EventLogTypeReserved = 0x00, | |
| EventLogTypeSingleBitECC = 0x01, | |
| EventLogTypeMultiBitECC = 0x02, | |
| EventLogTypeParityMemErr = 0x03, | |
| EventLogTypeBusTimeOut = 0x04, | |
| EventLogTypeIOChannelCheck = 0x05, | |
| EventLogTypeSoftwareNMI = 0x06, | |
| EventLogTypePOSTMemResize = 0x07, | |
| EventLogTypePOSTErr = 0x08, | |
| EventLogTypePCIParityErr = 0x09, | |
| EventLogTypePCISystemErr = 0x0A, | |
| EventLogTypeCPUFailure = 0x0B, | |
| EventLogTypeEISATimeOut = 0x0C, | |
| EventLogTypeMemLogDisabled = 0x0D, | |
| EventLogTypeLoggingDisabled = 0x0E, | |
| EventLogTypeSysLimitExce = 0x10, | |
| EventLogTypeAsyncHWTimer = 0x11, | |
| EventLogTypeSysConfigInfo = 0x12, | |
| EventLogTypeHDInfo = 0x13, | |
| EventLogTypeSysReconfig = 0x14, | |
| EventLogTypeUncorrectCPUErr = 0x15, | |
| EventLogTypeAreaResetAndClr = 0x16, | |
| EventLogTypeSystemBoot = 0x17, | |
| EventLogTypeUnused = 0x18, ///< 0x18 - 0x7F | |
| EventLogTypeAvailForSys = 0x80, ///< 0x80 - 0xFE | |
| EventLogTypeEndOfLog = 0xFF | |
| } EVENT_LOG_TYPE_DATA; | |
| /// | |
| /// System Event Log - Variable Data Format Types. | |
| /// | |
| typedef enum { | |
| EventLogVariableNone = 0x00, | |
| EventLogVariableHandle = 0x01, | |
| EventLogVariableMutilEvent = 0x02, | |
| EventLogVariableMutilEventHandle = 0x03, | |
| EventLogVariablePOSTResultBitmap = 0x04, | |
| EventLogVariableSysManagementType = 0x05, | |
| EventLogVariableMutliEventSysManagmentType = 0x06, | |
| EventLogVariableUnused = 0x07, | |
| EventLogVariableOEMAssigned = 0x80 | |
| } EVENT_LOG_VARIABLE_DATA; | |
| /// | |
| /// Event Log Type Descriptors | |
| /// | |
| typedef struct { | |
| UINT8 LogType; ///< The enumeration value from EVENT_LOG_TYPE_DATA. | |
| UINT8 DataFormatType; | |
| } EVENT_LOG_TYPE; | |
| /// | |
| /// System Event Log (Type 15). | |
| /// | |
| /// The presence of this structure within the SMBIOS data returned for a system indicates | |
| /// that the system supports an event log. An event log is a fixed-length area within a | |
| /// non-volatile storage element, starting with a fixed-length (and vendor-specific) header | |
| /// record, followed by one or more variable-length log records. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT16 LogAreaLength; | |
| UINT16 LogHeaderStartOffset; | |
| UINT16 LogDataStartOffset; | |
| UINT8 AccessMethod; | |
| UINT8 LogStatus; | |
| UINT32 LogChangeToken; | |
| UINT32 AccessMethodAddress; | |
| UINT8 LogHeaderFormat; | |
| UINT8 NumberOfSupportedLogTypeDescriptors; | |
| UINT8 LengthOfLogTypeDescriptor; | |
| EVENT_LOG_TYPE EventLogTypeDescriptors[1]; | |
| } SMBIOS_TABLE_TYPE15; | |
| /// | |
| /// Physical Memory Array - Location. | |
| /// | |
| typedef enum { | |
| MemoryArrayLocationOther = 0x01, | |
| MemoryArrayLocationUnknown = 0x02, | |
| MemoryArrayLocationSystemBoard = 0x03, | |
| MemoryArrayLocationIsaAddonCard = 0x04, | |
| MemoryArrayLocationEisaAddonCard = 0x05, | |
| MemoryArrayLocationPciAddonCard = 0x06, | |
| MemoryArrayLocationMcaAddonCard = 0x07, | |
| MemoryArrayLocationPcmciaAddonCard = 0x08, | |
| MemoryArrayLocationProprietaryAddonCard = 0x09, | |
| MemoryArrayLocationNuBus = 0x0A, | |
| MemoryArrayLocationPc98C20AddonCard = 0xA0, | |
| MemoryArrayLocationPc98C24AddonCard = 0xA1, | |
| MemoryArrayLocationPc98EAddonCard = 0xA2, | |
| MemoryArrayLocationPc98LocalBusAddonCard = 0xA3, | |
| MemoryArrayLocationCXLAddonCard = 0xA4 | |
| } MEMORY_ARRAY_LOCATION; | |
| /// | |
| /// Physical Memory Array - Use. | |
| /// | |
| typedef enum { | |
| MemoryArrayUseOther = 0x01, | |
| MemoryArrayUseUnknown = 0x02, | |
| MemoryArrayUseSystemMemory = 0x03, | |
| MemoryArrayUseVideoMemory = 0x04, | |
| MemoryArrayUseFlashMemory = 0x05, | |
| MemoryArrayUseNonVolatileRam = 0x06, | |
| MemoryArrayUseCacheMemory = 0x07 | |
| } MEMORY_ARRAY_USE; | |
| /// | |
| /// Physical Memory Array - Error Correction Types. | |
| /// | |
| typedef enum { | |
| MemoryErrorCorrectionOther = 0x01, | |
| MemoryErrorCorrectionUnknown = 0x02, | |
| MemoryErrorCorrectionNone = 0x03, | |
| MemoryErrorCorrectionParity = 0x04, | |
| MemoryErrorCorrectionSingleBitEcc = 0x05, | |
| MemoryErrorCorrectionMultiBitEcc = 0x06, | |
| MemoryErrorCorrectionCrc = 0x07 | |
| } MEMORY_ERROR_CORRECTION; | |
| /// | |
| /// Physical Memory Array (Type 16). | |
| /// | |
| /// This structure describes a collection of memory devices that operate | |
| /// together to form a memory address space. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION. | |
| UINT8 Use; ///< The enumeration value from MEMORY_ARRAY_USE. | |
| UINT8 MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION. | |
| UINT32 MaximumCapacity; | |
| UINT16 MemoryErrorInformationHandle; | |
| UINT16 NumberOfMemoryDevices; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| UINT64 ExtendedMaximumCapacity; | |
| } SMBIOS_TABLE_TYPE16; | |
| /// | |
| /// Memory Device - Form Factor. | |
| /// | |
| typedef enum { | |
| MemoryFormFactorOther = 0x01, | |
| MemoryFormFactorUnknown = 0x02, | |
| MemoryFormFactorSimm = 0x03, | |
| MemoryFormFactorSip = 0x04, | |
| MemoryFormFactorChip = 0x05, | |
| MemoryFormFactorDip = 0x06, | |
| MemoryFormFactorZip = 0x07, | |
| MemoryFormFactorProprietaryCard = 0x08, | |
| MemoryFormFactorDimm = 0x09, | |
| MemoryFormFactorTsop = 0x0A, | |
| MemoryFormFactorRowOfChips = 0x0B, | |
| MemoryFormFactorRimm = 0x0C, | |
| MemoryFormFactorSodimm = 0x0D, | |
| MemoryFormFactorSrimm = 0x0E, | |
| MemoryFormFactorFbDimm = 0x0F, | |
| MemoryFormFactorDie = 0x10 | |
| } MEMORY_FORM_FACTOR; | |
| /// | |
| /// Memory Device - Type | |
| /// | |
| typedef enum { | |
| MemoryTypeOther = 0x01, | |
| MemoryTypeUnknown = 0x02, | |
| MemoryTypeDram = 0x03, | |
| MemoryTypeEdram = 0x04, | |
| MemoryTypeVram = 0x05, | |
| MemoryTypeSram = 0x06, | |
| MemoryTypeRam = 0x07, | |
| MemoryTypeRom = 0x08, | |
| MemoryTypeFlash = 0x09, | |
| MemoryTypeEeprom = 0x0A, | |
| MemoryTypeFeprom = 0x0B, | |
| MemoryTypeEprom = 0x0C, | |
| MemoryTypeCdram = 0x0D, | |
| MemoryType3Dram = 0x0E, | |
| MemoryTypeSdram = 0x0F, | |
| MemoryTypeSgram = 0x10, | |
| MemoryTypeRdram = 0x11, | |
| MemoryTypeDdr = 0x12, | |
| MemoryTypeDdr2 = 0x13, | |
| MemoryTypeDdr2FbDimm = 0x14, | |
| MemoryTypeDdr3 = 0x18, | |
| MemoryTypeFbd2 = 0x19, | |
| MemoryTypeDdr4 = 0x1A, | |
| MemoryTypeLpddr = 0x1B, | |
| MemoryTypeLpddr2 = 0x1C, | |
| MemoryTypeLpddr3 = 0x1D, | |
| MemoryTypeLpddr4 = 0x1E, | |
| MemoryTypeLogicalNonVolatileDevice = 0x1F, | |
| MemoryTypeHBM = 0x20, | |
| MemoryTypeHBM2 = 0x21, | |
| MemoryTypeDdr5 = 0x22, | |
| MemoryTypeLpddr5 = 0x23, | |
| MemoryTypeHBM3 = 0x24 | |
| } MEMORY_DEVICE_TYPE; | |
| /// | |
| /// Memory Device - Type Detail | |
| /// | |
| typedef struct { | |
| UINT16 Reserved : 1; | |
| UINT16 Other : 1; | |
| UINT16 Unknown : 1; | |
| UINT16 FastPaged : 1; | |
| UINT16 StaticColumn : 1; | |
| UINT16 PseudoStatic : 1; | |
| UINT16 Rambus : 1; | |
| UINT16 Synchronous : 1; | |
| UINT16 Cmos : 1; | |
| UINT16 Edo : 1; | |
| UINT16 WindowDram : 1; | |
| UINT16 CacheDram : 1; | |
| UINT16 Nonvolatile : 1; | |
| UINT16 Registered : 1; | |
| UINT16 Unbuffered : 1; | |
| UINT16 LrDimm : 1; | |
| } MEMORY_DEVICE_TYPE_DETAIL; | |
| /// | |
| /// Memory Device - Memory Technology | |
| /// | |
| typedef enum { | |
| MemoryTechnologyOther = 0x01, | |
| MemoryTechnologyUnknown = 0x02, | |
| MemoryTechnologyDram = 0x03, | |
| MemoryTechnologyNvdimmN = 0x04, | |
| MemoryTechnologyNvdimmF = 0x05, | |
| MemoryTechnologyNvdimmP = 0x06, | |
| // | |
| // This definition is updated to represent Intel | |
| // Optane DC Persistent Memory in SMBIOS spec 3.4.0 | |
| // | |
| MemoryTechnologyIntelOptanePersistentMemory = 0x07 | |
| } MEMORY_DEVICE_TECHNOLOGY; | |
| /// | |
| /// Memory Device - Memory Operating Mode Capability | |
| /// | |
| typedef union { | |
| /// | |
| /// Individual bit fields | |
| /// | |
| struct { | |
| UINT16 Reserved : 1; ///< Set to 0. | |
| UINT16 Other : 1; | |
| UINT16 Unknown : 1; | |
| UINT16 VolatileMemory : 1; | |
| UINT16 ByteAccessiblePersistentMemory : 1; | |
| UINT16 BlockAccessiblePersistentMemory : 1; | |
| UINT16 Reserved2 : 10; ///< Set to 0. | |
| } Bits; | |
| /// | |
| /// All bit fields as a 16-bit value | |
| /// | |
| UINT16 Uint16; | |
| } MEMORY_DEVICE_OPERATING_MODE_CAPABILITY; | |
| /// | |
| /// Memory Device (Type 17). | |
| /// | |
| /// This structure describes a single memory device that is part of | |
| /// a larger Physical Memory Array (Type 16). | |
| /// Note: If a system includes memory-device sockets, the SMBIOS implementation | |
| /// includes a Memory Device structure instance for each slot, whether or not the | |
| /// socket is currently populated. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT16 MemoryArrayHandle; | |
| UINT16 MemoryErrorInformationHandle; | |
| UINT16 TotalWidth; | |
| UINT16 DataWidth; | |
| UINT16 Size; | |
| UINT8 FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR. | |
| UINT8 DeviceSet; | |
| SMBIOS_TABLE_STRING DeviceLocator; | |
| SMBIOS_TABLE_STRING BankLocator; | |
| UINT8 MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE. | |
| MEMORY_DEVICE_TYPE_DETAIL TypeDetail; | |
| UINT16 Speed; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING AssetTag; | |
| SMBIOS_TABLE_STRING PartNumber; | |
| // | |
| // Add for smbios 2.6 | |
| // | |
| UINT8 Attributes; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| UINT32 ExtendedSize; | |
| // | |
| // Keep using name "ConfiguredMemoryClockSpeed" for compatibility | |
| // although this field is renamed from "Configured Memory Clock Speed" | |
| // to "Configured Memory Speed" in smbios 3.2.0. | |
| // | |
| UINT16 ConfiguredMemoryClockSpeed; | |
| // | |
| // Add for smbios 2.8.0 | |
| // | |
| UINT16 MinimumVoltage; | |
| UINT16 MaximumVoltage; | |
| UINT16 ConfiguredVoltage; | |
| // | |
| // Add for smbios 3.2.0 | |
| // | |
| UINT8 MemoryTechnology; ///< The enumeration value from MEMORY_DEVICE_TECHNOLOGY | |
| MEMORY_DEVICE_OPERATING_MODE_CAPABILITY MemoryOperatingModeCapability; | |
| SMBIOS_TABLE_STRING FirmwareVersion; | |
| UINT16 ModuleManufacturerID; | |
| UINT16 ModuleProductID; | |
| UINT16 MemorySubsystemControllerManufacturerID; | |
| UINT16 MemorySubsystemControllerProductID; | |
| UINT64 NonVolatileSize; | |
| UINT64 VolatileSize; | |
| UINT64 CacheSize; | |
| UINT64 LogicalSize; | |
| // | |
| // Add for smbios 3.3.0 | |
| // | |
| UINT32 ExtendedSpeed; | |
| UINT32 ExtendedConfiguredMemorySpeed; | |
| } SMBIOS_TABLE_TYPE17; | |
| /// | |
| /// 32-bit Memory Error Information - Error Type. | |
| /// | |
| typedef enum { | |
| MemoryErrorOther = 0x01, | |
| MemoryErrorUnknown = 0x02, | |
| MemoryErrorOk = 0x03, | |
| MemoryErrorBadRead = 0x04, | |
| MemoryErrorParity = 0x05, | |
| MemoryErrorSigleBit = 0x06, | |
| MemoryErrorDoubleBit = 0x07, | |
| MemoryErrorMultiBit = 0x08, | |
| MemoryErrorNibble = 0x09, | |
| MemoryErrorChecksum = 0x0A, | |
| MemoryErrorCrc = 0x0B, | |
| MemoryErrorCorrectSingleBit = 0x0C, | |
| MemoryErrorCorrected = 0x0D, | |
| MemoryErrorUnCorrectable = 0x0E | |
| } MEMORY_ERROR_TYPE; | |
| /// | |
| /// 32-bit Memory Error Information - Error Granularity. | |
| /// | |
| typedef enum { | |
| MemoryGranularityOther = 0x01, | |
| MemoryGranularityOtherUnknown = 0x02, | |
| MemoryGranularityDeviceLevel = 0x03, | |
| MemoryGranularityMemPartitionLevel = 0x04 | |
| } MEMORY_ERROR_GRANULARITY; | |
| /// | |
| /// 32-bit Memory Error Information - Error Operation. | |
| /// | |
| typedef enum { | |
| MemoryErrorOperationOther = 0x01, | |
| MemoryErrorOperationUnknown = 0x02, | |
| MemoryErrorOperationRead = 0x03, | |
| MemoryErrorOperationWrite = 0x04, | |
| MemoryErrorOperationPartialWrite = 0x05 | |
| } MEMORY_ERROR_OPERATION; | |
| /// | |
| /// 32-bit Memory Error Information (Type 18). | |
| /// | |
| /// This structure identifies the specifics of an error that might be detected | |
| /// within a Physical Memory Array. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE. | |
| UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY. | |
| UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION. | |
| UINT32 VendorSyndrome; | |
| UINT32 MemoryArrayErrorAddress; | |
| UINT32 DeviceErrorAddress; | |
| UINT32 ErrorResolution; | |
| } SMBIOS_TABLE_TYPE18; | |
| /// | |
| /// Memory Array Mapped Address (Type 19). | |
| /// | |
| /// This structure provides the address mapping for a Physical Memory Array. | |
| /// One structure is present for each contiguous address range described. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT32 StartingAddress; | |
| UINT32 EndingAddress; | |
| UINT16 MemoryArrayHandle; | |
| UINT8 PartitionWidth; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| UINT64 ExtendedStartingAddress; | |
| UINT64 ExtendedEndingAddress; | |
| } SMBIOS_TABLE_TYPE19; | |
| /// | |
| /// Memory Device Mapped Address (Type 20). | |
| /// | |
| /// This structure maps memory address space usually to a device-level granularity. | |
| /// One structure is present for each contiguous address range described. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT32 StartingAddress; | |
| UINT32 EndingAddress; | |
| UINT16 MemoryDeviceHandle; | |
| UINT16 MemoryArrayMappedAddressHandle; | |
| UINT8 PartitionRowPosition; | |
| UINT8 InterleavePosition; | |
| UINT8 InterleavedDataDepth; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| UINT64 ExtendedStartingAddress; | |
| UINT64 ExtendedEndingAddress; | |
| } SMBIOS_TABLE_TYPE20; | |
| /// | |
| /// Built-in Pointing Device - Type | |
| /// | |
| typedef enum { | |
| PointingDeviceTypeOther = 0x01, | |
| PointingDeviceTypeUnknown = 0x02, | |
| PointingDeviceTypeMouse = 0x03, | |
| PointingDeviceTypeTrackBall = 0x04, | |
| PointingDeviceTypeTrackPoint = 0x05, | |
| PointingDeviceTypeGlidePoint = 0x06, | |
| PointingDeviceTouchPad = 0x07, | |
| PointingDeviceTouchScreen = 0x08, | |
| PointingDeviceOpticalSensor = 0x09 | |
| } BUILTIN_POINTING_DEVICE_TYPE; | |
| /// | |
| /// Built-in Pointing Device - Interface. | |
| /// | |
| typedef enum { | |
| PointingDeviceInterfaceOther = 0x01, | |
| PointingDeviceInterfaceUnknown = 0x02, | |
| PointingDeviceInterfaceSerial = 0x03, | |
| PointingDeviceInterfacePs2 = 0x04, | |
| PointingDeviceInterfaceInfrared = 0x05, | |
| PointingDeviceInterfaceHpHil = 0x06, | |
| PointingDeviceInterfaceBusMouse = 0x07, | |
| PointingDeviceInterfaceADB = 0x08, | |
| PointingDeviceInterfaceBusMouseDB9 = 0xA0, | |
| PointingDeviceInterfaceBusMouseMicroDin = 0xA1, | |
| PointingDeviceInterfaceUsb = 0xA2, | |
| PointingDeviceInterfaceI2c = 0xA3, | |
| PointingDeviceInterfaceSpi = 0xA4 | |
| } BUILTIN_POINTING_DEVICE_INTERFACE; | |
| /// | |
| /// Built-in Pointing Device (Type 21). | |
| /// | |
| /// This structure describes the attributes of the built-in pointing device for the | |
| /// system. The presence of this structure does not imply that the built-in | |
| /// pointing device is active for the system's use! | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 Type; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE. | |
| UINT8 Interface; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE. | |
| UINT8 NumberOfButtons; | |
| } SMBIOS_TABLE_TYPE21; | |
| /// | |
| /// Portable Battery - Device Chemistry | |
| /// | |
| typedef enum { | |
| PortableBatteryDeviceChemistryOther = 0x01, | |
| PortableBatteryDeviceChemistryUnknown = 0x02, | |
| PortableBatteryDeviceChemistryLeadAcid = 0x03, | |
| PortableBatteryDeviceChemistryNickelCadmium = 0x04, | |
| PortableBatteryDeviceChemistryNickelMetalHydride = 0x05, | |
| PortableBatteryDeviceChemistryLithiumIon = 0x06, | |
| PortableBatteryDeviceChemistryZincAir = 0x07, | |
| PortableBatteryDeviceChemistryLithiumPolymer = 0x08 | |
| } PORTABLE_BATTERY_DEVICE_CHEMISTRY; | |
| /// | |
| /// Portable Battery (Type 22). | |
| /// | |
| /// This structure describes the attributes of the portable battery(s) for the system. | |
| /// The structure contains the static attributes for the group. Each structure describes | |
| /// a single battery pack's attributes. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Location; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING ManufactureDate; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING DeviceName; | |
| UINT8 DeviceChemistry; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY. | |
| UINT16 DeviceCapacity; | |
| UINT16 DesignVoltage; | |
| SMBIOS_TABLE_STRING SBDSVersionNumber; | |
| UINT8 MaximumErrorInBatteryData; | |
| UINT16 SBDSSerialNumber; | |
| UINT16 SBDSManufactureDate; | |
| SMBIOS_TABLE_STRING SBDSDeviceChemistry; | |
| UINT8 DesignCapacityMultiplier; | |
| UINT32 OEMSpecific; | |
| } SMBIOS_TABLE_TYPE22; | |
| /// | |
| /// System Reset (Type 23) | |
| /// | |
| /// This structure describes whether Automatic System Reset functions enabled (Status). | |
| /// If the system has a watchdog Timer and the timer is not reset (Timer Reset) | |
| /// before the Interval elapses, an automatic system reset will occur. The system will re-boot | |
| /// according to the Boot Option. This function may repeat until the Limit is reached, at which time | |
| /// the system will re-boot according to the Boot Option at Limit. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 Capabilities; | |
| UINT16 ResetCount; | |
| UINT16 ResetLimit; | |
| UINT16 TimerInterval; | |
| UINT16 Timeout; | |
| } SMBIOS_TABLE_TYPE23; | |
| /// | |
| /// Hardware Security (Type 24). | |
| /// | |
| /// This structure describes the system-wide hardware security settings. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 HardwareSecuritySettings; | |
| } SMBIOS_TABLE_TYPE24; | |
| /// | |
| /// System Power Controls (Type 25). | |
| /// | |
| /// This structure describes the attributes for controlling the main power supply to the system. | |
| /// Software that interprets this structure uses the month, day, hour, minute, and second values | |
| /// to determine the number of seconds until the next power-on of the system. The presence of | |
| /// this structure implies that a timed power-on facility is available for the system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 NextScheduledPowerOnMonth; | |
| UINT8 NextScheduledPowerOnDayOfMonth; | |
| UINT8 NextScheduledPowerOnHour; | |
| UINT8 NextScheduledPowerOnMinute; | |
| UINT8 NextScheduledPowerOnSecond; | |
| } SMBIOS_TABLE_TYPE25; | |
| /// | |
| /// Voltage Probe - Location and Status. | |
| /// | |
| typedef struct { | |
| UINT8 VoltageProbeSite : 5; | |
| UINT8 VoltageProbeStatus : 3; | |
| } MISC_VOLTAGE_PROBE_LOCATION; | |
| /// | |
| /// Voltage Probe (Type 26) | |
| /// | |
| /// This describes the attributes for a voltage probe in the system. | |
| /// Each structure describes a single voltage probe. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Description; | |
| MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus; | |
| UINT16 MaximumValue; | |
| UINT16 MinimumValue; | |
| UINT16 Resolution; | |
| UINT16 Tolerance; | |
| UINT16 Accuracy; | |
| UINT32 OEMDefined; | |
| UINT16 NominalValue; | |
| } SMBIOS_TABLE_TYPE26; | |
| /// | |
| /// Cooling Device - Device Type and Status. | |
| /// | |
| typedef struct { | |
| UINT8 CoolingDevice : 5; | |
| UINT8 CoolingDeviceStatus : 3; | |
| } MISC_COOLING_DEVICE_TYPE; | |
| /// | |
| /// Cooling Device (Type 27) | |
| /// | |
| /// This structure describes the attributes for a cooling device in the system. | |
| /// Each structure describes a single cooling device. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT16 TemperatureProbeHandle; | |
| MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus; | |
| UINT8 CoolingUnitGroup; | |
| UINT32 OEMDefined; | |
| UINT16 NominalSpeed; | |
| // | |
| // Add for smbios 2.7 | |
| // | |
| SMBIOS_TABLE_STRING Description; | |
| } SMBIOS_TABLE_TYPE27; | |
| /// | |
| /// Temperature Probe - Location and Status. | |
| /// | |
| typedef struct { | |
| UINT8 TemperatureProbeSite : 5; | |
| UINT8 TemperatureProbeStatus : 3; | |
| } MISC_TEMPERATURE_PROBE_LOCATION; | |
| /// | |
| /// Temperature Probe (Type 28). | |
| /// | |
| /// This structure describes the attributes for a temperature probe in the system. | |
| /// Each structure describes a single temperature probe. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Description; | |
| MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus; | |
| UINT16 MaximumValue; | |
| UINT16 MinimumValue; | |
| UINT16 Resolution; | |
| UINT16 Tolerance; | |
| UINT16 Accuracy; | |
| UINT32 OEMDefined; | |
| UINT16 NominalValue; | |
| } SMBIOS_TABLE_TYPE28; | |
| /// | |
| /// Electrical Current Probe - Location and Status. | |
| /// | |
| typedef struct { | |
| UINT8 ElectricalCurrentProbeSite : 5; | |
| UINT8 ElectricalCurrentProbeStatus : 3; | |
| } MISC_ELECTRICAL_CURRENT_PROBE_LOCATION; | |
| /// | |
| /// Electrical Current Probe (Type 29). | |
| /// | |
| /// This structure describes the attributes for an electrical current probe in the system. | |
| /// Each structure describes a single electrical current probe. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Description; | |
| MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus; | |
| UINT16 MaximumValue; | |
| UINT16 MinimumValue; | |
| UINT16 Resolution; | |
| UINT16 Tolerance; | |
| UINT16 Accuracy; | |
| UINT32 OEMDefined; | |
| UINT16 NominalValue; | |
| } SMBIOS_TABLE_TYPE29; | |
| /// | |
| /// Out-of-Band Remote Access (Type 30). | |
| /// | |
| /// This structure describes the attributes and policy settings of a hardware facility | |
| /// that may be used to gain remote access to a hardware system when the operating system | |
| /// is not available due to power-down status, hardware failures, or boot failures. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING ManufacturerName; | |
| UINT8 Connections; | |
| } SMBIOS_TABLE_TYPE30; | |
| /// | |
| /// Boot Integrity Services (BIS) Entry Point (Type 31). | |
| /// | |
| /// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS). | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 Checksum; | |
| UINT8 Reserved1; | |
| UINT16 Reserved2; | |
| UINT32 BisEntry16; | |
| UINT32 BisEntry32; | |
| UINT64 Reserved3; | |
| UINT32 Reserved4; | |
| } SMBIOS_TABLE_TYPE31; | |
| /// | |
| /// System Boot Information - System Boot Status. | |
| /// | |
| typedef enum { | |
| BootInformationStatusNoError = 0x00, | |
| BootInformationStatusNoBootableMedia = 0x01, | |
| BootInformationStatusNormalOSFailedLoading = 0x02, | |
| BootInformationStatusFirmwareDetectedFailure = 0x03, | |
| BootInformationStatusOSDetectedFailure = 0x04, | |
| BootInformationStatusUserRequestedBoot = 0x05, | |
| BootInformationStatusSystemSecurityViolation = 0x06, | |
| BootInformationStatusPreviousRequestedImage = 0x07, | |
| BootInformationStatusWatchdogTimerExpired = 0x08, | |
| BootInformationStatusStartReserved = 0x09, | |
| BootInformationStatusStartOemSpecific = 0x80, | |
| BootInformationStatusStartProductSpecific = 0xC0 | |
| } MISC_BOOT_INFORMATION_STATUS_DATA_TYPE; | |
| /// | |
| /// System Boot Information (Type 32). | |
| /// | |
| /// The client system firmware, e.g. BIOS, communicates the System Boot Status to the | |
| /// client's Pre-boot Execution Environment (PXE) boot image or OS-present management | |
| /// application via this structure. When used in the PXE environment, for example, | |
| /// this code identifies the reason the PXE was initiated and can be used by boot-image | |
| /// software to further automate an enterprise's PXE sessions. For example, an enterprise | |
| /// could choose to automatically download a hardware-diagnostic image to a client whose | |
| /// reason code indicated either a firmware- or operating system-detected hardware failure. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 Reserved[6]; | |
| UINT8 BootStatus; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE. | |
| } SMBIOS_TABLE_TYPE32; | |
| /// | |
| /// 64-bit Memory Error Information (Type 33). | |
| /// | |
| /// This structure describes an error within a Physical Memory Array, | |
| /// when the error address is above 4G (0xFFFFFFFF). | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE. | |
| UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY. | |
| UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION. | |
| UINT32 VendorSyndrome; | |
| UINT64 MemoryArrayErrorAddress; | |
| UINT64 DeviceErrorAddress; | |
| UINT32 ErrorResolution; | |
| } SMBIOS_TABLE_TYPE33; | |
| /// | |
| /// Management Device - Type. | |
| /// | |
| typedef enum { | |
| ManagementDeviceTypeOther = 0x01, | |
| ManagementDeviceTypeUnknown = 0x02, | |
| ManagementDeviceTypeLm75 = 0x03, | |
| ManagementDeviceTypeLm78 = 0x04, | |
| ManagementDeviceTypeLm79 = 0x05, | |
| ManagementDeviceTypeLm80 = 0x06, | |
| ManagementDeviceTypeLm81 = 0x07, | |
| ManagementDeviceTypeAdm9240 = 0x08, | |
| ManagementDeviceTypeDs1780 = 0x09, | |
| ManagementDeviceTypeMaxim1617 = 0x0A, | |
| ManagementDeviceTypeGl518Sm = 0x0B, | |
| ManagementDeviceTypeW83781D = 0x0C, | |
| ManagementDeviceTypeHt82H791 = 0x0D | |
| } MISC_MANAGEMENT_DEVICE_TYPE; | |
| /// | |
| /// Management Device - Address Type. | |
| /// | |
| typedef enum { | |
| ManagementDeviceAddressTypeOther = 0x01, | |
| ManagementDeviceAddressTypeUnknown = 0x02, | |
| ManagementDeviceAddressTypeIOPort = 0x03, | |
| ManagementDeviceAddressTypeMemory = 0x04, | |
| ManagementDeviceAddressTypeSmbus = 0x05 | |
| } MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE; | |
| /// | |
| /// Management Device (Type 34). | |
| /// | |
| /// The information in this structure defines the attributes of a Management Device. | |
| /// A Management Device might control one or more fans or voltage, current, or temperature | |
| /// probes as defined by one or more Management Device Component structures. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Description; | |
| UINT8 Type; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE. | |
| UINT32 Address; | |
| UINT8 AddressType; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE. | |
| } SMBIOS_TABLE_TYPE34; | |
| /// | |
| /// Management Device Component (Type 35) | |
| /// | |
| /// This structure associates a cooling device or environmental probe with structures | |
| /// that define the controlling hardware device and (optionally) the component's thresholds. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING Description; | |
| UINT16 ManagementDeviceHandle; | |
| UINT16 ComponentHandle; | |
| UINT16 ThresholdHandle; | |
| } SMBIOS_TABLE_TYPE35; | |
| /// | |
| /// Management Device Threshold Data (Type 36). | |
| /// | |
| /// The information in this structure defines threshold information for | |
| /// a component (probe or cooling-unit) contained within a Management Device. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT16 LowerThresholdNonCritical; | |
| UINT16 UpperThresholdNonCritical; | |
| UINT16 LowerThresholdCritical; | |
| UINT16 UpperThresholdCritical; | |
| UINT16 LowerThresholdNonRecoverable; | |
| UINT16 UpperThresholdNonRecoverable; | |
| } SMBIOS_TABLE_TYPE36; | |
| /// | |
| /// Memory Channel Entry. | |
| /// | |
| typedef struct { | |
| UINT8 DeviceLoad; | |
| UINT16 DeviceHandle; | |
| } MEMORY_DEVICE; | |
| /// | |
| /// Memory Channel - Channel Type. | |
| /// | |
| typedef enum { | |
| MemoryChannelTypeOther = 0x01, | |
| MemoryChannelTypeUnknown = 0x02, | |
| MemoryChannelTypeRambus = 0x03, | |
| MemoryChannelTypeSyncLink = 0x04 | |
| } MEMORY_CHANNEL_TYPE; | |
| /// | |
| /// Memory Channel (Type 37) | |
| /// | |
| /// The information in this structure provides the correlation between a Memory Channel | |
| /// and its associated Memory Devices. Each device presents one or more loads to the channel. | |
| /// The sum of all device loads cannot exceed the channel's defined maximum. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 ChannelType; | |
| UINT8 MaximumChannelLoad; | |
| UINT8 MemoryDeviceCount; | |
| MEMORY_DEVICE MemoryDevice[1]; | |
| } SMBIOS_TABLE_TYPE37; | |
| /// | |
| /// IPMI Device Information - BMC Interface Type | |
| /// | |
| typedef enum { | |
| IPMIDeviceInfoInterfaceTypeUnknown = 0x00, | |
| IPMIDeviceInfoInterfaceTypeKCS = 0x01, ///< The Keyboard Controller Style. | |
| IPMIDeviceInfoInterfaceTypeSMIC = 0x02, ///< The Server Management Interface Chip. | |
| IPMIDeviceInfoInterfaceTypeBT = 0x03, ///< The Block Transfer | |
| IPMIDeviceInfoInterfaceTypeSSIF = 0x04 ///< SMBus System Interface | |
| } BMC_INTERFACE_TYPE; | |
| /// | |
| /// IPMI Device Information (Type 38). | |
| /// | |
| /// The information in this structure defines the attributes of an | |
| /// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC). | |
| /// | |
| /// The Type 42 structure can also be used to describe a physical management controller | |
| /// host interface and one or more protocols that share that interface. If IPMI is not | |
| /// shared with other protocols, either the Type 38 or Type 42 structures can be used. | |
| /// Providing Type 38 is recommended for backward compatibility. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 InterfaceType; ///< The enumeration value from BMC_INTERFACE_TYPE. | |
| UINT8 IPMISpecificationRevision; | |
| UINT8 I2CSlaveAddress; | |
| UINT8 NVStorageDeviceAddress; | |
| UINT64 BaseAddress; | |
| UINT8 BaseAddressModifier_InterruptInfo; | |
| UINT8 InterruptNumber; | |
| } SMBIOS_TABLE_TYPE38; | |
| /// | |
| /// System Power Supply - Power Supply Characteristics. | |
| /// | |
| typedef struct { | |
| UINT16 PowerSupplyHotReplaceable : 1; | |
| UINT16 PowerSupplyPresent : 1; | |
| UINT16 PowerSupplyUnplugged : 1; | |
| UINT16 InputVoltageRangeSwitch : 4; | |
| UINT16 PowerSupplyStatus : 3; | |
| UINT16 PowerSupplyType : 4; | |
| UINT16 Reserved : 2; | |
| } SYS_POWER_SUPPLY_CHARACTERISTICS; | |
| /// | |
| /// System Power Supply (Type 39). | |
| /// | |
| /// This structure identifies attributes of a system power supply. One instance | |
| /// of this record is present for each possible power supply in a system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 PowerUnitGroup; | |
| SMBIOS_TABLE_STRING Location; | |
| SMBIOS_TABLE_STRING DeviceName; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING SerialNumber; | |
| SMBIOS_TABLE_STRING AssetTagNumber; | |
| SMBIOS_TABLE_STRING ModelPartNumber; | |
| SMBIOS_TABLE_STRING RevisionLevel; | |
| UINT16 MaxPowerCapacity; | |
| SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics; | |
| UINT16 InputVoltageProbeHandle; | |
| UINT16 CoolingDeviceHandle; | |
| UINT16 InputCurrentProbeHandle; | |
| } SMBIOS_TABLE_TYPE39; | |
| /// | |
| /// Additional Information Entry Format. | |
| /// | |
| typedef struct { | |
| UINT8 EntryLength; | |
| UINT16 ReferencedHandle; | |
| UINT8 ReferencedOffset; | |
| SMBIOS_TABLE_STRING EntryString; | |
| UINT8 Value[1]; | |
| } ADDITIONAL_INFORMATION_ENTRY; | |
| /// | |
| /// Additional Information (Type 40). | |
| /// | |
| /// This structure is intended to provide additional information for handling unspecified | |
| /// enumerated values and interim field updates in another structure. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 NumberOfAdditionalInformationEntries; | |
| ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1]; | |
| } SMBIOS_TABLE_TYPE40; | |
| /// | |
| /// Onboard Devices Extended Information - Onboard Device Types. | |
| /// | |
| typedef enum { | |
| OnBoardDeviceExtendedTypeOther = 0x01, | |
| OnBoardDeviceExtendedTypeUnknown = 0x02, | |
| OnBoardDeviceExtendedTypeVideo = 0x03, | |
| OnBoardDeviceExtendedTypeScsiController = 0x04, | |
| OnBoardDeviceExtendedTypeEthernet = 0x05, | |
| OnBoardDeviceExtendedTypeTokenRing = 0x06, | |
| OnBoardDeviceExtendedTypeSound = 0x07, | |
| OnBoardDeviceExtendedTypePATAController = 0x08, | |
| OnBoardDeviceExtendedTypeSATAController = 0x09, | |
| OnBoardDeviceExtendedTypeSASController = 0x0A, | |
| OnBoardDeviceExtendedTypeWirelessLAN = 0x0B, | |
| OnBoardDeviceExtendedTypeBluetooth = 0x0C, | |
| OnBoardDeviceExtendedTypeWWAN = 0x0D, | |
| OnBoardDeviceExtendedTypeeMMC = 0x0E, | |
| OnBoardDeviceExtendedTypeNvme = 0x0F, | |
| OnBoardDeviceExtendedTypeUfc = 0x10 | |
| } ONBOARD_DEVICE_EXTENDED_INFO_TYPE; | |
| /// | |
| /// Onboard Devices Extended Information (Type 41). | |
| /// | |
| /// The information in this structure defines the attributes of devices that | |
| /// are onboard (soldered onto) a system element, usually the baseboard. | |
| /// In general, an entry in this table implies that the BIOS has some level of | |
| /// control over the enabling of the associated device for use by the system. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING ReferenceDesignation; | |
| UINT8 DeviceType; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE | |
| UINT8 DeviceTypeInstance; | |
| UINT16 SegmentGroupNum; | |
| UINT8 BusNum; | |
| UINT8 DevFuncNum; | |
| } SMBIOS_TABLE_TYPE41; | |
| /// | |
| /// Management Controller Host Interface - Protocol Record Data Format. | |
| /// | |
| typedef struct { | |
| UINT8 ProtocolType; | |
| UINT8 ProtocolTypeDataLen; | |
| UINT8 ProtocolTypeData[1]; | |
| } MC_HOST_INTERFACE_PROTOCOL_RECORD; | |
| /// | |
| /// Management Controller Host Interface - Interface Types. | |
| /// 00h - 3Fh: MCTP Host Interfaces | |
| /// | |
| typedef enum { | |
| MCHostInterfaceTypeNetworkHostInterface = 0x40, | |
| MCHostInterfaceTypeOemDefined = 0xF0 | |
| } MC_HOST_INTERFACE_TYPE; | |
| /// | |
| /// Management Controller Host Interface - Protocol Types. | |
| /// | |
| typedef enum { | |
| MCHostInterfaceProtocolTypeIPMI = 0x02, | |
| MCHostInterfaceProtocolTypeMCTP = 0x03, | |
| MCHostInterfaceProtocolTypeRedfishOverIP = 0x04, | |
| MCHostInterfaceProtocolTypeOemDefined = 0xF0 | |
| } MC_HOST_INTERFACE_PROTOCOL_TYPE; | |
| /// | |
| /// Management Controller Host Interface (Type 42). | |
| /// | |
| /// The information in this structure defines the attributes of a Management | |
| /// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms. | |
| /// | |
| /// Type 42 should be used for management controller host interfaces that use protocols | |
| /// other than IPMI or that use multiple protocols on a single host interface type. | |
| /// | |
| /// This structure should also be provided if IPMI is shared with other protocols | |
| /// over the same interface hardware. If IPMI is not shared with other protocols, | |
| /// either the Type 38 or Type 42 structures can be used. Providing Type 38 is | |
| /// recommended for backward compatibility. The structures are not required to | |
| /// be mutually exclusive. Type 38 and Type 42 structures may be implemented | |
| /// simultaneously to provide backward compatibility with IPMI applications or drivers | |
| /// that do not yet recognize the Type 42 structure. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 InterfaceType; ///< The enumeration value from MC_HOST_INTERFACE_TYPE | |
| UINT8 InterfaceTypeSpecificDataLength; | |
| UINT8 InterfaceTypeSpecificData[4]; ///< This field has a minimum of four bytes | |
| } SMBIOS_TABLE_TYPE42; | |
| /// | |
| /// Processor Specific Block - Processor Architecture Type | |
| /// | |
| typedef enum { | |
| ProcessorSpecificBlockArchTypeReserved = 0x00, | |
| ProcessorSpecificBlockArchTypeIa32 = 0x01, | |
| ProcessorSpecificBlockArchTypeX64 = 0x02, | |
| ProcessorSpecificBlockArchTypeItanium = 0x03, | |
| ProcessorSpecificBlockArchTypeAarch32 = 0x04, | |
| ProcessorSpecificBlockArchTypeAarch64 = 0x05, | |
| ProcessorSpecificBlockArchTypeRiscVRV32 = 0x06, | |
| ProcessorSpecificBlockArchTypeRiscVRV64 = 0x07, | |
| ProcessorSpecificBlockArchTypeRiscVRV128 = 0x08, | |
| ProcessorSpecificBlockArchTypeLoongArch32 = 0x09, | |
| ProcessorSpecificBlockArchTypeLoongArch64 = 0x0A | |
| } PROCESSOR_SPECIFIC_BLOCK_ARCH_TYPE; | |
| /// | |
| /// Processor Specific Block is the standard container of processor-specific data. | |
| /// | |
| typedef struct { | |
| UINT8 Length; | |
| UINT8 ProcessorArchType; | |
| /// | |
| /// Below followed by Processor-specific data | |
| /// | |
| /// | |
| } PROCESSOR_SPECIFIC_BLOCK; | |
| /// | |
| /// Processor Additional Information(Type 44). | |
| /// | |
| /// The information in this structure defines the processor additional information in case | |
| /// SMBIOS type 4 is not sufficient to describe processor characteristics. | |
| /// The SMBIOS type 44 structure has a reference handle field to link back to the related | |
| /// SMBIOS type 4 structure. There may be multiple SMBIOS type 44 structures linked to the | |
| /// same SMBIOS type 4 structure. For example, when cores are not identical in a processor, | |
| /// SMBIOS type 44 structures describe different core-specific information. | |
| /// | |
| /// SMBIOS type 44 defines the standard header for the processor-specific block, while the | |
| /// contents of processor-specific data are maintained by processor | |
| /// architecture workgroups or vendors in separate documents. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_HANDLE RefHandle; ///< This field refer to associated SMBIOS type 4 | |
| /// | |
| /// Below followed by Processor-specific block | |
| /// | |
| PROCESSOR_SPECIFIC_BLOCK ProcessorSpecificBlock; | |
| } SMBIOS_TABLE_TYPE44; | |
| /// | |
| /// TPM Device (Type 43). | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT8 VendorID[4]; | |
| UINT8 MajorSpecVersion; | |
| UINT8 MinorSpecVersion; | |
| UINT32 FirmwareVersion1; | |
| UINT32 FirmwareVersion2; | |
| SMBIOS_TABLE_STRING Description; | |
| UINT64 Characteristics; | |
| UINT32 OemDefined; | |
| } SMBIOS_TABLE_TYPE43; | |
| /// | |
| /// Firmware Inventory Version Format Type (Type 45). | |
| /// | |
| typedef enum { | |
| VersionFormatTypeFreeForm = 0x00, | |
| VersionFormatTypeMajorMinor = 0x01, | |
| VersionFormatType32BitHex = 0x02, | |
| VersionFormatType64BitHex = 0x03, | |
| VersionFormatTypeReserved = 0x04, /// 0x04 - 0x7F are reserved | |
| VersionFormatTypeOem = 0x80 /// 0x80 - 0xFF are BIOS Vendor/OEM-specific | |
| } FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE; | |
| /// | |
| /// Firmware Inventory Firmware Id Format Type (Type 45). | |
| /// | |
| typedef enum { | |
| FirmwareIdFormatTypeFreeForm = 0x00, | |
| FirmwareIdFormatTypeUuid = 0x01, | |
| FirmwareIdFormatTypeReserved = 0x04, /// 0x04 - 0x7F are reserved | |
| InventoryFirmwareIdFormatTypeOem = 0x80 /// 0x80 - 0xFF are BIOS Vendor/OEM-specific | |
| } FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE; | |
| /// | |
| /// Firmware Inventory Firmware Characteristics (Type 45). | |
| /// | |
| typedef struct { | |
| UINT16 Updatable : 1; | |
| UINT16 WriteProtected : 1; | |
| UINT16 Reserved : 14; | |
| } FIRMWARE_CHARACTERISTICS; | |
| /// | |
| /// Firmware Inventory State Information (Type 45). | |
| /// | |
| typedef enum { | |
| FirmwareInventoryStateOther = 0x01, | |
| FirmwareInventoryStateUnknown = 0x02, | |
| FirmwareInventoryStateDisabled = 0x03, | |
| FirmwareInventoryStateEnabled = 0x04, | |
| FirmwareInventoryStateAbsent = 0x05, | |
| FirmwareInventoryStateStandbyOffline = 0x06, | |
| FirmwareInventoryStateStandbySpare = 0x07, | |
| FirmwareInventoryStateUnavailableOffline = 0x08 | |
| } FIRMWARE_INVENTORY_STATE; | |
| /// | |
| /// Firmware Inventory Information (Type 45) | |
| /// | |
| /// The information in this structure defines an inventory of firmware | |
| /// components in the system. This can include firmware components such as | |
| /// BIOS, BMC, as well as firmware for other devices in the system. | |
| /// The information can be used by software to display the firmware inventory | |
| /// in a uniform manner. It can also be used by a management controller, | |
| /// such as a BMC, for remote system management. | |
| /// This structure is not intended to replace other standard programmatic | |
| /// interfaces for firmware updates. | |
| /// One Type 45 structure is provided for each firmware component. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| SMBIOS_TABLE_STRING FirmwareComponentName; | |
| SMBIOS_TABLE_STRING FirmwareVersion; | |
| UINT8 FirmwareVersionFormat; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE | |
| SMBIOS_TABLE_STRING FirmwareId; | |
| UINT8 FirmwareIdFormat; ///< The enumeration value from FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE. | |
| SMBIOS_TABLE_STRING ReleaseDate; | |
| SMBIOS_TABLE_STRING Manufacturer; | |
| SMBIOS_TABLE_STRING LowestSupportedVersion; | |
| UINT64 ImageSize; | |
| FIRMWARE_CHARACTERISTICS Characteristics; | |
| UINT8 State; ///< The enumeration value from FIRMWARE_INVENTORY_STATE. | |
| UINT8 AssociatedComponentCount; | |
| /// | |
| /// zero or n-number of handles depends on AssociatedComponentCount | |
| /// handles are of type SMBIOS_HANDLE | |
| /// | |
| } SMBIOS_TABLE_TYPE45; | |
| /// | |
| /// String Property IDs (Type 46). | |
| /// | |
| typedef enum { | |
| StringPropertyIdNone = 0x0000, | |
| StringPropertyIdDevicePath = 0x0001, | |
| StringPropertyIdReserved = 0x0002, /// Reserved 0x0002 - 0x7FFF | |
| StringPropertyIdBiosVendor = 0x8000, /// BIOS vendor 0x8000 - 0xBFFF | |
| StringPropertyIdOem = 0xC000 /// OEM range 0xC000 - 0xFFFF | |
| } STRING_PROPERTY_ID; | |
| /// | |
| /// This structure defines a string property for another structure. | |
| /// This allows adding string properties that are common to several structures | |
| /// without having to modify the definitions of these structures. | |
| /// Multiple type 46 structures can add string properties to the same | |
| /// parent structure. | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| UINT16 StringPropertyId; ///< The enumeration value from STRING_PROPERTY_ID. | |
| SMBIOS_TABLE_STRING StringPropertyValue; | |
| SMBIOS_HANDLE ParentHandle; | |
| } SMBIOS_TABLE_TYPE46; | |
| /// | |
| /// Inactive (Type 126) | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| } SMBIOS_TABLE_TYPE126; | |
| /// | |
| /// End-of-Table (Type 127) | |
| /// | |
| typedef struct { | |
| SMBIOS_STRUCTURE Hdr; | |
| } SMBIOS_TABLE_TYPE127; | |
| /// | |
| /// Union of all the possible SMBIOS record types. | |
| /// | |
| typedef union { | |
| SMBIOS_STRUCTURE *Hdr; | |
| SMBIOS_TABLE_TYPE0 *Type0; | |
| SMBIOS_TABLE_TYPE1 *Type1; | |
| SMBIOS_TABLE_TYPE2 *Type2; | |
| SMBIOS_TABLE_TYPE3 *Type3; | |
| SMBIOS_TABLE_TYPE4 *Type4; | |
| SMBIOS_TABLE_TYPE5 *Type5; | |
| SMBIOS_TABLE_TYPE6 *Type6; | |
| SMBIOS_TABLE_TYPE7 *Type7; | |
| SMBIOS_TABLE_TYPE8 *Type8; | |
| SMBIOS_TABLE_TYPE9 *Type9; | |
| SMBIOS_TABLE_TYPE10 *Type10; | |
| SMBIOS_TABLE_TYPE11 *Type11; | |
| SMBIOS_TABLE_TYPE12 *Type12; | |
| SMBIOS_TABLE_TYPE13 *Type13; | |
| SMBIOS_TABLE_TYPE14 *Type14; | |
| SMBIOS_TABLE_TYPE15 *Type15; | |
| SMBIOS_TABLE_TYPE16 *Type16; | |
| SMBIOS_TABLE_TYPE17 *Type17; | |
| SMBIOS_TABLE_TYPE18 *Type18; | |
| SMBIOS_TABLE_TYPE19 *Type19; | |
| SMBIOS_TABLE_TYPE20 *Type20; | |
| SMBIOS_TABLE_TYPE21 *Type21; | |
| SMBIOS_TABLE_TYPE22 *Type22; | |
| SMBIOS_TABLE_TYPE23 *Type23; | |
| SMBIOS_TABLE_TYPE24 *Type24; | |
| SMBIOS_TABLE_TYPE25 *Type25; | |
| SMBIOS_TABLE_TYPE26 *Type26; | |
| SMBIOS_TABLE_TYPE27 *Type27; | |
| SMBIOS_TABLE_TYPE28 *Type28; | |
| SMBIOS_TABLE_TYPE29 *Type29; | |
| SMBIOS_TABLE_TYPE30 *Type30; | |
| SMBIOS_TABLE_TYPE31 *Type31; | |
| SMBIOS_TABLE_TYPE32 *Type32; | |
| SMBIOS_TABLE_TYPE33 *Type33; | |
| SMBIOS_TABLE_TYPE34 *Type34; | |
| SMBIOS_TABLE_TYPE35 *Type35; | |
| SMBIOS_TABLE_TYPE36 *Type36; | |
| SMBIOS_TABLE_TYPE37 *Type37; | |
| SMBIOS_TABLE_TYPE38 *Type38; | |
| SMBIOS_TABLE_TYPE39 *Type39; | |
| SMBIOS_TABLE_TYPE40 *Type40; | |
| SMBIOS_TABLE_TYPE41 *Type41; | |
| SMBIOS_TABLE_TYPE42 *Type42; | |
| SMBIOS_TABLE_TYPE43 *Type43; | |
| SMBIOS_TABLE_TYPE44 *Type44; | |
| SMBIOS_TABLE_TYPE45 *Type45; | |
| SMBIOS_TABLE_TYPE46 *Type46; | |
| SMBIOS_TABLE_TYPE126 *Type126; | |
| SMBIOS_TABLE_TYPE127 *Type127; | |
| UINT8 *Raw; | |
| } SMBIOS_STRUCTURE_POINTER; | |
| #pragma pack() | |
| #endif |