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>
12 // Define this if you want debugging support
14 #define _HDL_DEBUG_ 0x00
17 // These define the Debug Masks Supported
19 #define HDL_XXX_DEBUG 0x01
22 // Debug/Tracing support
25 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
26 #define HDLTRACE DbgPrintEx
28 #define HDLTRACE(x, ...) \
29 if (x & HdlpTraceLevel) DbgPrint(__VA_ARGS__)
32 #define HDLTRACE(x, ...) DPRINT(__VA_ARGS__)
36 // Well-known messages that Io and Pnp post to the kernel log
38 typedef enum _HEADLESS_LOG_MESSAGE
40 HeadlessLogDriverLoad
= 1,
41 HeadlessLogDriverSuccess
,
42 HeadlessLogDriverFailed
,
43 HeadlessLogEventFailed
,
44 HeadlessLogObjectFailed
,
45 HeadlessLogDirectoryFailed
,
47 HeadlessLogPnpFailed2
,
48 HeadlessLogBootDriversFailed
,
49 HeadlessLogNtdllFailed
,
50 HeadlessLogSystemDriversFailed
,
51 HeadlessLogReassignSystemRootFailed
,
52 HeadlessLogProtectSystemRootFailed
,
53 HeadlessLogConvertSystemRootFailed
,
54 HeadlessLogConvertDeviceNameFailed
,
55 HeadlessLogGroupOrderListFailed
,
56 HeadlessLogGroupTableFailed
58 // There are more, but not applicable to ReactOS, I believe
60 } HEADLESS_LOG_MESSAGE
;
65 typedef struct _HEADLESS_LOG_ENTRY
67 SYSTEM_TIMEOFDAY_INFORMATION TimeOfEntry
;
69 } HEADLESS_LOG_ENTRY
, *PHEADLESS_LOG_ENTRY
;
72 // Headless Bugcheck Information
74 typedef struct _HEADLESS_BLUE_SCREEN_DATA
78 struct _HEADLESS_BLUE_SCREEN_DATA
*Next
;
79 } HEADLESS_BLUE_SCREEN_DATA
, * PHEADLESS_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_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 struct _HEADLESS_CMD_PUT_STRING
156 } HEADLESS_CMD_PUT_STRING
, *PHEADLESS_CMD_PUT_STRING
;
161 IN HEADLESS_CMD Command
,
162 IN PVOID InputBuffer
,
163 IN SIZE_T InputBufferSize
,
164 OUT PVOID OutputBuffer
,
165 OUT PSIZE_T OutputBufferSize
169 // Global variables accessible from all of Hdl
171 extern PHEADLESS_GLOBALS HeadlessGlobals
;