[CONSRV]
[reactos.git] / include / reactos / subsys / win / conmsg.h
index 6b0ee8e..7763f2f 100644 (file)
 // Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
 typedef enum _CONSRV_API_NUMBER
 {
-    // ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
-    ConsolepGetConsoleInput = CONSRV_FIRST_API_NUMBER,
+    ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
+    ConsolepGetConsoleInput,
     ConsolepWriteConsoleInput,
     ConsolepReadConsoleOutput,
     ConsolepWriteConsoleOutput,
-    // ConsolepReadConsoleOutputString,
-    // ConsolepWriteConsoleOutputString,
-    // ConsolepFillConsoleOutput,
+    ConsolepReadConsoleOutputString,
+    ConsolepWriteConsoleOutputString,
+    ConsolepFillConsoleOutput,
     ConsolepGetMode,
     // ConsolepGetNumberOfFonts,
     ConsolepGetNumberOfInputEvents,
@@ -42,17 +42,17 @@ typedef enum _CONSRV_API_NUMBER
     ConsolepFlushInputBuffer,
     // ConsolepGetLargestWindowSize,
     ConsolepSetScreenBufferSize,
-    // ConsolepSetCursorPosition,
+    ConsolepSetCursorPosition,
     ConsolepSetCursorInfo,
     // ConsolepSetWindowInfo,
     ConsolepScrollScreenBuffer,
-    // ConsolepSetTextAttribute,
+    ConsolepSetTextAttribute,
     // ConsolepSetFont,
     ConsolepSetIcon,
     ConsolepReadConsole,
     ConsolepWriteConsole,
     ConsolepDuplicateHandle,
-    /**/ ConsolepGetHandleInformation /**/,
+    // ConsolepGetHandleInformation,
     // ConsolepSetHandleInformation,
     ConsolepCloseHandle,
     ConsolepVerifyIoHandle,
@@ -63,7 +63,7 @@ typedef enum _CONSRV_API_NUMBER
     ConsolepCreateScreenBuffer,
     // ConsolepInvalidateBitMapRect,
     // ConsolepVDMOperation,
-    ConsolepSetCursor,
+    // ConsolepSetCursor,
     // ConsolepShowCursor,
     // ConsolepMenuControl,
     // ConsolepSetPalette,
@@ -112,22 +112,21 @@ typedef enum _CONSRV_API_NUMBER
 } 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))
+typedef struct _CONSOLE_CONNECTION_INFO
+{
+    ULONG Dummy;
+} CONSOLE_CONNECTION_INFO, *PCONSOLE_CONNECTION_INFO;
 
-#define CONSOLE_INPUT_MODE_VALID  (0x0f)
-#define CONSOLE_OUTPUT_MODE_VALID (0x03)
+
+#define CONSOLE_INPUT_MODE_VALID    0x0f
+#define CONSOLE_OUTPUT_MODE_VALID   0x03
 
 
 typedef struct
 {
     USHORT nMaxIds;
-    PDWORD ProcessId;
-    ULONG nProcessIdsTotal;
+    ULONG  nProcessIdsTotal;
+    PDWORD pProcessIds;
 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
 
 typedef struct
@@ -136,8 +135,9 @@ typedef struct
     BOOL Unicode;
     ULONG NrCharactersToWrite;
     ULONG NrCharactersWritten;
-    HANDLE UnpauseEvent;
-    BYTE Buffer[0];
+
+    ULONG BufferSize;
+    PVOID Buffer;
 } CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
 
 typedef struct
@@ -146,19 +146,19 @@ typedef struct
     BOOL Unicode;
     WORD NrCharactersToRead;
     WORD NrCharactersRead;
-    HANDLE EventHandle;
-    PVOID Buffer;
+
     UNICODE_STRING ExeName;
     DWORD CtrlWakeupMask;
     DWORD ControlKeyState;
-} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
 
-typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
+    ULONG BufferSize;
+    PVOID Buffer;
+} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
 
 typedef struct
 {
-    PCONTROLDISPATCHER CtrlDispatcher;
-    BOOLEAN ConsoleNeeded;
+    LPTHREAD_START_ROUTINE CtrlDispatcher;
+    BOOL ConsoleNeeded;
     INT ShowCmd;
     HANDLE Console;
     HANDLE InputHandle;
@@ -180,70 +180,13 @@ typedef struct
 {
     HANDLE ConsoleHandle;
     COORD Position;
-} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    union
-    {
-        CHAR AsciiChar;
-        WCHAR UnicodeChar;
-    } Char;
-    COORD Position;
-    WORD Length;
-    ULONG NrCharactersWritten;
-} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CHAR Attribute;
-    COORD Coord;
-    WORD Length;
-} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    INPUT_RECORD Input;
-    BOOL MoreEvents;
-    HANDLE Event;
-} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    WORD Length;
-    COORD Coord;
-    COORD EndCoord;
-    ULONG NrCharactersWritten;
-    CHAR String[0];
-} CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    WORD Length;
-    COORD Coord;
-    COORD EndCoord;
-    WORD Attribute[0];
-} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
+} CSRSS_SET_CURSOR_POSITION, *PCSRSS_SET_CURSOR_POSITION;
 
 typedef struct
 {
     HANDLE ConsoleHandle;
     CONSOLE_CURSOR_INFO Info;
-} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CONSOLE_CURSOR_INFO Info;
-} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
+} CSRSS_CURSOR_INFO, *PCSRSS_CURSOR_INFO;
 
 typedef struct
 {
@@ -251,17 +194,11 @@ typedef struct
     WORD Attrib;
 } CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
 
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD Mode;
-} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
-
 typedef struct
 {
     HANDLE ConsoleHandle;
     DWORD ConsoleMode;
-} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
+} CSRSS_CONSOLE_MODE, *PCSRSS_CONSOLE_MODE;
 
 typedef struct
 {
@@ -280,13 +217,7 @@ typedef struct
 {
     DWORD Length;
     PWCHAR Title;
-} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
-
-typedef struct
-{
-    DWORD Length;
-    PWCHAR Title;
-} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
+} CSRSS_CONSOLE_TITLE, *PCSRSS_CONSOLE_TITLE;
 
 typedef struct
 {
@@ -308,40 +239,96 @@ typedef struct
     HANDLE ConsoleHandle;
     BOOL Unicode;
     SMALL_RECT ScrollRectangle;
-    BOOLEAN UseClipRectangle;
+    BOOL UseClipRectangle;
     SMALL_RECT ClipRectangle;
     COORD DestinationOrigin;
     CHAR_INFO Fill;
 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
 
+
+/*
+ * An attribute or a character are instances of the same entity, namely
+ * a "code" (what would be called an (ANSI) escape sequence). Therefore
+ * encode them inside the same structure.
+ */
+typedef enum _CODE_TYPE
+{
+    CODE_ASCII      = 0x01,
+    CODE_UNICODE    = 0x02,
+    CODE_ATTRIBUTE  = 0x03
+} CODE_TYPE;
+
 typedef struct
 {
     HANDLE ConsoleHandle;
-    BOOL Unicode;
-    DWORD NumCharsToRead;
+
+    DWORD NumCodesToRead;
     COORD ReadCoord;
     COORD EndCoord;
-    DWORD CharsRead;
-    CHAR String[0];
-} CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
+
+    DWORD CodesRead;
+
+    CODE_TYPE CodeType;
+    union
+    {
+        PVOID pCode;
+        PCHAR AsciiChar;
+        PWCHAR UnicodeChar;
+        PWORD Attribute;
+    } pCode;    // Either a pointer to a character or to an attribute.
+} CSRSS_READ_CONSOLE_OUTPUT_CODE, *PCSRSS_READ_CONSOLE_OUTPUT_CODE;
 
 typedef struct
 {
     HANDLE ConsoleHandle;
-    DWORD NumAttrsToRead;
-    COORD ReadCoord;
+    USHORT CodeType;
+
+    ULONG BufferSize;
+    WORD Length;
+    COORD Coord;
     COORD EndCoord;
-    WORD Attribute[0];
-} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
 
