} CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
+#define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
#define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
#define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
#define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
+#define CONSOLE_INPUT_MODE_VALID (0x0f)
+#define CONSOLE_OUTPUT_MODE_VALID (0x03)
+
+
+typedef struct
+{
+ USHORT nMaxIds;
+ PDWORD ProcessId;
+ ULONG nProcessIdsTotal;
+} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
+
typedef struct
{
HANDLE ConsoleHandle;
DWORD ControlKeyState;
} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
+typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
+
typedef struct
{
PCONTROLDISPATCHER CtrlDispatcher;
INPUT_RECORD* InputRecord;
} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
+typedef struct
+{
+ HANDLE Handle;
+} CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
+
+typedef struct
+{
+ HANDLE Handle;
+} CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
+
+typedef struct
+{
+ HANDLE Handle;
+ DWORD Access;
+ BOOL Inheritable;
+ DWORD Options;
+} CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
+
typedef struct
{
DWORD Access;
} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
+typedef struct
+{
+ HANDLE InputWaitHandle;
+} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
#define CONSOLE_HARDWARE_STATE_GET 0
#define CONSOLE_HARDWARE_STATE_SET 1
CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
+ CSRSS_GET_PROCESS_LIST GetProcessListRequest;
} Data;
} CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;