[KERNEL32/CONSRV]
[reactos.git] / include / reactos / subsys / win / conmsg.h
index c99946f..e245a6b 100644 (file)
 /*
- * CSRSS Console management structures.
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Client/Server Runtime SubSystem
+ * FILE:            include/reactos/subsys/win/conmsg.h
+ * PURPOSE:         Public definitions for communication
+ *                  between Console API Clients and Servers
+ * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
 
-#ifndef __CONMSG_H__
-#define __CONMSG_H__
+#ifndef _CONMSG_H
+#define _CONMSG_H
 
 #pragma once
 
-// Remove it.
-#include <drivers/blue/ntddblue.h>
-
 #define CONSRV_SERVERDLL_INDEX      2
 #define CONSRV_FIRST_API_NUMBER     512
 
-/* w32 console server - move to con.h */
-CSR_SERVER_DLL_INIT(ConServerDllInitialization);
-
-// Windows NT 4 table, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_NT
-// It is for testing purposes. After that I will update it to 2k3 version and add stubs.
+// Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
+// plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
+// Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
 typedef enum _CONSRV_API_NUMBER
 {
-    BasepCreateProcess = CONSRV_FIRST_API_NUMBER,
-
-
-#define WRITE_CONSOLE                   (0x2)
-#define READ_CONSOLE                    (0x3)
-#define ALLOC_CONSOLE                   (0x4)
-#define FREE_CONSOLE                    (0x5)
-#define SCREEN_BUFFER_INFO              (0x7)
-#define SET_CURSOR                      (0x8)
-#define FILL_OUTPUT                     (0x9)
-#define READ_INPUT                      (0xA)
-#define WRITE_CONSOLE_OUTPUT_CHAR       (0xB)
-#define WRITE_CONSOLE_OUTPUT_ATTRIB     (0xC)
-#define FILL_OUTPUT_ATTRIB              (0xD)
-#define GET_CURSOR_INFO                 (0xE)
-#define SET_CURSOR_INFO                 (0xF)
-#define SET_ATTRIB                      (0x10)
-#define GET_CONSOLE_MODE                (0x11)
-#define SET_CONSOLE_MODE                (0x12)
-#define CREATE_SCREEN_BUFFER            (0x13)
-#define SET_SCREEN_BUFFER               (0x14)
-#define SET_TITLE                       (0x15)
-#define GET_TITLE                       (0x16)
-#define WRITE_CONSOLE_OUTPUT            (0x17)
-#define FLUSH_INPUT_BUFFER              (0x18)
-#define SCROLL_CONSOLE_SCREEN_BUFFER    (0x19)
-#define READ_CONSOLE_OUTPUT_CHAR        (0x1A)
-#define READ_CONSOLE_OUTPUT_ATTRIB      (0x1B)
-#define GET_NUM_INPUT_EVENTS            (0x1C)
-#define PEEK_CONSOLE_INPUT              (0x21)
-#define READ_CONSOLE_OUTPUT             (0x22)
-#define WRITE_CONSOLE_INPUT             (0x23)
-#define GET_INPUT_HANDLE                (0x24)
-#define GET_OUTPUT_HANDLE               (0x25)
-#define SETGET_CONSOLE_HW_STATE         (0x29)
-#define GET_CONSOLE_WINDOW              (0x2A)
-#define SET_CONSOLE_ICON                (0x2E)
-#define GET_CONSOLE_CP                  (0x31)
-#define SET_CONSOLE_CP                  (0x32)
-#define GET_CONSOLE_OUTPUT_CP           (0x33)
-#define SET_CONSOLE_OUTPUT_CP           (0x34)
-#define ADD_CONSOLE_ALIAS               (0x38)
-#define GET_CONSOLE_ALIAS               (0x39)
-#define GET_ALL_CONSOLE_ALIASES         (0x3A)
-#define GET_ALL_CONSOLE_ALIASES_LENGTH  (0x3B)
-#define GET_CONSOLE_ALIASES_EXES        (0x3C)
-#define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
-#define GENERATE_CTRL_EVENT             (0x3E)
-#define SET_SCREEN_BUFFER_SIZE          (0x40)
-#define GET_CONSOLE_SELECTION_INFO      (0x41)
-#define GET_COMMAND_HISTORY_LENGTH      (0x42)
-#define GET_COMMAND_HISTORY             (0x43)
-#define EXPUNGE_COMMAND_HISTORY         (0x44)
-#define SET_HISTORY_NUMBER_COMMANDS     (0x45)
-#define GET_HISTORY_INFO                (0x46)
-#define SET_HISTORY_INFO                (0x47)
-
-
-    BasepMaxApiNumber
+    ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
+    ConsolepGetConsoleInput,
+    ConsolepWriteConsoleInput,
+    ConsolepReadConsoleOutput,
+    ConsolepWriteConsoleOutput,
+    ConsolepReadConsoleOutputString,
+    // ConsolepWriteConsoleOutputString,
+    // ConsolepFillConsoleOutput,
+    ConsolepGetMode,
+    // ConsolepGetNumberOfFonts,
+    ConsolepGetNumberOfInputEvents,
+    ConsolepGetScreenBufferInfo,
+    ConsolepGetCursorInfo,
+    // ConsolepGetMouseInfo,
+    // ConsolepGetFontInfo,
+    // ConsolepGetFontSize,
+    // ConsolepGetCurrentFont,
+    ConsolepSetMode,
+    ConsolepSetActiveScreenBuffer,
+    ConsolepFlushInputBuffer,
+    // ConsolepGetLargestWindowSize,
+    ConsolepSetScreenBufferSize,
+    // ConsolepSetCursorPosition,
+    ConsolepSetCursorInfo,
+    // ConsolepSetWindowInfo,
+    ConsolepScrollScreenBuffer,
+    // ConsolepSetTextAttribute,
+    // ConsolepSetFont,
+    ConsolepSetIcon,
+    ConsolepReadConsole,
+    ConsolepWriteConsole,
+    ConsolepDuplicateHandle,
+    /**/ ConsolepGetHandleInformation /**/,
+    // ConsolepSetHandleInformation,
+    ConsolepCloseHandle,
+    ConsolepVerifyIoHandle,
+    ConsolepAlloc,
+    ConsolepFree,
+    ConsolepGetTitle,
+    ConsolepSetTitle,
+    ConsolepCreateScreenBuffer,
+    // ConsolepInvalidateBitMapRect,
+    // ConsolepVDMOperation,
+    ConsolepSetCursor,
+    // ConsolepShowCursor,
+    // ConsolepMenuControl,
+    // ConsolepSetPalette,
+    // ConsolepSetDisplayMode,
+    // ConsolepRegisterVDM,
+    ConsolepGetHardwareState,
+    ConsolepSetHardwareState,
+    // ConsolepGetDisplayMode,
+    ConsolepAddAlias,
+    ConsolepGetAlias,
+    ConsolepGetAliasesLength,
+    ConsolepGetAliasExesLength,
+    ConsolepGetAliases,
+    ConsolepGetAliasExes,
+    ConsolepExpungeCommandHistory,
+    ConsolepSetNumberOfCommands,
+    ConsolepGetCommandHistoryLength,
+    ConsolepGetCommandHistory,
+    // ConsolepSetCommandHistoryMode,
+    ConsolepGetCP,
+    ConsolepSetCP,
+    // ConsolepSetKeyShortcuts,
+    // ConsolepSetMenuClose,
+    // ConsolepNotifyLastClose,
+    ConsolepGenerateCtrlEvent,
+    // ConsolepGetKeyboardLayoutName,
+    ConsolepGetConsoleWindow,
+    // ConsolepCharType,
+    // ConsolepSetLocalEUDC,
+    // ConsolepSetCursorMode,
+    // ConsolepGetCursorMode,
+    // ConsolepRegisterOS2,
+    // ConsolepSetOS2OemFormat,
+    // ConsolepGetNlsMode,
+    // ConsolepSetNlsMode,
+    // ConsolepRegisterConsoleIME,
+    // ConsolepUnregisterConsoleIME,
+    // ConsolepGetLangId,
+    // ConsolepAttach,
+    ConsolepGetSelectionInfo,
+    ConsolepGetProcessList,
+    ConsolepGetHistory,
+    ConsolepSetHistory,
+
+    ConsolepMaxApiNumber
 } 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;