+    ULONG NrCharactersWritten;
+
+    union
+    {
+        // PVOID String;
+        PVOID pCode;
+        PCHAR AsciiChar;
+        PWCHAR UnicodeChar;
+        PWORD Attribute;
+    } pCode;    // Either a pointer to a character or to an attribute.
+} CSRSS_WRITE_CONSOLE_OUTPUT_CODE, *PCSRSS_WRITE_CONSOLE_OUTPUT_CODE;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+
+    CODE_TYPE CodeType;
+    union
+    {
+        CHAR AsciiChar;
+        WCHAR UnicodeChar;
+        WORD Attribute;
+    } Code; // Either a character or an attribute.
+
+    COORD Coord;
+    ULONG Length;
+
+    ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
+} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
 
 typedef struct
 {
     HANDLE ConsoleHandle;
     BOOL Unicode;
-    DWORD Length;
-    INPUT_RECORD* InputRecord;
-} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
+    BOOL bRead; // TRUE --> Read ; FALSE --> Peek
+
+    ULONG InputsRead;
+
+    ULONG Length;
+    PINPUT_RECORD InputRecord;
+} CSRSS_GET_CONSOLE_INPUT, *PCSRSS_GET_CONSOLE_INPUT;
 
 typedef struct
 {
@@ -379,76 +366,87 @@ typedef struct
     DWORD Options;
 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
 
+/*
+ * Type of handles.
+ */
+typedef enum _CONSOLE_HANDLE_TYPE
+{
+    HANDLE_INPUT    = 0x01,
+    HANDLE_OUTPUT   = 0x02
+} CONSOLE_HANDLE_TYPE;
+
 typedef struct
 {
+    HANDLE Handle;
+    CONSOLE_HANDLE_TYPE HandleType;
     DWORD Access;
     BOOL Inheritable;
-    HANDLE Handle;
     DWORD ShareMode;
-} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
-  CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
+} CSRSS_OPEN_CONSOLE, *PCSRSS_OPEN_CONSOLE;
 
 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
 
+/*
+ * Console hardware states.
+ */
 #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_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
+    DWORD  State;
+} CSRSS_CONSOLE_HW_STATE, *PCSRSS_CONSOLE_HW_STATE;
 
 typedef struct
 {
-    HWND   WindowHandle;
+    HWND    WindowHandle;
 } CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
 
 typedef struct
 {
-    HICON  WindowIcon;
+    HICON   WindowIcon;
 } CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
 
-typedef struct
-{
-    ULONG SourceLength;
-    ULONG ExeLength;
-    ULONG TargetLength;
-} CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
+
+
+
+
+
+
+
 
 typedef struct
 {
-    ULONG SourceLength;
-    ULONG ExeLength;
-    ULONG BytesWritten;
-    ULONG TargetBufferLength;
-    PVOID TargetBuffer;
-} CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
+    ULONG  SourceLength;
+    ULONG  TargetLength; // Also used for storing the number of bytes written.
+    ULONG  ExeLength;
+    LPWSTR Source;
+    LPWSTR Target;
+    LPWSTR Exe;
+} CSRSS_CONSOLE_ALIAS, *PCSRSS_CONSOLE_ALIAS;
 
 typedef struct
 {
-    LPWSTR lpExeName;
-    DWORD BytesWritten;
-    DWORD AliasBufferLength;
-    LPWSTR AliasBuffer;
+    DWORD ExeLength;
+    DWORD AliasesBufferLength;
+    LPWSTR ExeName;
+    LPWSTR AliasesBuffer;
 } CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIASES;
 
 typedef struct
 {
-    LPWSTR lpExeName;
     DWORD Length;
+    DWORD ExeLength;
+    LPWSTR ExeName;
 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
 
 typedef struct
 {
-    DWORD BytesWritten;
     DWORD Length;
     LPWSTR ExeNames;
 } CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
@@ -458,45 +456,27 @@ typedef struct
     DWORD Length;
 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
 
-typedef struct
-{
-    DWORD Event;
-    DWORD ProcessGroup;
-} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
 
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD NumInputEvents;
-} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
 
-typedef struct
-{
-    HANDLE OutputHandle;
-    COORD Size;
-} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
 
-typedef struct
-{
-    CONSOLE_SELECTION_INFO Info;
-} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
+
 
 typedef struct
 {
     UNICODE_STRING ExeName;
+    PWCHAR History;
     DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
+} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
 
 typedef struct
 {
     UNICODE_STRING ExeName;
-    PWCHAR History;
     DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
+} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
 
 typedef struct
 {
-  UNICODE_STRING ExeName;
+    UNICODE_STRING ExeName;
 } CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
 
 typedef struct
