[KERNEL32] Implement System Firmware functions
[reactos.git] / sdk / lib / dmilib / dmi.h
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_SIZE = 0x1b,
91
92 /* Type = 2: DMI_ENTRY_BASEBOARD */
93 DMI_BOARD_VENDOR = 0x04,
94 DMI_BOARD_NAME = 0x05,
95 DMI_BOARD_VERSION = 0x06,
96 DMI_BOARD_SERIAL = 0x07,
97 DMI_BOARD_ASSET_TAG = 0x08,
98 DMI_BOARD_SIZE = 0x10,
99
100
101 };
102
103 typedef struct _DMI_HEADER
104 {
105 UCHAR Type;
106 UCHAR Length;
107 USHORT Handle;
108 } DMI_HEADER, *PDMI_HEADER;
109