/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS Client/Server Runtime SubSystem
+ * PROJECT: ReactOS Console Server DLL
* FILE: include/reactos/subsys/win/conmsg.h
* PURPOSE: Public definitions for communication
* between Console API Clients and Servers
#define CONSRV_SERVERDLL_INDEX 2
#define CONSRV_FIRST_API_NUMBER 512
-// 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.
+// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
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,
+ ConsolepGetNumberOfFonts,
ConsolepGetNumberOfInputEvents,
ConsolepGetScreenBufferInfo,
ConsolepGetCursorInfo,
- // ConsolepGetMouseInfo,
- // ConsolepGetFontInfo,
- // ConsolepGetFontSize,
- // ConsolepGetCurrentFont,
+ ConsolepGetMouseInfo,
+ ConsolepGetFontInfo,
+ ConsolepGetFontSize,
+ ConsolepGetCurrentFont,
ConsolepSetMode,
ConsolepSetActiveScreenBuffer,
ConsolepFlushInputBuffer,
- // ConsolepGetLargestWindowSize,
+ ConsolepGetLargestWindowSize,
ConsolepSetScreenBufferSize,
- // ConsolepSetCursorPosition,
+ ConsolepSetCursorPosition,
ConsolepSetCursorInfo,
- // ConsolepSetWindowInfo,
+ ConsolepSetWindowInfo,
ConsolepScrollScreenBuffer,
- // ConsolepSetTextAttribute,
- // ConsolepSetFont,
+ ConsolepSetTextAttribute,
+ ConsolepSetFont,
ConsolepSetIcon,
ConsolepReadConsole,
ConsolepWriteConsole,
ConsolepDuplicateHandle,
- /**/ ConsolepGetHandleInformation /**/,
- // ConsolepSetHandleInformation,
+ ConsolepGetHandleInformation,
+ ConsolepSetHandleInformation,
ConsolepCloseHandle,
ConsolepVerifyIoHandle,
- ConsolepAlloc,
- ConsolepFree,
+ ConsolepAlloc, // Not present in Win7
+ ConsolepFree, // Not present in Win7
ConsolepGetTitle,
ConsolepSetTitle,
ConsolepCreateScreenBuffer,
- // ConsolepInvalidateBitMapRect,
- // ConsolepVDMOperation,
+ ConsolepInvalidateBitMapRect,
+ ConsolepVDMOperation,
ConsolepSetCursor,
- // ConsolepShowCursor,
- // ConsolepMenuControl,
- // ConsolepSetPalette,
- // ConsolepSetDisplayMode,
- // ConsolepRegisterVDM,
+ ConsolepShowCursor,
+ ConsolepMenuControl,
+ ConsolepSetPalette,
+ ConsolepSetDisplayMode,
+ ConsolepRegisterVDM,
ConsolepGetHardwareState,
ConsolepSetHardwareState,
- // ConsolepGetDisplayMode,
+ ConsolepGetDisplayMode,
ConsolepAddAlias,
ConsolepGetAlias,
ConsolepGetAliasesLength,
ConsolepSetNumberOfCommands,
ConsolepGetCommandHistoryLength,
ConsolepGetCommandHistory,
- // ConsolepSetCommandHistoryMode,
+ ConsolepSetCommandHistoryMode, // Not present in Vista+
ConsolepGetCP,
ConsolepSetCP,
- // ConsolepSetKeyShortcuts,
- // ConsolepSetMenuClose,
- // ConsolepNotifyLastClose,
+ ConsolepSetKeyShortcuts,
+ ConsolepSetMenuClose,
+ ConsolepNotifyLastClose,
ConsolepGenerateCtrlEvent,
- // ConsolepGetKeyboardLayoutName,
+ ConsolepGetKeyboardLayoutName,
ConsolepGetConsoleWindow,
- // ConsolepCharType,
- // ConsolepSetLocalEUDC,
- // ConsolepSetCursorMode,
- // ConsolepGetCursorMode,
- // ConsolepRegisterOS2,
- // ConsolepSetOS2OemFormat,
- // ConsolepGetNlsMode,
- // ConsolepSetNlsMode,
- // ConsolepRegisterConsoleIME,
- // ConsolepUnregisterConsoleIME,
- // ConsolepGetLangId,
- // ConsolepAttach,
+ ConsolepCharType,
+ ConsolepSetLocalEUDC,
+ ConsolepSetCursorMode,
+ ConsolepGetCursorMode,
+ ConsolepRegisterOS2,
+ ConsolepSetOS2OemFormat,
+ ConsolepGetNlsMode,
+ ConsolepSetNlsMode,
+ ConsolepRegisterConsoleIME, // Not present in Win7
+ ConsolepUnregisterConsoleIME, // Not present in Win7
+ // ConsolepQueryConsoleIME, // Added only in Vista and Win2k8, not present in Win7
+ ConsolepGetLangId,
+ ConsolepAttach, // Not present in Win7
ConsolepGetSelectionInfo,
ConsolepGetProcessList,
- ConsolepGetHistory,
- ConsolepSetHistory,
+
+ ConsolepGetHistory, // Added in Vista+
+ ConsolepSetHistory, // Added in Vista+
+ // ConsolepSetCurrentFont, // Added in Vista+
+ // ConsolepSetScreenBufferInfo, // Added in Vista+
+ // ConsolepClientConnect, // Added in Win7
ConsolepMaxApiNumber
} CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
+//
+// See http://msdn.microsoft.com/en-us/library/windows/desktop/bb773359(v=vs.85).aspx
+//
+typedef struct _CONSOLE_PROPERTIES
+{
+ WORD wFillAttribute;
+ WORD wPopupFillAttribute;
+
+ //
+ // Not on MSDN, but show up in binary
+ //
+ WORD wShowWindow;
+ WORD wUnknown;
+
+ COORD dwScreenBufferSize;
+ COORD dwWindowSize;
+ COORD dwWindowOrigin;
+ DWORD nFont;
+ DWORD nInputBufferSize;
+ COORD dwFontSize;
+ UINT uFontFamily;
+ UINT uFontWeight;
+ WCHAR FaceName[LF_FACESIZE];
+ UINT uCursorSize;
+ BOOL bFullScreen;
+ BOOL bQuickEdit;
+ BOOL bInsertMode;
+ BOOL bAutoPosition;
+ UINT uHistoryBufferSize;
+ UINT uNumberOfHistoryBuffers;
+ BOOL bHistoryNoDup;
+ COLORREF ColorTable[16];
+
+ //NT_FE_CONSOLE_PROPS
+ UINT uCodePage;
+} CONSOLE_PROPERTIES;
+
+//
+// To minimize code changes, some fields were put here even though they really only belong in
+// CONSRV_API_CONNECTINFO. Do not change the ordering however, as it's required for Windows
+// compatibility.
+//
+typedef struct _CONSOLE_START_INFO
+{
+ INT IconIndex;
+ HICON IconHandle1;
+ HICON IconHandle2;
+ DWORD dwHotKey;
+ DWORD dwStartupFlags;
+ CONSOLE_PROPERTIES;
+ BOOLEAN ConsoleNeeded; // Used for GUI apps only.
+ LPTHREAD_START_ROUTINE CtrlDispatcher;
+ LPTHREAD_START_ROUTINE ImeDispatcher;
+ LPTHREAD_START_ROUTINE PropDispatcher;
+ ULONG TitleLength;
+ WCHAR ConsoleTitle[MAX_PATH + 1]; // Console title or full path to the startup shortcut
+ ULONG DesktopLength;
+ PWCHAR DesktopPath;
+ ULONG AppNameLength;
+ WCHAR AppPath[128]; // Full path of the launched app
+ ULONG IconPathLength;
+ WCHAR IconPath[MAX_PATH + 1]; // Path to the file containing the icon
+} CONSOLE_START_INFO, *PCONSOLE_START_INFO;
+
+typedef struct _CONSRV_API_CONNECTINFO
+{
+ HANDLE ConsoleHandle;
+ HANDLE InputWaitHandle;
+ HANDLE InputHandle;
+ HANDLE OutputHandle;
+ HANDLE ErrorHandle;
+ HANDLE Event1;
+ HANDLE Event2;
+ /* Adapted from CONSOLE_ALLOCCONSOLE */
+ CONSOLE_START_INFO ConsoleStartInfo;
+} CONSRV_API_CONNECTINFO, *PCONSRV_API_CONNECTINFO;
-#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)
+#if defined(_M_IX86)
+C_ASSERT(sizeof(CONSRV_API_CONNECTINFO) == 0x638);
+#endif
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ ULONG ProcessCount;
+ PDWORD ProcessIdsList;
+} CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
typedef struct
{
- USHORT nMaxIds;
- PDWORD ProcessId;
- ULONG nProcessIdsTotal;
-} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
+ HANDLE ConsoleHandle;
+ DWORD CtrlEvent;
+ DWORD ProcessGroupId;
+} CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
typedef struct
{
HANDLE ConsoleHandle;
+} CONSOLE_NOTIFYLASTCLOSE, *PCONSOLE_NOTIFYLASTCLOSE;
+
+
+
+typedef struct
+{
+ HANDLE OutputHandle;
+
BOOL Unicode;
ULONG NrCharactersToWrite;
ULONG NrCharactersWritten;
- HANDLE UnpauseEvent;
- BYTE Buffer[0];
-} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
+
+ ULONG BufferSize;
+ PVOID Buffer;
+} CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
typedef struct
{
- HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+
BOOL Unicode;
- WORD NrCharactersToRead;
- WORD NrCharactersRead;
- HANDLE EventHandle;
- PVOID Buffer;
+ ULONG NrCharactersToRead;
+ ULONG NrCharactersRead;
+
UNICODE_STRING ExeName;
DWORD CtrlWakeupMask;
DWORD ControlKeyState;
-} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
-typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
+ ULONG BufferSize;
+ PVOID Buffer;
+} CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
+
+typedef struct
+{
+ PCONSOLE_START_INFO ConsoleStartInfo;
+
+ HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+ HANDLE OutputHandle;
+ HANDLE ErrorHandle;
+ HANDLE InputWaitHandle;
+ LPTHREAD_START_ROUTINE CtrlDispatcher;
+ LPTHREAD_START_ROUTINE PropDispatcher;
+} CONSOLE_ALLOCCONSOLE, *PCONSOLE_ALLOCCONSOLE;
typedef struct
{
- PCONTROLDISPATCHER CtrlDispatcher;
- BOOLEAN ConsoleNeeded;
- INT ShowCmd;
- HANDLE Console;
+ DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
HANDLE OutputHandle;
-} CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
+ HANDLE ErrorHandle;
+ HANDLE InputWaitHandle;
+ LPTHREAD_START_ROUTINE CtrlDispatcher;
+ LPTHREAD_START_ROUTINE PropDispatcher;
+} CONSOLE_ATTACHCONSOLE, *PCONSOLE_ATTACHCONSOLE;
typedef struct
{
ULONG Dummy;
-} CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
+} CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
typedef struct
{
HANDLE ConsoleHandle;
- CONSOLE_SCREEN_BUFFER_INFO Info;
-} CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
+ HANDLE OutputHandle;
+ COORD ScreenBufferSize;
+ COORD CursorPosition;
+ COORD ViewOrigin;
+ WORD Attributes;
+ COORD ViewSize;
+ COORD MaximumViewSize;
+} CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
typedef struct
{
HANDLE ConsoleHandle;
- COORD Position;
-} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
+ HANDLE OutputHandle;
+ COORD Position;
+} CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
typedef struct
{
HANDLE ConsoleHandle;
- BOOL Unicode;
- union
- {
- CHAR AsciiChar;
- WCHAR UnicodeChar;
- } Char;
- COORD Position;
- WORD Length;
- ULONG NrCharactersWritten;
-} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
+ HANDLE OutputHandle;
+ BOOL Show;
+ INT RefCount;
+} CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
typedef struct
{
- HANDLE ConsoleHandle;
- CHAR Attribute;
- COORD Coord;
- WORD Length;
-} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ HCURSOR CursorHandle;
+} CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
typedef struct
{
HANDLE ConsoleHandle;
- BOOL Unicode;
- INPUT_RECORD Input;
- BOOL MoreEvents;
- HANDLE Event;
-} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
+ HANDLE OutputHandle;
+ CONSOLE_CURSOR_INFO Info;
+/*
+ DWORD Size;
+ BOOLEAN Visible;
+*/
+} CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
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;
+ ULONG NumButtons;
+} CONSOLE_GETMOUSEINFO, *PCONSOLE_GETMOUSEINFO;
typedef struct
{
HANDLE ConsoleHandle;
- WORD Length;
- COORD Coord;
- COORD EndCoord;
- WORD Attribute[0];
-} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
+ HANDLE OutputHandle;
+ WORD Attributes;
+} CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
typedef struct
{
HANDLE ConsoleHandle;
- CONSOLE_CURSOR_INFO Info;
-} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
+ HANDLE Handle;
+ DWORD Mode;
+} CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
typedef struct
{
HANDLE ConsoleHandle;
- CONSOLE_CURSOR_INFO Info;
-} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
+ DWORD DisplayMode; // ModeFlags
+} CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
typedef struct
{
HANDLE ConsoleHandle;
- WORD Attrib;
-} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
+ HANDLE OutputHandle;
+ DWORD DisplayMode; // ModeFlags
+ COORD NewSBDim;
+ HANDLE EventHandle;
+} CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
+
+/*
+ * Console hardware states.
+ */
+#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
+#define CONSOLE_HARDWARE_STATE_DIRECT 1
typedef struct
{
HANDLE ConsoleHandle;
- DWORD Mode;
-} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
+ HANDLE OutputHandle;
+ DWORD Flags;
+ DWORD State;
+} CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
+
+
typedef struct
{
HANDLE ConsoleHandle;
- DWORD ConsoleMode;
-} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
+ DWORD DesiredAccess;
+ BOOL InheritHandle;
+ DWORD ShareMode;
+ /* Type of the screen buffer: CONSOLE_TEXTMODE_BUFFER or CONSOLE_GRAPHICS_BUFFER */
+ DWORD ScreenBufferType;
+ /*
+ * This structure holds the initialization information
+ * for graphics screen buffers.
+ */
+ CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo;
+ HANDLE hMutex;
+ PVOID lpBitMap;
+ HANDLE OutputHandle; /* Handle to newly created screen buffer */
+} CONSOLE_CREATESCREENBUFFER, *PCONSOLE_CREATESCREENBUFFER;
typedef struct
{
- DWORD Access;
- DWORD ShareMode;
- BOOL Inheritable;
- HANDLE OutputHandle; /* handle to newly created screen buffer */
-} CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle; /* Handle to screen buffer to switch to */
+} CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
typedef struct
{
- HANDLE OutputHandle; /* handle to screen buffer to switch to */
-} CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ SMALL_RECT Region;
+} CONSOLE_INVALIDATEDIBITS, *PCONSOLE_INVALIDATEDIBITS;
typedef struct
{
- DWORD Length;
- PWCHAR Title;
-} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ HPALETTE PaletteHandle;
+ UINT Usage;
+} CONSOLE_SETPALETTE, *PCONSOLE_SETPALETTE;
typedef struct
{
- DWORD Length;
- PWCHAR Title;
-} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
+ HANDLE ConsoleHandle;
+ DWORD Length;
+ PVOID Title;
+ BOOLEAN Unicode;
+} CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
typedef struct
{
- HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+
BOOL Unicode;
COORD BufferSize;
COORD BufferCoord;
SMALL_RECT WriteRegion;
- CHAR_INFO* CharInfo;
-} CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
+ PCHAR_INFO CharInfo;
+} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
typedef struct
{
- HANDLE ConsoleInput;
-} CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
+ HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+} CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
typedef struct
{
- HANDLE ConsoleHandle;
- BOOL Unicode;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
SMALL_RECT ScrollRectangle;
- BOOLEAN UseClipRectangle;
SMALL_RECT ClipRectangle;
- COORD DestinationOrigin;
- CHAR_INFO Fill;
-} CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
+ BOOL UseClipRectangle;
+ COORD DestinationOrigin;
+ CHAR_INFO Fill;
+ BOOLEAN Unicode;
+} CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
+
+
+/*
+ * 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;
+ HANDLE OutputHandle;
+
+ 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.
+} CONSOLE_READOUTPUTCODE, *PCONSOLE_READOUTPUTCODE;
typedef struct
{
- HANDLE ConsoleHandle;
- DWORD NumAttrsToRead;
- COORD ReadCoord;
+ HANDLE OutputHandle;
+
+ ULONG BufferSize; // Seems unusued
+ WORD Length;
+ COORD Coord;
COORD EndCoord;
- WORD Attribute[0];
-} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
+ ULONG NrCharactersWritten; // Seems unusued
+
+ CODE_TYPE CodeType;
+ union
+ {
+ PVOID pCode;
+ PCHAR AsciiChar;
+ PWCHAR UnicodeChar;
+ PWORD Attribute;
+ } pCode; // Either a pointer to a character or to an attribute.
+} CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
typedef struct
{
- HANDLE ConsoleHandle;
- BOOL Unicode;
- DWORD Length;
- INPUT_RECORD* InputRecord;
-} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
+ HANDLE OutputHandle;
+
+ 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 ?
+} CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
typedef struct
{
- HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+ ULONG InputsRead;
+ PINPUT_RECORD InputRecord;
+ ULONG Length;
+ WORD wFlags;
+ BOOLEAN Unicode;
+} CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
+
+typedef struct
+{
+ HANDLE OutputHandle;
+
BOOL Unicode;
COORD BufferSize;
COORD BufferCoord;
SMALL_RECT ReadRegion;
- CHAR_INFO* CharInfo;
-} CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
+ PCHAR_INFO CharInfo;
+} CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
typedef struct
{
- HANDLE ConsoleHandle;
- BOOL Unicode;
+ HANDLE InputHandle;
DWORD Length;
INPUT_RECORD* InputRecord;
-} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
+ BOOL Unicode;
+ BOOL AppendToEnd;
+} CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
typedef struct
{
- HANDLE Handle;
-} CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
+ HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+ DWORD NumberOfEvents;
+} CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
+
+
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE Handle;
-} CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
+} CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
typedef struct
{
+ BOOL IsValid;
+ HANDLE ConsoleHandle;
HANDLE Handle;
- DWORD Access;
- BOOL Inheritable;
- DWORD Options;
-} CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
+} CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
typedef struct
{
- DWORD Access;
- BOOL Inheritable;
- HANDLE Handle;
- DWORD ShareMode;
-} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
- CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
+ HANDLE ConsoleHandle;
+ HANDLE SourceHandle;
+ DWORD DesiredAccess;
+ BOOLEAN InheritHandle;
+ DWORD Options;
+ HANDLE TargetHandle;
+} CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
typedef struct
{
- HANDLE InputWaitHandle;
-} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
+ HANDLE ConsoleHandle;
+ HANDLE Handle;
+ DWORD Flags;
+} CONSOLE_GETHANDLEINFO, *PCONSOLE_GETHANDLEINFO;
-#define CONSOLE_HARDWARE_STATE_GET 0
-#define CONSOLE_HARDWARE_STATE_SET 1
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HANDLE Handle;
+ DWORD Mask;
+ DWORD Flags;
+} CONSOLE_SETHANDLEINFO, *PCONSOLE_SETHANDLEINFO;
-#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
-#define CONSOLE_HARDWARE_STATE_DIRECT 1
+/*
+ * Type of handles.
+ */
+typedef enum _CONSOLE_HANDLE_TYPE
+{
+ HANDLE_INPUT = 0x01,
+ HANDLE_OUTPUT = 0x02
+} CONSOLE_HANDLE_TYPE;
typedef struct
{
HANDLE ConsoleHandle;
- DWORD SetGet; /* 0=get; 1=set */
- DWORD State;
-} CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
+ CONSOLE_HANDLE_TYPE HandleType;
+ DWORD DesiredAccess;
+ BOOL InheritHandle;
+ DWORD ShareMode;
+ HANDLE Handle;
+} CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
+
+
typedef struct
{
- HWND WindowHandle;
-} CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ COORD Size;
+} CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
typedef struct
{
- HICON WindowIcon;
-} CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ DWORD CmdIdLow;
+ DWORD CmdIdHigh;
+ HMENU MenuHandle;
+} CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
typedef struct
{
- ULONG SourceLength;
- ULONG ExeLength;
- ULONG TargetLength;
-} CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
+ HANDLE ConsoleHandle;
+ BOOL Enable;
+} CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
typedef struct
{
- ULONG SourceLength;
- ULONG ExeLength;
- ULONG BytesWritten;
- ULONG TargetBufferLength;
- PVOID TargetBuffer;
-} CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ BOOL Absolute;
+ SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
+ // or in the old window position frame (Absolute == FALSE).
+} CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
typedef struct
{
- LPWSTR lpExeName;
- DWORD BytesWritten;
- DWORD AliasBufferLength;
- LPWSTR AliasBuffer;
-} CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIASES;
+ HANDLE ConsoleHandle;
+ HWND WindowHandle;
+} CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
typedef struct
{
- LPWSTR lpExeName;
- DWORD Length;
-} CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
+ HANDLE ConsoleHandle;
+ HICON IconHandle;
+} CONSOLE_SETICON, *PCONSOLE_SETICON;
+
+
typedef struct
{
- DWORD BytesWritten;
- DWORD Length;
- LPWSTR ExeNames;
-} CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
+ HANDLE ConsoleHandle;
+ USHORT SourceLength;
+ USHORT TargetLength; // Also used for storing the number of bytes written.
+ USHORT ExeLength;
+ PVOID Source;
+ PVOID Target;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
typedef struct
{
- DWORD Length;
-} CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+ ULONG AliasesBufferLength;
+ PVOID AliasesBuffer;
+} CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
typedef struct
{
- DWORD Event;
- DWORD ProcessGroup;
-} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ ULONG Length;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
typedef struct
{
- HANDLE ConsoleHandle;
- DWORD NumInputEvents;
-} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
+ HANDLE ConsoleHandle;
+ ULONG Length ; // ExeLength; // ExesLength
+ PVOID ExeNames;
+ BOOLEAN Unicode;
+} CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
typedef struct
{
- HANDLE OutputHandle;
- COORD Size;
-} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
+ HANDLE ConsoleHandle;
+ ULONG Length;
+ BOOLEAN Unicode;
+} CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
+
+
typedef struct
{
- CONSOLE_SELECTION_INFO Info;
-} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
+ HANDLE ConsoleHandle;
+ ULONG HistoryLength;
+ PVOID History;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
typedef struct
{
- UNICODE_STRING ExeName;
- DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
+ HANDLE ConsoleHandle;
+ ULONG HistoryLength;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
typedef struct
{
- UNICODE_STRING ExeName;
- PWCHAR History;
- DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
typedef struct
{
- UNICODE_STRING ExeName;
-} CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
+ UINT HistoryBufferSize;
+ UINT NumberOfHistoryBuffers;
+ DWORD dwFlags;
+} CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
typedef struct
{
- UNICODE_STRING ExeName;
- DWORD NumCommands;
-} CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
+ HANDLE ConsoleHandle;
+ ULONG NumCommands;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
typedef struct
{
- DWORD HistoryBufferSize;
- DWORD NumberOfHistoryBuffers;
- DWORD dwFlags;
-} CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
- CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
+ HANDLE ConsoleHandle;
+ ULONG Mode;
+} CONSOLE_SETHISTORYMODE, *PCONSOLE_SETHISTORYMODE;
+
+
typedef struct
{
- UINT CodePage;
-} CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ COORD Size;
+} CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
typedef struct
{
- UINT CodePage;
-} CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
+ HANDLE ConsoleHandle;
+ CONSOLE_SELECTION_INFO Info;
+} CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
typedef struct
{
- UINT CodePage;
-} CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
+ HANDLE ConsoleHandle;
+ UINT CodePage;
+ BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
+} CONSOLE_GETINPUTOUTPUTCP, *PCONSOLE_GETINPUTOUTPUTCP;
typedef struct
{
- UINT CodePage;
-} CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
+ HANDLE ConsoleHandle;
+ UINT CodePage;
+ BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
+ HANDLE EventHandle;
+} CONSOLE_SETINPUTOUTPUTCP, *PCONSOLE_SETINPUTOUTPUTCP;
typedef struct _CONSOLE_API_MESSAGE
{
PCSR_CAPTURE_BUFFER CsrCaptureData;
CSR_API_NUMBER ApiNumber;
- ULONG Status; // ReturnValue; // NTSTATUS Status
+ NTSTATUS Status;
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;
- CSRSS_CLOSE_HANDLE CloseHandleRequest;
- CSRSS_VERIFY_HANDLE VerifyHandleRequest;
- CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
- CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
- CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
- 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;
- 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;
- CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
- 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_GET_PROCESS_LIST GetProcessListRequest;
+ /* Console initialization and uninitialization */
+ CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
+ CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
+ CONSOLE_FREECONSOLE FreeConsoleRequest;
+
+ /* Processes */
+ CONSOLE_GETPROCESSLIST GetProcessListRequest;
+ CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
+ CONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest;
+
+ /* Handles */
+ CONSOLE_OPENCONSOLE OpenConsoleRequest;
+ CONSOLE_CLOSEHANDLE CloseHandleRequest;
+ CONSOLE_VERIFYHANDLE VerifyHandleRequest;
+ CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
+ CONSOLE_GETHANDLEINFO GetHandleInfoRequest;
+ CONSOLE_SETHANDLEINFO SetHandleInfoRequest;
+
+ /* Cursor & Mouse */
+ CONSOLE_SHOWCURSOR ShowCursorRequest;
+ CONSOLE_SETCURSOR SetCursorRequest;
+ CONSOLE_GETSETCURSORINFO CursorInfoRequest;
+ CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
+ CONSOLE_GETMOUSEINFO GetMouseInfoRequest;
+
+ /* Screen-buffer */
+ CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
+ CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
+ CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
+ CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
+ CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
+
+ CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
+ CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
+
+ /* Console mode */
+ CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
+ CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
+ CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
+ CONSOLE_GETSETHWSTATE HardwareStateRequest;
+
+ /* Console window */
+ CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
+ CONSOLE_SETPALETTE SetPaletteRequest;
+ CONSOLE_GETSETCONSOLETITLE TitleRequest;
+ CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
+ CONSOLE_MENUCONTROL MenuControlRequest;
+ CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
+ CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
+ CONSOLE_GETWINDOW GetWindowRequest;
+ CONSOLE_SETICON SetIconRequest;
+
+ /* Read */
+ CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
+ CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
+ CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
+ CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
+ CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
+
+ /* Write */
+ CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
+ CONSOLE_WRITEINPUT WriteInputRequest;
+ CONSOLE_WRITEOUTPUT WriteOutputRequest;
+ CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
+
+ CONSOLE_FILLOUTPUTCODE FillOutputRequest;
+ CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
+
+ /* Aliases */
+ CONSOLE_ADDGETALIAS ConsoleAliasRequest;
+ CONSOLE_GETALLALIASES GetAllAliasesRequest;
+ CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
+ CONSOLE_GETALIASESEXES GetAliasesExesRequest;
+ CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
+
+ /* History */
+ CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
+ CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
+ CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
+ CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
+ CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
+ CONSOLE_SETHISTORYMODE SetHistoryModeRequest;
+
+ /* Input and Output Code Pages */
+ CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest;
+ CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest;
} 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 */