ReactOS 0.4.16-dev-329-g9223134
dmilib.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  _ID_STRINGS {
  ID_NONE = 0 , BIOS_VENDOR , BIOS_VERSION , BIOS_DATE ,
  SYS_VENDOR , SYS_PRODUCT , SYS_VERSION , SYS_SERIAL ,
  SYS_SKU , SYS_FAMILY , BOARD_VENDOR , BOARD_NAME ,
  BOARD_VERSION , BOARD_SERIAL , BOARD_ASSET_TAG , ID_STRINGS_MAX
}
 

Functions

VOID ParseSMBiosTables (_In_reads_bytes_(TableSize) PVOID SMBiosTables, _In_ ULONG TableSize, _Inout_updates_(ID_STRINGS_MAX) PCHAR *Strings)
 

Enumeration Type Documentation

◆ _ID_STRINGS

Enumerator
ID_NONE 
BIOS_VENDOR 
BIOS_VERSION 
BIOS_DATE 
SYS_VENDOR 
SYS_PRODUCT 
SYS_VERSION 
SYS_SERIAL 
SYS_SKU 
SYS_FAMILY 
BOARD_VENDOR 
BOARD_NAME 
BOARD_VERSION 
BOARD_SERIAL 
BOARD_ASSET_TAG 
ID_STRINGS_MAX 

Definition at line 10 of file dmilib.h.

11{
12 ID_NONE = 0,
20 SYS_SKU,
27
29};
@ BIOS_VERSION
Definition: dmilib.h:14
@ BOARD_VENDOR
Definition: dmilib.h:22
@ SYS_VERSION
Definition: dmilib.h:18
@ SYS_PRODUCT
Definition: dmilib.h:17
@ ID_STRINGS_MAX
Definition: dmilib.h:28
@ BOARD_ASSET_TAG
Definition: dmilib.h:26
@ BIOS_DATE
Definition: dmilib.h:15
@ SYS_VENDOR
Definition: dmilib.h:16
@ BIOS_VENDOR
Definition: dmilib.h:13
@ BOARD_NAME
Definition: dmilib.h:23
@ BOARD_VERSION
Definition: dmilib.h:24
@ BOARD_SERIAL
Definition: dmilib.h:25
@ ID_NONE
Definition: dmilib.h:12
@ SYS_SERIAL
Definition: dmilib.h:19
@ SYS_FAMILY
Definition: dmilib.h:21
@ SYS_SKU
Definition: dmilib.h:20

Function Documentation

◆ ParseSMBiosTables()

VOID ParseSMBiosTables ( _In_reads_bytes_(TableSize) PVOID  SMBiosTables,
_In_ ULONG  TableSize,
_Inout_updates_(ID_STRINGS_MAX) PCHAR Strings 
)

Definition at line 41 of file dmilib.c.

45{
46 PMSSmBios_RawSMBiosTables BiosTablesHeader = SMBiosTables;
48 ULONG Remaining;
49 PCHAR Data;
50
51 Header = (PDMI_HEADER)(&BiosTablesHeader->SMBiosData);
52 Remaining = BiosTablesHeader->Size;
53
54 while (Remaining >= sizeof(*Header))
55 {
56 if (Header->Type == DMI_ENTRY_END_OF_TABLE)
57 break;
58
59 switch (Header->Type)
60 {
61 case DMI_ENTRY_BIOS:
62 if (Remaining < DMI_BIOS_SIZE)
63 return;
67 break;
68
70 if (Remaining < DMI_SYS_SIZE)
71 return;
78 break;
79
81 if (Remaining < DMI_BOARD_SIZE)
82 return;
88 break;
89
93 // DMI_ENTRY_IPMI_DEV?
94 // DMI_ENTRY_ONBOARD_DEV_EXT?
95 break;
96 }
97
98 Remaining -= Header->Length;
99 Data = (PCHAR)Header + Header->Length;
100
101 /* Now loop until we find 2 zeroes */
102 while ((Remaining >= 2) && ((Data[0] != 0) || (Data[1] != 0)))
103 {
104 Data++;
105 Remaining--;
106 }
107
108 if (Remaining < 2)
109 break;
110
111 /* Go to the next header */
112 Remaining -= 2;
113 Header = (PDMI_HEADER)((PUCHAR)Data + 2);
114 }
115}
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
Definition: Header.h:9
static const WCHAR Strings[]
Definition: reg.c:35
@ DMI_BOARD_ASSET_TAG
Definition: dmi.h:99
@ DMI_SYS_SIZE
Definition: dmi.h:92
@ DMI_BOARD_VERSION
Definition: dmi.h:97
@ DMI_BIOS_VERSION
Definition: dmi.h:81
@ DMI_BIOS_DATE
Definition: dmi.h:82
@ DMI_BOARD_NAME
Definition: dmi.h:96
@ DMI_BOARD_SERIAL
Definition: dmi.h:98
@ DMI_SYS_VENDOR
Definition: dmi.h:86
@ DMI_SYS_VERSION
Definition: dmi.h:88
@ DMI_BIOS_SIZE
Definition: dmi.h:83
@ DMI_SYS_SKU
Definition: dmi.h:90
@ DMI_BOARD_SIZE
Definition: dmi.h:100
@ DMI_SYS_PRODUCT
Definition: dmi.h:87
@ DMI_BOARD_VENDOR
Definition: dmi.h:95
@ DMI_SYS_FAMILY
Definition: dmi.h:91
@ DMI_SYS_SERIAL
Definition: dmi.h:89
@ DMI_BIOS_VENDOR
Definition: dmi.h:80
@ DMI_ENTRY_END_OF_TABLE
Definition: dmi.h:74
@ DMI_ENTRY_OEMSTRINGS
Definition: dmi.h:42
@ DMI_ENTRY_ONBOARD_DEVICE
Definition: dmi.h:41
@ DMI_ENTRY_BIOS
Definition: dmi.h:31
@ DMI_ENTRY_BASEBOARD
Definition: dmi.h:33
@ DMI_ENTRY_SYSTEM
Definition: dmi.h:32
@ DMI_ENTRY_CHASSIS
Definition: dmi.h:34
struct _DMI_HEADER * PDMI_HEADER
static PCHAR GetDmiString(_In_ PDMI_HEADER Header, _In_ ULONG FieldOffset)
Definition: dmilib.c:14
#define PCHAR
Definition: match.c:90
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
char * PCHAR
Definition: typedefs.h:51

Referenced by i8042ParseSMBiosTables(), and LoadSMBiosData().