2 * PROJECT: ReactOS Kernel
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: ntoskrnl/include/internal/hdl.h
5 * PURPOSE: Internal header for the Configuration Manager
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 #include <cportlib/cportlib.h>
10 #include <ndk/extypes.h>
13 // Define this if you want debugging support
15 #define _HDL_DEBUG_ 0x00
18 // These define the Debug Masks Supported
20 #define HDL_XXX_DEBUG 0x01
23 // Debug/Tracing support
26 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
27 #define HDLTRACE DbgPrintEx
29 #define HDLTRACE(x, ...) \
30 if (x & HdlpTraceLevel) DbgPrint(__VA_ARGS__)
33 #define HDLTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
37 // Well-known messages that Io and Pnp post to the kernel log
39 typedef enum _HEADLESS_LOG_MESSAGE
41 HeadlessLogDriverLoad
= 1,
42 HeadlessLogDriverSuccess
,
43 HeadlessLogDriverFailed
,
44 HeadlessLogEventFailed
,
45 HeadlessLogObjectFailed
,
46 HeadlessLogDirectoryFailed
,
48 HeadlessLogPnpFailed2
,
49 HeadlessLogBootDriversFailed
,
50 HeadlessLogNtdllFailed
,
51 HeadlessLogSystemDriversFailed
,
52 HeadlessLogReassignSystemRootFailed
,
53 HeadlessLogProtectSystemRootFailed
,
54 HeadlessLogConvertSystemRootFailed
,
55 HeadlessLogConvertDeviceNameFailed
,
56 HeadlessLogGroupOrderListFailed
,
57 HeadlessLogGroupTableFailed
59 // There are more, but not applicable to ReactOS, I believe
61 } HEADLESS_LOG_MESSAGE
;
66 typedef struct _HEADLESS_LOG_ENTRY
68 SYSTEM_TIMEOFDAY_INFORMATION TimeOfEntry
;
70 } HEADLESS_LOG_ENTRY
, *PHEADLESS_LOG_ENTRY
;
73 // Headless Bugcheck Information
75 typedef struct _HEADLESS_CMD_SET_BLUE_SCREEN_DATA
78 UCHAR Data
[ANYSIZE_ARRAY
];
79 } HEADLESS_CMD_SET_BLUE_SCREEN_DATA
, *PHEADLESS_CMD_SET_BLUE_SCREEN_DATA
;
82 // Headless Control Structure, mostly for !SAC
84 typedef struct _HEADLESS_GLOBALS
87 HANDLE PageLockHandle
;
88 PHEADLESS_LOG_ENTRY LogEntries
;
91 PHEADLESS_CMD_SET_BLUE_SCREEN_DATA BlueScreenData
;
96 ULONG TerminalEnabled
:1;
98 ULONG NewLogEntryAdded
:1;
99 ULONG UsedBiosSettings
:1;
100 ULONG InputProcessing
:1;
101 ULONG InputLineDone
:1;
102 ULONG ProcessingCmd
:1;
103 ULONG TerminalParity
:1;
104 ULONG TerminalStopBits
:1;
105 ULONG TerminalPortNumber
:3;
106 ULONG IsNonLegacyDevice
:1;
110 ULONG TerminalBaudRate
;
112 PUCHAR TerminalPortAddress
;
113 LARGE_INTEGER DelayTime
;
114 ULONG MicroSecondsDelayTime
;
116 SIZE_T InputBufferIndex
;
118 USHORT LogEntryStart
;
120 BOOLEAN IsMMIODevice
;
121 BOOLEAN IsLastCharCR
;
122 } HEADLESS_GLOBALS
, *PHEADLESS_GLOBALS
;
125 // FIXME: A public header in the NDK? Ask Alex
127 typedef enum _HEADLESS_CMD
129 HeadlessCmdEnableTerminal
= 1,
130 HeadlessCmdCheckForReboot
,
131 HeadlessCmdPutString
,
132 HeadlessCmdClearDisplay
,
133 HeadlessCmdClearToEndOfDisplay
,
134 HeadlessCmdClearToEndOfLine
,
135 HeadlessCmdDisplayAttributesOff
,
136 HeadlessCmdDisplayInverseVideo
,
138 HeadlessCmdPositionCursor
,
139 HeadlessCmdTerminalPoll
,
142 HeadlessCmdStartBugCheck
,
143 HeadlessCmdDoBugCheckProcessing
,
144 HeadlessCmdQueryInformation
,
145 HeadlessCmdAddLogEntry
,
146 HeadlessCmdDisplayLog
,
147 HeadlessCmdSetBlueScreenData
,
148 HeadlessCmdSendBlueScreenData
,
149 HeadlessCmdQueryGUID
,
151 } HEADLESS_CMD
, *PHEADLESS_CMD
;
153 typedef enum _HEADLESS_TERM_PORT_TYPE
155 HeadlessUndefinedPortType
= 0,
157 } HEADLESS_TERM_PORT_TYPE
, *PHEADLESS_TERM_PORT_TYPE
;
159 typedef enum _HEADLESS_TERM_SERIAL_PORT
161 SerialPortUndefined
= 0,
166 } HEADLESS_TERM_SERIAL_PORT
, *PHEADLESS_TERM_SERIAL_PORT
;
168 typedef struct _HEADLESS_RSP_QUERY_INFO
170 HEADLESS_TERM_PORT_TYPE PortType
;
175 BOOLEAN TerminalAttached
;
176 BOOLEAN UsedBiosSettings
;
177 HEADLESS_TERM_SERIAL_PORT TerminalPort
;
178 PUCHAR TerminalPortBaseAddress
;
179 ULONG TerminalBaudRate
;
183 } HEADLESS_RSP_QUERY_INFO
, *PHEADLESS_RSP_QUERY_INFO
;
185 typedef struct _HEADLESS_CMD_ENABLE_TERMINAL
188 } HEADLESS_CMD_ENABLE_TERMINAL
, *PHEADLESS_CMD_ENABLE_TERMINAL
;
190 typedef struct _HEADLESS_CMD_PUT_STRING
193 } HEADLESS_CMD_PUT_STRING
, *PHEADLESS_CMD_PUT_STRING
;
195 typedef struct _HEADLESS_CMD_SET_COLOR
199 } HEADLESS_CMD_SET_COLOR
, *PHEADLESS_CMD_SET_COLOR
;
201 typedef struct _HEADLESS_CMD_POSITION_CURSOR
205 } HEADLESS_CMD_POSITION_CURSOR
, *PHEADLESS_CMD_POSITION_CURSOR
;
207 typedef struct _HEADLESS_RSP_GET_BYTE
210 } HEADLESS_RSP_GET_BYTE
, *PHEADLESS_RSP_GET_BYTE
;
215 IN HEADLESS_CMD Command
,
216 IN PVOID InputBuffer
,
217 IN SIZE_T InputBufferSize
,
218 OUT PVOID OutputBuffer
,
219 OUT PSIZE_T OutputBufferSize
223 // Global variables accessible from all of Hdl
225 extern PHEADLESS_GLOBALS HeadlessGlobals
;