SmBios.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/** @file
Industry Standard Definitions of SMBIOS Table Specification v2.7.1
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#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
///
/// 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
///
/// Smbios Table Entry Point Structure.
///
#pragma pack(1)
typedef struct {
///
/// The Smbios structure header.
///
typedef struct {
///
/// String Number for a Null terminated string, 00h stands for no string available.
///
typedef UINT8 SMBIOS_TABLE_STRING;
///
/// BIOS Characteristics
/// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.
///
typedef struct {
///< and bits 48-63 reserved for System Vendor.
///
/// 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 {
///
/// 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 {
///
/// BIOS Characteristics Extension Bytes.
///
typedef struct {
///
/// BIOS Information (Type 0).
///
typedef struct {
///
/// System Wake-up Type.
///
typedef enum {
SystemWakeupTypeReserved = 0x00,
SystemWakeupTypeOther = 0x01,
SystemWakeupTypeUnknown = 0x02,
SystemWakeupTypeApmTimer = 0x03,
SystemWakeupTypeModemRing = 0x04,
SystemWakeupTypeLanRemote = 0x05,
SystemWakeupTypePowerSwitch = 0x06,
SystemWakeupTypePciPme = 0x07,
///
/// 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 {
///
/// Base Board - Feature Flags.
///
typedef struct {
///
/// Base Board - Board Type.
///
typedef enum {
BaseBoardTypeUnknown = 0x1,
BaseBoardTypeOther = 0x2,
BaseBoardTypeServerBlade = 0x3,
BaseBoardTypeProcessorModule = 0x6,
BaseBoardTypeIOModule = 0x7,
BaseBoardTypeMemoryModule = 0x8,
BaseBoardTypeDaughterBoard = 0x9,
BaseBoardTypeMotherBoard = 0xA,
///
/// 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 {
///
/// 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,
MiscChassisTypePeripheralChassis = 0x15,
MiscChassisTypeRaidChassis = 0x16,
MiscChassisTypeRackMountChassis = 0x17,
MiscChassisTypeSealedCasePc = 0x18,
MiscChassisMultiSystemChassis = 0x19,
MiscChassisCompactPCI = 0x1A,
MiscChassisAdvancedTCA = 0x1B,
MiscChassisBlade = 0x1C,
MiscChassisBladeEnclosure = 0x1D
///
/// System Enclosure or Chassis States .
///
typedef enum {
ChassisStateOther = 0x01,
ChassisStateUnknown = 0x02,
ChassisStateSafe = 0x03,
ChassisStateWarning = 0x04,
ChassisStateCritical = 0x05,
ChassisStateNonRecoverable = 0x06
///
/// System Enclosure or Chassis Security Status.
///
typedef enum {
ChassisSecurityStatusOther = 0x01,
ChassisSecurityStatusUnknown = 0x02,
ChassisSecurityStatusNone = 0x03,
///
/// Contained Element record
///
typedef struct {
///
/// 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 {
///
/// Processor Information - Processor Type.
///
typedef enum {
ProcessorOther = 0x01,
ProcessorUnknown = 0x02,
CentralProcessor = 0x03,
MathProcessor = 0x04,
DspProcessor = 0x05,
VideoProcessor = 0x06
///
/// 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,
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,
ProcessorFamilyIntelAtom = 0x2B,
ProcessorFamilyAlpha3 = 0x30,
ProcessorFamilyAlpha21064 = 0x31,
ProcessorFamilyAlpha21066 = 0x32,
ProcessorFamilyAlpha21164 = 0x33,
ProcessorFamilyAlpha21164PC = 0x34,
ProcessorFamilyAlpha21164a = 0x35,
ProcessorFamilyAlpha21264 = 0x36,
ProcessorFamilyAlpha21364 = 0x37,
ProcessorFamilyMips = 0x40,
ProcessorFamilyMIPSR4000 = 0x41,
ProcessorFamilyMIPSR4200 = 0x42,
ProcessorFamilyMIPSR4400 = 0x43,
ProcessorFamilyMIPSR4600 = 0x44,
ProcessorFamilyMIPSR10000 = 0x45,
ProcessorFamilyAmdCSeries = 0x46,
ProcessorFamilyAmdESeries = 0x47,
ProcessorFamilyAmdSSeries = 0x48,
ProcessorFamilyAmdGSeries = 0x49,
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,
ProcessorFamilyHobbit = 0x70,
ProcessorFamilyCrusoeTM5000 = 0x78,
ProcessorFamilyCrusoeTM3000 = 0x79,
ProcessorFamilyEfficeonTM8000 = 0x7A,
ProcessorFamilyWeitek = 0x80,
ProcessorFamilyItanium = 0x82,
ProcessorFamilyAmdAthlon64 = 0x83,
ProcessorFamilyAmdOpteron = 0x84,
ProcessorFamilyAmdSempron = 0x85,
ProcessorFamilyAmdTurion64Mobile = 0x86,
ProcessorFamilyPARISC = 0x90,
ProcessorFamilyPaRisc8500 = 0x91,
ProcessorFamilyPaRisc8000 = 0x92,
ProcessorFamilyPaRisc7300LC = 0x93,
ProcessorFamilyPaRisc7200 = 0x94,
ProcessorFamilyPaRisc7100LC = 0x95,
ProcessorFamilyPaRisc7100 = 0x96,
ProcessorFamilyV30 = 0xA0,
ProcessorFamilyQuadCoreIntelXeon = 0xAA,
ProcessorFamilyPentiumIIIXeon = 0xB0,
ProcessorFamilyPentium4 = 0xB2,
ProcessorFamilyIntelXeon = 0xB3,
ProcessorFamilyAS400 = 0xB4,
ProcessorFamilyIntelXeonMP = 0xB5,
ProcessorFamilyAMDAthlonXP = 0xB6,
ProcessorFamilyAMDAthlonMP = 0xB7,
ProcessorFamilyIntelItanium2 = 0xB8,
ProcessorFamilyIntelPentiumM = 0xB9,
ProcessorFamilyIntelCeleronD = 0xBA,
ProcessorFamilyIntelPentiumD = 0xBB,
ProcessorFamilyIntelPentiumEx = 0xBC,
ProcessorFamilyReserved = 0xBE,
ProcessorFamilyIntelCore2 = 0xBF,
ProcessorFamilyIntelCore2Solo = 0xC0,
ProcessorFamilyIntelCore2Extreme = 0xC1,
ProcessorFamilyIntelCore2Quad = 0xC2,
ProcessorFamilyIntelCoreI7 = 0xC6,
ProcessorFamilyIBM390 = 0xC8,
ProcessorFamilyG4 = 0xC9,
ProcessorFamilyG5 = 0xCA,
ProcessorFamilyG6 = 0xCB,
ProcessorFamilyzArchitectur = 0xCC,
ProcessorFamilyIntelCoreI5 = 0xCD,
ProcessorFamilyIntelCoreI3 = 0xCE,
ProcessorFamilyViaC7M = 0xD2,
ProcessorFamilyViaC7D = 0xD3,
ProcessorFamilyViaC7 = 0xD4,
ProcessorFamilyViaEden = 0xD5,
ProcessorFamilyViaNano = 0xD9,
ProcessorFamilyAmdAthlonDualCore = 0xEA,
ProcessorFamilyAmdSempronSI = 0xEB,
ProcessorFamilyAmdPhenomII = 0xEC,
ProcessorFamilyAmdAthlonII = 0xED,
ProcessorFamilySixCoreAmdOpteron = 0xEE,
ProcessorFamilyAmdSempronM = 0xEF,
ProcessorFamilyi860 = 0xFA,
ProcessorFamilyi960 = 0xFB,
ProcessorFamilyIndicatorFamily2 = 0xFE,
ProcessorFamilyReserved1 = 0xFF
///
/// Processor Information - Voltage.
///
typedef struct {
///
/// Processor Information - Processor Upgrade.
///
typedef enum {
ProcessorUpgradeOther = 0x01,
ProcessorUpgradeUnknown = 0x02,
ProcessorUpgradeDaughterBoard = 0x03,
ProcessorUpgradeZIFSocket = 0x04,
ProcessorUpgradeNone = 0x06,
ProcessorUpgradeLIFSocket = 0x07,
ProcessorUpgradeSlot1 = 0x08,
ProcessorUpgradeSlot2 = 0x09,
ProcessorUpgrade370PinSocket = 0x0A,
ProcessorUpgradeSlotA = 0x0B,
ProcessorUpgradeSlotM = 0x0C,
ProcessorUpgradeSocket423 = 0x0D,
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,
ProcessorUpgradeSocketBGA1155 = 0x24,
ProcessorUpgradeSocketLGA1356 = 0x25,
ProcessorUpgradeSocketLGA2011 = 0x26,
ProcessorUpgradeSocketFS1 = 0x27,
ProcessorUpgradeSocketFS2 = 0x28,
ProcessorUpgradeSocketFM1 = 0x29,
ProcessorUpgradeSocketFM2 = 0x2A
///
/// Processor ID Field Description
///
typedef struct {
typedef struct {
typedef struct {
///
/// Processor Information (Type 4).
///
/// The information in this structure defines the attributes of a single processor;
/// 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 {
//
// Add for smbios 2.5
//
//
// Add for smbios 2.6
//
///
/// Memory Controller Error Detecting Method.
///
typedef enum {
ErrorDetectingMethodOther = 0x01,
ErrorDetectingMethodUnknown = 0x02,
ErrorDetectingMethodNone = 0x03,
ErrorDetectingMethodParity = 0x04,
ErrorDetectingMethod32Ecc = 0x05,
ErrorDetectingMethod64Ecc = 0x06,
ErrorDetectingMethod128Ecc = 0x07,
ErrorDetectingMethodCrc = 0x08
///
/// Memory Controller Error Correcting Capability.
///
typedef struct {
///
/// Memory Controller Information - Interleave Support.
///
typedef enum {
MemoryInterleaveOther = 0x01,
MemoryInterleaveUnknown = 0x02,
MemoryInterleaveOneWay = 0x03,
MemoryInterleaveTwoWay = 0x04,
MemoryInterleaveFourWay = 0x05,
MemoryInterleaveEightWay = 0x06,
MemoryInterleaveSixteenWay = 0x07
///
/// Memory Controller Information - Memory Speeds.
///
typedef struct {
///
/// 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 {
///
/// Memory Module Information - Memory Types
///
typedef struct {
///
/// Memory Module Information - Memory Size.
///
typedef struct {
///
/// 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 {
///
/// Cache Information - SRAM Type.
///
typedef struct {
///
/// Cache Information - Error Correction Type.
///
typedef enum {
CacheErrorOther = 0x01,
CacheErrorUnknown = 0x02,
CacheErrorNone = 0x03,
CacheErrorParity = 0x04,
///
/// Cache Information - System Cache Type.
///
typedef enum {
CacheTypeOther = 0x01,
CacheTypeUnknown = 0x02,
CacheTypeInstruction = 0x03,
CacheTypeData = 0x04,
CacheTypeUnified = 0x05
///
/// 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 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 {
///
/// 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,
PortConnectorTypeOnboardIde = 0x16,
PortConnectorTypeOnboardFloppy = 0x17,
PortConnectorType9PinDualInline = 0x18,
PortConnectorType25PinDualInline = 0x19,
PortConnectorType50PinDualInline = 0x1A,
PortConnectorType68PinDualInline = 0x1B,
PortConnectorTypeBNC = 0x20,
PortConnectorType1394 = 0x21,
PortConnectorTypeSasSata = 0x22,
PortConnectorTypePC98 = 0xA0,
PortConnectorTypePC98Hireso = 0xA1,
PortConnectorTypePCH98 = 0xA2,
PortConnectorTypePC98Note = 0xA3,
PortConnectorTypePC98Full = 0xA4,
PortConnectorTypeOther = 0xFF
///
/// 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,
PortType8251Compatible = 0xA0,
PortType8251FifoCompatible = 0xA1,
PortTypeOther = 0xFF
///
/// 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 {
///
/// 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,
SlotTypeIORiserCardSlot = 0x0C,
SlotTypeNuBus = 0x0D,
SlotTypePci66MhzCapable = 0x0E,
SlotTypeAgp = 0x0F,
SlotTypeApg2X = 0x10,
SlotTypeAgp4X = 0x11,
SlotTypePciX = 0x12,
SlotTypeAgp4x = 0x13,
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
///
/// System Slots - Slot Data Bus Width.
///
typedef enum {
SlotDataBusWidthOther = 0x01,
SlotDataBusWidthUnknown = 0x02,
SlotDataBusWidth8Bit = 0x03,
SlotDataBusWidth16Bit = 0x04,
SlotDataBusWidth32Bit = 0x05,
SlotDataBusWidth64Bit = 0x06,
SlotDataBusWidth128Bit = 0x07,
///
/// System Slots - Current Usage.
///
typedef enum {
SlotUsageOther = 0x01,
SlotUsageUnknown = 0x02,
SlotUsageAvailable = 0x03,
SlotUsageInUse = 0x04
///
/// System Slots - Slot Length.
///
typedef enum {
SlotLengthOther = 0x01,
SlotLengthUnknown = 0x02,
SlotLengthShort = 0x03,
SlotLengthLong = 0x04
///
/// System Slots - Slot Characteristics 1.
///
typedef struct {
///
/// System Slots - Slot Characteristics 2.
///
typedef struct {
///
/// 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 {
//
// Add for smbios 2.6
//
///
/// 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,
///
/// Device Item Entry
///
typedef struct {
///< Bit 7 - 1 : device enabled, 0 : device disabled.
///
/// 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 {
///
/// 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 {
///
/// System Configuration Options (Type 12).
///
/// This structure contains information required to configure the base board's Jumpers and Switches.
///
typedef struct {
///
/// BIOS Language Information (Type 13).
///
/// The information in this structure defines the installable language attributes of the BIOS.
///
typedef struct {
///
/// Group Item Entry
///
typedef struct {
} 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 {
///
/// 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,
EventLogTypeEndOfLog = 0xFF
///
/// System Event Log - Variable Data Format Types.
///
typedef enum {
EventLogVariableNone = 0x00,
EventLogVariableHandle = 0x01,
EventLogVariableMutilEvent = 0x02,
EventLogVariableMutilEventHandle = 0x03,
EventLogVariablePOSTResultBitmap = 0x04,
EventLogVariableUnused = 0x07,
EventLogVariableOEMAssigned = 0x80
///
/// Event Log Type Descriptors
///
typedef struct {
///
/// 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 {
///
/// Physical Memory Array - Location.
///
typedef enum {
MemoryArrayLocationOther = 0x01,
MemoryArrayLocationUnknown = 0x02,
MemoryArrayLocationSystemBoard = 0x03,
MemoryArrayLocationIsaAddonCard = 0x04,
MemoryArrayLocationEisaAddonCard = 0x05,
MemoryArrayLocationPciAddonCard = 0x06,
MemoryArrayLocationMcaAddonCard = 0x07,
MemoryArrayLocationNuBus = 0x0A,
///
/// Physical Memory Array - Use.
///
typedef enum {
MemoryArrayUseOther = 0x01,
MemoryArrayUseUnknown = 0x02,
MemoryArrayUseSystemMemory = 0x03,
MemoryArrayUseVideoMemory = 0x04,
MemoryArrayUseFlashMemory = 0x05,
MemoryArrayUseNonVolatileRam = 0x06,
MemoryArrayUseCacheMemory = 0x07
///
/// Physical Memory Array - Error Correction Types.
///
typedef enum {
MemoryErrorCorrectionOther = 0x01,
MemoryErrorCorrectionUnknown = 0x02,
MemoryErrorCorrectionNone = 0x03,
MemoryErrorCorrectionParity = 0x04,
MemoryErrorCorrectionMultiBitEcc = 0x06,
MemoryErrorCorrectionCrc = 0x07
///
/// Physical Memory Array (Type 16).
///
/// This structure describes a collection of memory devices that operate
/// together to form a memory address space.
///
typedef struct {
//
// Add for smbios 2.7
//
///
/// 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
///
/// 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
typedef struct {
///
/// 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 {
//
// Add for smbios 2.6
//
//
// Add for smbios 2.7
//
///
/// 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
///
/// 32-bit Memory Error Information - Error Granularity.
///
typedef enum {
MemoryGranularityOther = 0x01,
MemoryGranularityOtherUnknown = 0x02,
MemoryGranularityDeviceLevel = 0x03,
///
/// 32-bit Memory Error Information - Error Operation.
///
typedef enum {
MemoryErrorOperationOther = 0x01,
MemoryErrorOperationUnknown = 0x02,
MemoryErrorOperationRead = 0x03,
MemoryErrorOperationWrite = 0x04,
///
/// 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 {
///
/// 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 {
//
// Add for smbios 2.7
//
///
/// 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 {
//
// Add for smbios 2.7
//
///
/// 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
///
/// Built-in Pointing Device - Interface.
///
typedef enum {
PointingDeviceInterfaceOther = 0x01,
PointingDeviceInterfaceUnknown = 0x02,
PointingDeviceInterfaceSerial = 0x03,
PointingDeviceInterfacePs2 = 0x04,
PointingDeviceInterfaceInfrared = 0x05,
PointingDeviceInterfaceHpHil = 0x06,
PointingDeviceInterfaceBusMouse = 0x07,
PointingDeviceInterfaceADB = 0x08,
PointingDeviceInterfaceUsb = 0xA2
///
/// 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 {
///
/// Portable Battery - Device Chemistry
///
typedef enum {
///
/// 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 {
///
/// 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 {
///
/// Hardware Security (Type 24).
///
/// This structure describes the system-wide hardware security settings.
///
typedef struct {
///
/// 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 {
///
/// Voltage Probe - Location and Status.
///
typedef struct {
///
/// Voltage Probe (Type 26)
///
/// This describes the attributes for a voltage probe in the system.
/// Each structure describes a single voltage probe.
///
typedef struct {
///
/// Cooling Device - Device Type and Status.
///
typedef struct {
///
/// 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 {
//
// Add for smbios 2.7
//
///
/// Temperature Probe - Location and Status.
///
typedef struct {
///
/// 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 {
///
/// Electrical Current Probe - Location and Status.
///
typedef struct {
///
/// 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 {
///
/// 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 {
///
/// Boot Integrity Services (BIS) Entry Point (Type 31).
///
/// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).
///
typedef struct {
///
/// System Boot Information - System Boot Status.
///
typedef enum {
BootInformationStatusNoError = 0x00,
///
/// 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 {
///
/// 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 {
///
/// 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
///
/// Management Device - Address Type.
///
typedef enum {
ManagementDeviceAddressTypeOther = 0x01,
///
/// 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 {
///
/// 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 {
///
/// 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 {
///
/// Memory Channel Entry.
///
typedef struct {
///
/// Memory Channel - Channel Type.
///
typedef enum {
MemoryChannelTypeOther = 0x01,
MemoryChannelTypeUnknown = 0x02,
MemoryChannelTypeRambus = 0x03,
MemoryChannelTypeSyncLink = 0x04
///
/// 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 {
///
/// IPMI Device Information - BMC Interface Type
///
typedef enum {
///
/// 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 {
///
/// System Power Supply - Power Supply Characteristics.
///
typedef struct {
///
/// 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 {
///
/// Additional Information Entry Format.
///
typedef struct {
///
/// 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 {
///
/// Onboard Devices Extended Information - Onboard Device Types.
///
typedef enum{
OnBoardDeviceExtendedTypeOther = 0x01,
OnBoardDeviceExtendedTypeUnknown = 0x02,
OnBoardDeviceExtendedTypeVideo = 0x03,
OnBoardDeviceExtendedTypeSound = 0x07,
///
/// 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 {
///
/// 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 {
///
/// Inactive (Type 126)
///
typedef struct {
///
/// End-of-Table (Type 127)
///
typedef struct {
///
/// Union of all the possible SMBIOS record types.
///
typedef union {
#pragma pack()
#endif