xref: /reactos/sdk/lib/dmilib/dmi.h (revision 4561998a)
1 /*
2  * PROJECT:     ReactOS DMI/SMBIOS Library
3  * LICENSE:     GPL - See COPYING in the top level directory
4  * FILE:        dmi.h
5  * PURPOSE:     SMBIOS table parsing functions
6  * PROGRAMMERS: Timo Kreuzer (timo.kreuzer@reactos.org)
7  */
8 
9 #pragma once
10 
11 enum DMI_DEVICE_TYPE
12 {
13     DMI_DEV_TYPE_ANY = 0,
14     DMI_DEV_TYPE_OTHER,
15     DMI_DEV_TYPE_UNKNOWN,
16     DMI_DEV_TYPE_VIDEO,
17     DMI_DEV_TYPE_SCSI,
18     DMI_DEV_TYPE_ETHERNET,
19     DMI_DEV_TYPE_TOKENRING,
20     DMI_DEV_TYPE_SOUND,
21     DMI_DEV_TYPE_PATA,
22     DMI_DEV_TYPE_SATA,
23     DMI_DEV_TYPE_SAS,
24     DMI_DEV_TYPE_IPMI = -1,
25     DMI_DEV_TYPE_OEM_STRING = -2,
26     DMI_DEV_TYPE_DEV_ONBOARD = -3,
27 };
28 
29 enum DMI_ENTRY_TYPE
30 {
31     DMI_ENTRY_BIOS = 0,
32     DMI_ENTRY_SYSTEM = 1,
33     DMI_ENTRY_BASEBOARD = 2,
34     DMI_ENTRY_CHASSIS = 3,
35     DMI_ENTRY_PROCESSOR = 4,
36     DMI_ENTRY_MEM_CONTROLLER = 5,
37     DMI_ENTRY_MEM_MODULE = 6,
38     DMI_ENTRY_CACHE = 7,
39     DMI_ENTRY_PORT_CONNECTOR = 8,
40     DMI_ENTRY_SYSTEM_SLOT = 9,
41     DMI_ENTRY_ONBOARD_DEVICE = 10,
42     DMI_ENTRY_OEMSTRINGS = 11,
43     DMI_ENTRY_SYSCONF = 12,
44     DMI_ENTRY_BIOS_LANG = 13,
45     DMI_ENTRY_GROUP_ASSOC = 14,
46     DMI_ENTRY_SYSTEM_EVENT_LOG = 15,
47     DMI_ENTRY_PHYS_MEM_ARRAY = 16,
48     DMI_ENTRY_MEM_DEVICE = 17,
49     DMI_ENTRY_32_MEM_ERROR = 18,
50     DMI_ENTRY_MEM_ARRAY_MAPPED_ADDR = 19,
51     DMI_ENTRY_MEM_DEV_MAPPED_ADDR = 20,
52     DMI_ENTRY_BUILTIN_POINTING_DEV,
53     DMI_ENTRY_PORTABLE_BATTERY,
54     DMI_ENTRY_SYSTEM_RESET,
55     DMI_ENTRY_HW_SECURITY,
56     DMI_ENTRY_SYSTEM_POWER_CONTROLS = 25,
57     DMI_ENTRY_VOLTAGE_PROBE,
58     DMI_ENTRY_COOLING_DEV,
59     DMI_ENTRY_TEMP_PROBE,
60     DMI_ENTRY_ELECTRICAL_CURRENT_PROBE,
61     DMI_ENTRY_OOB_REMOTE_ACCESS = 30,
62     DMI_ENTRY_BIS_ENTRY,
63     DMI_ENTRY_SYSTEM_BOOT = 32,
64     DMI_ENTRY_MGMT_DEV,
65     DMI_ENTRY_MGMT_DEV_COMPONENT,
66     DMI_ENTRY_MGMT_DEV_THRES = 35,
67     DMI_ENTRY_MEM_CHANNEL = 36,
68     DMI_ENTRY_IPMI_DEV = 37,
69     DMI_ENTRY_SYS_POWER_SUPPLY = 38,
70     DMI_ENTRY_ADDITIONAL = 39,
71     DMI_ENTRY_ONBOARD_DEV_EXT = 40,
72     DMI_ENTRY_MGMT_CONTROLLER_HOST = 41,
73     DMI_ENTRY_INACTIVE = 126,
74     DMI_ENTRY_END_OF_TABLE = 127,
75 };
76 
77 enum _DMI_FIELD_OFFSETS
78 {
79     /* Type = 0: DMI_ENTRY_BIOS */
80     DMI_BIOS_VENDOR = 0x04,
81     DMI_BIOS_VERSION = 0x05,
82     DMI_BIOS_DATE = 0x08,
83     DMI_BIOS_SIZE = 0x14,
84 
85     /* Type = 1: DMI_ENTRY_SYSTEM */
86     DMI_SYS_VENDOR = 0x04,
87     DMI_SYS_PRODUCT = 0x05,
88     DMI_SYS_VERSION = 0x06,
89     DMI_SYS_SERIAL = 0x07,
90     DMI_SYS_SKU = 0x19,
91     DMI_SYS_FAMILY = 0x1a,
92     DMI_SYS_SIZE = 0x1b,
93 
94     /* Type = 2: DMI_ENTRY_BASEBOARD */
95     DMI_BOARD_VENDOR = 0x04,
96     DMI_BOARD_NAME = 0x05,
97     DMI_BOARD_VERSION = 0x06,
98     DMI_BOARD_SERIAL = 0x07,
99     DMI_BOARD_ASSET_TAG = 0x08,
100     DMI_BOARD_SIZE = 0x10,
101 
102 
103 };
104 
105 typedef struct _DMI_HEADER
106 {
107  	UCHAR Type;
108  	UCHAR Length;
109  	USHORT Handle;
110 } DMI_HEADER, *PDMI_HEADER;
111 
112