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_BLUE_SCREEN_DATA
79 struct _HEADLESS_BLUE_SCREEN_DATA
*Next
;
80 } HEADLESS_BLUE_SCREEN_DATA
, * PHEADLESS_BLUE_SCREEN_DATA
;
83 // Headless Control Structure, mostly for !SAC
85 typedef struct _HEADLESS_GLOBALS
88 HANDLE PageLockHandle
;
89 PHEADLESS_LOG_ENTRY LogEntries
;
92 PHEADLESS_BLUE_SCREEN_DATA BlueScreenData
;
97 ULONG TerminalEnabled
:1;
99 ULONG NewLogEntryAdded
:1;
100 ULONG UsedBiosSettings
:1;
101 ULONG InputProcessing
:1;
102 ULONG InputLineDone
:1;
103 ULONG ProcessingCmd
:1;
104 ULONG TerminalParity
:1;
105 ULONG TerminalStopBits
:1;
106 ULONG TerminalPortNumber
:3;
107 ULONG IsNonLegacyDevice
:1;
111 ULONG TerminalBaudRate
;
113 PUCHAR TerminalPortAddress
;
114 LARGE_INTEGER DelayTime
;
115 ULONG MicroSecondsDelayTime
;
117 SIZE_T InputBufferIndex
;
119 USHORT LogEntryStart
;
121 BOOLEAN IsMMIODevice
;
122 BOOLEAN IsLastCharCR
;
123 } HEADLESS_GLOBALS
, *PHEADLESS_GLOBALS
;
126 // FIXME: A public header in the NDK? Ask Alex
128 typedef enum _HEADLESS_CMD
130 HeadlessCmdEnableTerminal
= 1,
131 HeadlessCmdCheckForReboot
,
132 HeadlessCmdPutString
,
133 HeadlessCmdClearDisplay
,
134 HeadlessCmdClearToEndOfDisplay
,
135 HeadlessCmdClearToEndOfLine
,
136 HeadlessCmdDisplayAttributesOff
,
137 HeadlessCmdDisplayInverseVideo
,
139 HeadlessCmdPositionCursor
,
140 HeadlessCmdTerminalPoll
,
143 HeadlessCmdStartBugCheck
,
144 HeadlessCmdDoBugCheckProcessing
,
145 HeadlessCmdQueryInformation
,
146 HeadlessCmdAddLogEntry
,
147 HeadlessCmdDisplayLog
,
148 HeadlessCmdSetBlueScreenData
,
149 HeadlessCmdSendBlueScreenData
,
150 HeadlessCmdQueryGUID
,
152 } HEADLESS_CMD
, *PHEADLESS_CMD
;
154 typedef enum _HEADLESS_TERM_PORT_TYPE
156 HeadlessUndefinedPortType
= 0,
158 } HEADLESS_TERM_PORT_TYPE
, *PHEADLESS_TERM_PORT_TYPE
;
160 typedef enum _HEADLESS_TERM_SERIAL_PORT
162 SerialPortUndefined
= 0,
167 } HEADLESS_TERM_SERIAL_PORT
, *PHEADLESS_TERM_SERIAL_PORT
;
169 typedef struct _HEADLESS_RSP_QUERY_INFO
171 HEADLESS_TERM_PORT_TYPE PortType
;
176 BOOLEAN TerminalAttached
;
177 BOOLEAN UsedBiosSettings
;
178 HEADLESS_TERM_SERIAL_PORT TerminalPort
;
179 PUCHAR TerminalPortBaseAddress
;
180 ULONG TerminalBaudRate
;
184 } HEADLESS_RSP_QUERY_INFO
, *PHEADLESS_RSP_QUERY_INFO
;
186 typedef struct _HEADLESS_CMD_PUT_STRING
189 } HEADLESS_CMD_PUT_STRING
, *PHEADLESS_CMD_PUT_STRING
;
194 IN HEADLESS_CMD Command
,
195 IN PVOID InputBuffer
,
196 IN SIZE_T InputBufferSize
,
197 OUT PVOID OutputBuffer
,
198 OUT PSIZE_T OutputBufferSize
202 // Global variables accessible from all of Hdl
204 extern PHEADLESS_GLOBALS HeadlessGlobals
;