@@ -507,31 +487,48 @@ typedef struct
 
 typedef struct
 {
-    DWORD HistoryBufferSize;
-    DWORD NumberOfHistoryBuffers;
+    UINT HistoryBufferSize;
+    UINT NumberOfHistoryBuffers;
     DWORD dwFlags;
-} CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
-  CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
+} CSRSS_HISTORY_INFO, *PCSRSS_HISTORY_INFO;
+
+
+
+
+
+
+
+
+
 
 typedef struct
 {
-    UINT CodePage;
-} CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
+    DWORD Event;
+    DWORD ProcessGroup;
+} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
 
 typedef struct
 {
-    UINT CodePage;
-} CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
+    HANDLE ConsoleHandle;
+    DWORD NumInputEvents;
+} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
 
 typedef struct
 {
-    UINT CodePage;
-} CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
+    HANDLE OutputHandle;
+    COORD Size;
+} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
+
+typedef struct
+{
+    CONSOLE_SELECTION_INFO Info;
+} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
 
 typedef struct
 {
+    BOOL InputCP;   // TRUE : Input Code Page ; FALSE : Output Code Page
     UINT CodePage;
-} CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
+} CSRSS_CONSOLE_CP, *PCSRSS_CONSOLE_CP;
 
 typedef struct _CONSOLE_API_MESSAGE
 {
@@ -543,67 +540,81 @@ typedef struct _CONSOLE_API_MESSAGE
     ULONG Reserved;
     union
     {
-        CSRSS_WRITE_CONSOLE WriteConsoleRequest;
-        CSRSS_READ_CONSOLE ReadConsoleRequest;
         CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
         CSRSS_FREE_CONSOLE FreeConsoleRequest;
-        CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
-        CSRSS_SET_CURSOR SetCursorRequest;
-        CSRSS_FILL_OUTPUT FillOutputRequest;
-        CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
-        CSRSS_READ_INPUT ReadInputRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
-        CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
-        CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
-        CSRSS_SET_ATTRIB SetAttribRequest;
-        CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
-        CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
-        CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
-        CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
-        CSRSS_SET_TITLE SetTitleRequest;
-        CSRSS_GET_TITLE GetTitleRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
-        CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
-        CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
-        CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
-        CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
-        CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
-        CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
-        CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
-        CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
-        CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
+
+        /* Handles */
+        CSRSS_OPEN_CONSOLE OpenConsoleRequest;
         CSRSS_CLOSE_HANDLE CloseHandleRequest;
         CSRSS_VERIFY_HANDLE VerifyHandleRequest;
         CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
         CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
-        CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
+
+        /* Cursor */
+        CSRSS_CURSOR_INFO CursorInfoRequest;
+        CSRSS_SET_CURSOR_POSITION SetCursorPositionRequest;
+
+        /* Screen buffer */
+        CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
+        CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
+        CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
+        CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
+        CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
+
+        CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
+        CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
+
+        /* Console mode */
+        CSRSS_CONSOLE_MODE ConsoleModeRequest;
+        CSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
+
+        /* Console window */
+        CSRSS_CONSOLE_TITLE TitleRequest;
         CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
         CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
-        CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
-        CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
-        CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
+
+        /* Read */
+        CSRSS_READ_CONSOLE ReadConsoleRequest;              // SrvReadConsole / ReadConsole
+        CSRSS_GET_CONSOLE_INPUT GetConsoleInputRequest;     // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
+        CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
+        CSRSS_READ_CONSOLE_OUTPUT_CODE ReadConsoleOutputCodeRequest;    // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
+
+        /* Write */
+        CSRSS_WRITE_CONSOLE WriteConsoleRequest;            // SrvWriteConsole / WriteConsole
+        CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
+        CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
+        CSRSS_WRITE_CONSOLE_OUTPUT_CODE WriteConsoleOutputCodeRequest;
+
+        CSRSS_FILL_OUTPUT FillOutputRequest;
+        CSRSS_SET_ATTRIB SetAttribRequest;
+
+        /* Aliases */
+        CSRSS_CONSOLE_ALIAS ConsoleAlias;
+        CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAliases;
         CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
         CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
         CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
-        CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
-        CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
-        CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
-        CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
-        CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
+
+        /* History */
         CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
+        CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
         CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
         CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
-        CSRSS_GET_HISTORY_INFO GetHistoryInfo;
-        CSRSS_SET_HISTORY_INFO SetHistoryInfo;
-        CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
-        CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
-        CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
-        CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
+        CSRSS_HISTORY_INFO HistoryInfoRequest;
+
+        CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
+        CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
+
+        /* Input and Output Code Pages */
+        CSRSS_CONSOLE_CP ConsoleCPRequest;
+
         CSRSS_GET_PROCESS_LIST GetProcessListRequest;
     } Data;
 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
 
+// Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
+CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
+
 #endif // _CONMSG_H
 
 /* EOF */