test: smbios.h Source File

Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

# smbios.h

Go to the documentation of this file.

    00001 /*++
    00002
    00003 Copyright (c) 1998  Microsoft Corporation
    00004
    00005 Module Name:
    00006
    00007     smbios.h
    00008
    00009 Abstract:
    00010
    00011     This module contains definitions that describe SMBIOS
    00012
    00013 Author:
    00014
    00015     Alan Warwick (AlanWar) 12-Feb-1998
    00016
    00017
    00018 Revision History:
    00019
    00020
    00021 --*/
    00022
    00023 #ifndef _SMBIOS_
    00024 #define _SMBIOS_
    00025
    00026 //
    00027 // SMBIOS error codes
    00028 #define DMI_SUCCESS 0x00
    00029 #define DMI_UNKNOWN_FUNCTION 0x81
    00030 #define DMI_FUNCTION_NOT_SUPPORTED 0x82
    00031 #define DMI_INVALID_HANDLE 0x83
    00032 #define DMI_BAD_PARAMETER 0x84
    00033 #define DMI_INVALID_SUBFUNCTION 0x85
    00034 #define DMI_NO_CHANGE 0x86
    00035 #define DMI_ADD_STRUCTURE_FAILED 0x87
    00036
    00037 // @@BEGIN_DDKSPLIT
    00038
    00039 //
    00040 // SMBIOS registry values
    00041 #define SMBIOSPARENTKEYNAME L"\\Registry\\Machine\\Hardware\\Description\\System\\MultifunctionAdapter"
    00042
    00043 #define SMBIOSIDENTIFIERVALUENAME L"Identifier"
    00044 #define SMBIOSIDENTIFIERVALUEDATA L"PNP BIOS"
    00045 #define SMBIOSDATAVALUENAME             L"Configuration Data"
    00046
    00047 #define MAXSMBIOSKEYNAMESIZE 256
    00048
    00049 // @@END_DDKSPLIT
    00050
    00051 //
    00052 // SMBIOS table search
    00053 #define SMBIOS_EPS_SEARCH_SIZE      0x10000
    00054 #define SMBIOS_EPS_SEARCH_START     0x000f0000
    00055 #define SMBIOS_EPS_SEARCH_INCREMENT 0x10
    00056
    00057 #pragma pack(push, 1)
    00058 typedef struct _SMBIOS_TABLE_HEADER
    00059 {
    00060     UCHAR Signature[4];             // _SM_ (ascii)
    00061     UCHAR Checksum;
    00062     UCHAR Length;
    00063     UCHAR MajorVersion;
    00064     UCHAR MinorVersion;
    00065     USHORT MaximumStructureSize;
    00066     UCHAR EntryPointRevision;
    00067     UCHAR Reserved[5];
    00068     UCHAR Signature2[5];           // _DMI_ (ascii)
    00069     UCHAR IntermediateChecksum;
    00070     USHORT StructureTableLength;
    00071     ULONG StructureTableAddress;
    00072     USHORT NumberStructures;
    00073     UCHAR Revision;
    00074 } SMBIOS_EPS_HEADER, *PSMBIOS_EPS_HEADER;
    00075
    00076 #define SMBIOS_EPS_SIGNATURE '_MS_'
    00077 #define DMI_EPS_SIGNATURE    'IMD_'
    00078
    00079 typedef struct _SMBIOS_STRUCT_HEADER
    00080 {
    00081     UCHAR Type;
    00082     UCHAR Length;
    00083     USHORT Handle;
    00084     UCHAR Data[];
    00085 } SMBIOS_STRUCT_HEADER, *PSMBIOS_STRUCT_HEADER;
    00086
    00087
    00088 typedef struct _DMIBIOS_TABLE_HEADER
    00089 {
    00090     UCHAR Signature2[5];           // _DMI_ (ascii)
    00091     UCHAR IntermediateChecksum;
    00092     USHORT StructureTableLength;
    00093     ULONG StructureTableAddress;
    00094     USHORT NumberStructures;
    00095     UCHAR Revision;
    00096 } DMIBIOS_EPS_HEADER, *PDMIBIOS_EPS_HEADER;
    00097
    00098 //
    00099 // SMBIOS table search
    00100 #define SYSID_EPS_SEARCH_SIZE      0x20000
    00101 #define SYSID_EPS_SEARCH_START     0x000e0000
    00102 #define SYSID_EPS_SEARCH_INCREMENT 0x10
    00103
    00104 typedef struct _SYSID_EPS_HEADER
    00105 {
    00106     UCHAR Signature[7];           // _SYSID_ (ascii)
    00107     UCHAR Checksum;
    00108     USHORT Length;                // Length of SYSID_EPS_HEADER
    00109     ULONG SysIdTableAddress;      // Physical Address of SYSID table
    00110     USHORT SysIdCount;            // Count of SYSIDs in table
    00111     UCHAR BiosRev;                // SYSID Bios revision
    00112 } SYSID_EPS_HEADER, *PSYSID_EPS_HEADER;
    00113
    00114 typedef struct _SYSID_TABLE_ENTRY
    00115 {
    00116         UCHAR Type[6];                // _UUID_ or _1394_ (ascii)
    00117     UCHAR Checksum;
    00118     USHORT Length;                // Length of this table
    00119     UCHAR Data[1];                // Variable length UUID/1394 data
    00120 } SYSID_TABLE_ENTRY, *PSYSID_TABLE_ENTRY;
    00121
    00122 #define SYSID_UUID_DATA_SIZE 16
    00123
    00124 typedef struct _SYSID_UUID_ENTRY
    00125 {
    00126         UCHAR Type[6];                // _UUID_ (ascii)
    00127     UCHAR Checksum;
    00128     USHORT Length;                // Length of this table
    00129     UCHAR UUID[SYSID_UUID_DATA_SIZE];  // UUID
    00130 } SYSID_UUID_ENTRY, *PSYSID_UUID_ENTRY;
    00131
    00132 #define SYSID_1394_DATA_SIZE 8
    00133
    00134 typedef struct _SYSID_1394_ENTRY
    00135 {
    00136         UCHAR Type[6];                // _1394_ (ascii)
    00137     UCHAR Checksum;
    00138     USHORT Length;                // Length of this table
    00139     UCHAR x1394Id[SYSID_1394_DATA_SIZE]; // 1394 ID
    00140 } SYSID_1394_ENTRY, *PSYSID_1394_ENTRY;
    00141
    00142 #define LARGEST_SYSID_TABLE_ENTRY (sizeof(SYSID_UUID_ENTRY))
    00143
    00144 #define SYSID_TYPE_UUID "_UUID_"
    00145 #define SYSID_TYPE_1394 "_1394_"
    00146
    00147 #pragma pack(pop)
    00148 #endif