@@ -106,7 +147,10 @@ typedef struct
     WORD NrCharactersToRead;
     WORD NrCharactersRead;
     HANDLE EventHandle;
+
     PVOID Buffer;
+    ULONG BufferSize;
+
     UNICODE_STRING ExeName;
     DWORD CtrlWakeupMask;
     DWORD ControlKeyState;
@@ -114,8 +158,8 @@ typedef struct
 
 typedef struct
 {
-    PCONTROLDISPATCHER CtrlDispatcher;
-    BOOLEAN ConsoleNeeded;
+    LPTHREAD_START_ROUTINE CtrlDispatcher;
+    BOOL ConsoleNeeded;
     INT ShowCmd;
     HANDLE Console;
     HANDLE InputHandle;
@@ -161,15 +205,6 @@ typedef struct
     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;
@@ -265,40 +300,61 @@ 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;
 
-typedef struct
+
+/*
+ * 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
 {
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    DWORD NumCharsToRead;
-    COORD ReadCoord;
-    COORD EndCoord;
-    DWORD CharsRead;
-    CHAR String[0];
-} CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
+    CODE_ASCII      = 0x01,
+    CODE_UNICODE    = 0x02,
+    CODE_ATTRIBUTE  = 0x03
+} CODE_TYPE;
 
 typedef struct
 {
-    HANDLE ConsoleHandle;
-    DWORD NumAttrsToRead;
+    HANDLE    ConsoleHandle;
+    CODE_TYPE CodeType;
+
+    DWORD NumCodesToRead;
     COORD ReadCoord;
     COORD EndCoord;
-    WORD Attribute[0];
-} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
+
+    DWORD CodesRead;
+
+    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;
     BOOL Unicode;
+    BOOL bRead; // TRUE --> Read ; FALSE --> Peek
+
     DWORD Length;
     INPUT_RECORD* InputRecord;
-} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
+
+    /** For Read **/
+    ULONG InputsRead;
+    // INPUT_RECORD Input;
+    BOOL MoreEvents;
+    HANDLE Event;
+} CSRSS_GET_CONSOLE_INPUT, *PCSRSS_GET_CONSOLE_INPUT;
 
 typedef struct
 {
@@ -320,13 +376,44 @@ typedef struct
 
 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;
+
+/*
+ * Type of handles.
+ */
+typedef enum _HANDLE_TYPE
+{
+    HANDLE_INPUT    = 0x01,
+    HANDLE_OUTPUT   = 0x02
+} HANDLE_TYPE;
+
+typedef struct
+{
     HANDLE Handle;
+    HANDLE_TYPE HandleType;
+    DWORD Access;
+    BOOL Inheritable;
     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
@@ -351,39 +438,41 @@ typedef struct
     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;
-} CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
+    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;
@@ -393,45 +482,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
@@ -442,13 +513,43 @@ 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
+{
+    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
 {
     UINT CodePage;
@@ -479,62 +580,87 @@ 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;
+
+        /* Handles */
+        CSRSS_OPEN_CONSOLE OpenConsoleRequest;
+        CSRSS_CLOSE_HANDLE CloseHandleRequest;
+        CSRSS_VERIFY_HANDLE VerifyHandleRequest;
+        CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
+        CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
+
+        /* Cursor */
         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_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
+
+        /* Screen buffer */
         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_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
+        CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
         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;
+
+        CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
+
+        /* Console mode */
+        CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
+        CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
         CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
+
+        /* Console window */
+        CSRSS_SET_TITLE SetTitleRequest;
+        CSRSS_GET_TITLE GetTitleRequest;
         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;
+        CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
+        CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
+        CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
+        CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
+
+        CSRSS_FILL_OUTPUT FillOutputRequest;
+        CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
+        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_HISTORY_INFO HistoryInfoRequest;
+
+        CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
+        CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
+
+        /* CodePage */
         CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
         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;
 
-#endif // __CONMSG_H__
+#endif // _CONMSG_H
 
 /* EOF */