#define CSR_CSRSS_SECTION_SIZE (65536)
+typedef __declspec(noreturn) VOID CALLBACK(*PCONTROLDISPATCHER)(DWORD);
+
typedef struct
{
} CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
{
ULONG NewProcessId;
ULONG Flags;
+ PCONTROLDISPATCHER CtrlDispatcher;
} CSRSS_CREATE_PROCESS_REQUEST, *PCSRSS_CREATE_PROCESS_REQUEST;
typedef struct
{
HANDLE ConsoleHandle;
WORD NrCharactersToRead;
- WORD nCharsCanBeDeleted; // number of chars already in buffer that can be backspaced
+ WORD nCharsCanBeDeleted; /* number of chars already in buffer that can be backspaced */
} CSRSS_READ_CONSOLE_REQUEST, *PCSRSS_READ_CONSOLE_REQUEST;
typedef struct
typedef struct
{
+ PCONTROLDISPATCHER CtrlDispatcher;
+} CSRSS_ALLOC_CONSOLE_REQUEST, *PCSRSS_ALLOC_CONSOLE_REQUEST;
+
+typedef struct
+{
HANDLE InputHandle;
HANDLE OutputHandle;
} CSRSS_ALLOC_CONSOLE_REPLY, *PCSRSS_ALLOC_CONSOLE_REPLY;
HANDLE Handle;
} CSRSS_DUPLICATE_HANDLE_REPLY, *PCSRSS_DUPLICATE_HANDLE_REPLY;
+#define CONSOLE_HARDWARE_STATE_GET 0
+#define CONSOLE_HARDWARE_STATE_SET 1
+
+#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
+#define CONSOLE_HARDWARE_STATE_DIRECT 1
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ DWORD SetGet; /* 0=get; 1=set */
+ DWORD State;
+
+} CSRSS_CONSOLE_HARDWARE_STATE, *PCSRSS_CONSOLE_HARDWARE_STATE;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HWND WindowHandle;
+} CSRSS_CONSOLE_WINDOW, *PCSRSS_CONSOLE_WINDOW;
+
#define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
(MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
#define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
-// WCHARs, not bytes!
+/* WCHARs, not bytes! */
#define CSRSS_MAX_TITLE_LENGTH 80
#define CSRSS_CREATE_PROCESS (0x0)
#define CSRSS_CLOSE_HANDLE (0x26)
#define CSRSS_VERIFY_HANDLE (0x27)
#define CSRSS_DUPLICATE_HANDLE (0x28)
+#define CSRSS_SETGET_CONSOLE_HW_STATE (0x29)
+#define CSRSS_GET_CONSOLE_WINDOW (0x2A)
/* Keep in sync with definition below. */
#define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
+ CSRSS_ALLOC_CONSOLE_REQUEST AllocConsoleRequest;
CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
CSRSS_CLOSE_HANDLE_REQUEST CloseHandleRequest;
CSRSS_VERIFY_HANDLE_REQUEST VerifyHandleRequest;
CSRSS_DUPLICATE_HANDLE_REQUEST DuplicateHandleRequest;
+ CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateRequest;
+ CSRSS_CONSOLE_WINDOW ConsoleWindowRequest;
} Data;
} CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
CSRSS_GET_INPUT_HANDLE_REPLY GetInputHandleReply;
CSRSS_GET_OUTPUT_HANDLE_REPLY GetOutputHandleReply;
CSRSS_DUPLICATE_HANDLE_REPLY DuplicateHandleReply;
+ CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateReply;
+ CSRSS_CONSOLE_WINDOW ConsoleWindowReply;
} Data;
} CSRSS_API_REPLY, *PCSRSS_API_REPLY;