ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

hdl.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         BSD - See COPYING.ARM in the top level directory
00004  * FILE:            ntoskrnl/include/internal/hdl.h
00005  * PURPOSE:         Internal header for the Configuration Manager
00006  * PROGRAMMERS:     ReactOS Portable Systems Group
00007  */
00008 #define _HDL_
00009 #include <cportlib/cportlib.h>
00010 #include <ndk/extypes.h>
00011 
00012 //
00013 // Define this if you want debugging support
00014 //
00015 #define _HDL_DEBUG_                                     0x00
00016 
00017 //
00018 // These define the Debug Masks Supported
00019 //
00020 #define HDL_XXX_DEBUG                                   0x01
00021 
00022 //
00023 // Debug/Tracing support
00024 //
00025 #if _HDL_DEBUG_
00026 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
00027 #define HDLTRACE DbgPrintEx
00028 #else
00029 #define HDLTRACE(x, ...)                                 \
00030     if (x & HdlpTraceLevel) DbgPrint(__VA_ARGS__)
00031 #endif
00032 #else
00033 #define HDLTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
00034 #endif
00035 
00036 //
00037 // Well-known messages that Io and Pnp post to the kernel log
00038 //
00039 typedef enum _HEADLESS_LOG_MESSAGE
00040 {
00041     HeadlessLogDriverLoad = 1,
00042     HeadlessLogDriverSuccess,
00043     HeadlessLogDriverFailed,
00044     HeadlessLogEventFailed,
00045     HeadlessLogObjectFailed,
00046     HeadlessLogDirectoryFailed,
00047     HeadlessLogPnpFailed,
00048     HeadlessLogPnpFailed2,
00049     HeadlessLogBootDriversFailed,
00050     HeadlessLogNtdllFailed,
00051     HeadlessLogSystemDriversFailed,
00052     HeadlessLogReassignSystemRootFailed,
00053     HeadlessLogProtectSystemRootFailed,
00054     HeadlessLogConvertSystemRootFailed,
00055     HeadlessLogConvertDeviceNameFailed,
00056     HeadlessLogGroupOrderListFailed,
00057     HeadlessLogGroupTableFailed
00058     //
00059     // There are more, but not applicable to ReactOS, I believe
00060     //
00061 } HEADLESS_LOG_MESSAGE;
00062 
00063 //
00064 // Headless Log Entry
00065 //
00066 typedef struct _HEADLESS_LOG_ENTRY
00067 {
00068     SYSTEM_TIMEOFDAY_INFORMATION TimeOfEntry;
00069     PWCHAR String;
00070 } HEADLESS_LOG_ENTRY, *PHEADLESS_LOG_ENTRY;
00071 
00072 //
00073 // Headless Bugcheck Information
00074 //
00075 typedef struct _HEADLESS_BLUE_SCREEN_DATA
00076 {
00077     PUCHAR Property;
00078     PUCHAR XMLData;
00079     struct _HEADLESS_BLUE_SCREEN_DATA *Next;
00080 } HEADLESS_BLUE_SCREEN_DATA, * PHEADLESS_BLUE_SCREEN_DATA;
00081 
00082 //
00083 // Headless Control Structure, mostly for !SAC
00084 //
00085 typedef struct _HEADLESS_GLOBALS
00086 {
00087     KSPIN_LOCK SpinLock;
00088     HANDLE PageLockHandle;
00089     PHEADLESS_LOG_ENTRY LogEntries;
00090     PUCHAR TmpBuffer;
00091     PUCHAR InputBuffer;
00092     PHEADLESS_BLUE_SCREEN_DATA BlueScreenData;
00093     union
00094     {
00095         struct
00096         {
00097             ULONG TerminalEnabled:1;
00098             ULONG InBugCheck:1;
00099             ULONG NewLogEntryAdded:1;
00100             ULONG UsedBiosSettings:1;
00101             ULONG InputProcessing:1;
00102             ULONG InputLineDone:1;
00103             ULONG ProcessingCmd:1;
00104             ULONG TerminalParity:1;
00105             ULONG TerminalStopBits:1;
00106             ULONG TerminalPortNumber:3;
00107             ULONG IsNonLegacyDevice:1;
00108         };
00109         ULONG AllFlags;
00110     };
00111     ULONG TerminalBaudRate;
00112     ULONG TerminalPort;
00113     PUCHAR TerminalPortAddress;
00114     LARGE_INTEGER DelayTime;
00115     ULONG MicroSecondsDelayTime;
00116     UCHAR TerminalType;
00117     SIZE_T InputBufferIndex;
00118     USHORT LogEntryLast;
00119     USHORT LogEntryStart;
00120     GUID SystemGUID;
00121     BOOLEAN IsMMIODevice;
00122     BOOLEAN IsLastCharCR;
00123 } HEADLESS_GLOBALS, *PHEADLESS_GLOBALS;
00124 
00125 //
00126 // FIXME: A public header in the NDK? Ask Alex
00127 //
00128 typedef enum _HEADLESS_CMD
00129 {
00130     HeadlessCmdEnableTerminal = 1,
00131     HeadlessCmdCheckForReboot,
00132     HeadlessCmdPutString,
00133     HeadlessCmdClearDisplay,
00134     HeadlessCmdClearToEndOfDisplay,
00135     HeadlessCmdClearToEndOfLine,
00136     HeadlessCmdDisplayAttributesOff,
00137     HeadlessCmdDisplayInverseVideo,
00138     HeadlessCmdSetColor,
00139     HeadlessCmdPositionCursor,
00140     HeadlessCmdTerminalPoll,
00141     HeadlessCmdGetByte,
00142     HeadlessCmdGetLine,
00143     HeadlessCmdStartBugCheck,
00144     HeadlessCmdDoBugCheckProcessing,
00145     HeadlessCmdQueryInformation,
00146     HeadlessCmdAddLogEntry,
00147     HeadlessCmdDisplayLog,
00148     HeadlessCmdSetBlueScreenData,
00149     HeadlessCmdSendBlueScreenData,
00150     HeadlessCmdQueryGUID,
00151     HeadlessCmdPutData
00152 } HEADLESS_CMD, *PHEADLESS_CMD;
00153 
00154 typedef enum _HEADLESS_TERM_PORT_TYPE
00155 {
00156     HeadlessUndefinedPortType = 0,
00157     HeadlessSerialPort
00158 } HEADLESS_TERM_PORT_TYPE, *PHEADLESS_TERM_PORT_TYPE;
00159 
00160 typedef enum _HEADLESS_TERM_SERIAL_PORT
00161 {
00162     SerialPortUndefined = 0,
00163     ComPort1,
00164     ComPort2,
00165     ComPort3,
00166     ComPort4
00167 } HEADLESS_TERM_SERIAL_PORT, *PHEADLESS_TERM_SERIAL_PORT;
00168 
00169 typedef struct _HEADLESS_RSP_QUERY_INFO
00170 {
00171     HEADLESS_TERM_PORT_TYPE PortType;
00172     union
00173     {
00174         struct
00175         {
00176             BOOLEAN TerminalAttached;
00177             BOOLEAN UsedBiosSettings;
00178             HEADLESS_TERM_SERIAL_PORT TerminalPort;
00179             PUCHAR TerminalPortBaseAddress;
00180             ULONG TerminalBaudRate;
00181             UCHAR TerminalType;
00182         } Serial;
00183     };
00184 } HEADLESS_RSP_QUERY_INFO, *PHEADLESS_RSP_QUERY_INFO;
00185 
00186 typedef struct _HEADLESS_CMD_PUT_STRING
00187 {
00188     UCHAR String[1];
00189 } HEADLESS_CMD_PUT_STRING, *PHEADLESS_CMD_PUT_STRING;
00190 
00191 NTSTATUS
00192 NTAPI
00193 HeadlessDispatch(
00194     IN HEADLESS_CMD Command,
00195     IN PVOID InputBuffer,
00196     IN SIZE_T InputBufferSize,
00197     OUT PVOID OutputBuffer,
00198     OUT PSIZE_T OutputBufferSize
00199 );
00200 
00201 //
00202 // Global variables accessible from all of Hdl
00203 //
00204 extern PHEADLESS_GLOBALS HeadlessGlobals;
00205 
00206 //
00207 // Inlined functions
00208 //
00209 //#include "hdl_x.h"

Generated on Sat May 26 2012 04:36:07 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.