#define CONSRV_FIRST_API_NUMBER 512
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
-// plus a little bit of Windows 7.
typedef enum _CONSRV_API_NUMBER
{
ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
ConsolepWriteConsoleOutputString,
ConsolepFillConsoleOutput,
ConsolepGetMode,
- // ConsolepGetNumberOfFonts,
+ ConsolepGetNumberOfFonts,
ConsolepGetNumberOfInputEvents,
ConsolepGetScreenBufferInfo,
ConsolepGetCursorInfo,
- // ConsolepGetMouseInfo,
- // ConsolepGetFontInfo,
- // ConsolepGetFontSize,
- // ConsolepGetCurrentFont,
+ ConsolepGetMouseInfo,
+ ConsolepGetFontInfo,
+ ConsolepGetFontSize,
+ ConsolepGetCurrentFont,
ConsolepSetMode,
ConsolepSetActiveScreenBuffer,
ConsolepFlushInputBuffer,
ConsolepSetWindowInfo,
ConsolepScrollScreenBuffer,
ConsolepSetTextAttribute,
- // ConsolepSetFont,
+ 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,
- // ConsolepSetCursor,
- // ConsolepShowCursor,
- // ConsolepMenuControl,
- // ConsolepSetPalette,
+ ConsolepInvalidateBitMapRect,
+ ConsolepVDMOperation,
+ ConsolepSetCursor,
+ ConsolepShowCursor,
+ ConsolepMenuControl,
+ ConsolepSetPalette,
ConsolepSetDisplayMode,
- // ConsolepRegisterVDM,
+ ConsolepRegisterVDM,
ConsolepGetHardwareState,
ConsolepSetHardwareState,
ConsolepGetDisplayMode,
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;
- DWORD FillAttribute;
- COORD ScreenBufferSize;
- WORD ShowWindow;
- POINT ConsoleWindowOrigin;
- SIZE ConsoleWindowSize;
- // UNICODE_STRING ConsoleTitle;
+ 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
- WCHAR AppPath[MAX_PATH + 1]; // Full path of the launched app
+ 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 _CONSOLE_CONNECTION_INFO
+typedef struct _CONSRV_API_CONNECTINFO
{
- BOOL ConsoleNeeded; // Used for GUI apps only.
-
- /* Adapted from CONSOLE_ALLOCCONSOLE */
- CONSOLE_START_INFO ConsoleStartInfo;
-
- HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
+ HANDLE ConsoleHandle;
+ HANDLE InputWaitHandle;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
- HANDLE InputWaitHandle;
- LPTHREAD_START_ROUTINE CtrlDispatcher;
- LPTHREAD_START_ROUTINE PropDispatcher;
-} CONSOLE_CONNECTION_INFO, *PCONSOLE_CONNECTION_INFO;
+ HANDLE Event1;
+ HANDLE Event2;
+ /* Adapted from CONSOLE_ALLOCCONSOLE */
+ CONSOLE_START_INFO ConsoleStartInfo;
+} CONSRV_API_CONNECTINFO, *PCONSRV_API_CONNECTINFO;
+#if defined(_M_IX86)
+C_ASSERT(sizeof(CONSRV_API_CONNECTINFO) == 0x638);
+#endif
typedef struct
{
- ULONG nMaxIds;
- ULONG nProcessIdsTotal;
- PDWORD pProcessIds;
+ HANDLE ConsoleHandle;
+ ULONG ProcessCount;
+ PDWORD ProcessIdsList;
} CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
typedef struct
{
+ HANDLE ConsoleHandle;
+ DWORD CtrlEvent;
+ DWORD ProcessGroupId;
+} CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+} CONSOLE_NOTIFYLASTCLOSE, *PCONSOLE_NOTIFYLASTCLOSE;
+
+
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- BOOL Unicode;
- ULONG NrCharactersToWrite;
- ULONG NrCharactersWritten;
+ CHAR StaticBuffer[80];
+ PVOID Buffer; // BufPtr
+ ULONG NumBytes;
+
+ // On Windows, the client never uses this member
+ ULONG Reserved1;
+
+ BOOLEAN UsingStaticBuffer;
+ BOOLEAN Unicode;
- ULONG BufferSize;
- PVOID Buffer;
+ // On Windows, the client never uses this member
+ CHAR Reserved2[6];
} CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
- BOOL Unicode;
- WORD NrCharactersToRead;
- WORD NrCharactersRead;
+ USHORT ExeLength;
+
+ CHAR StaticBuffer[80];
+ PVOID Buffer; // BufPtr
+ ULONG NumBytes;
- UNICODE_STRING ExeName;
- DWORD CtrlWakeupMask;
- DWORD ControlKeyState;
+ ULONG CaptureBufferSize;
- ULONG BufferSize;
- PVOID Buffer;
+ ULONG InitialNumBytes;
+ ULONG CtrlWakeupMask;
+ ULONG ControlKeyState;
+ BOOLEAN Unicode;
} CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
typedef struct
{
PCONSOLE_START_INFO ConsoleStartInfo;
- HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
typedef struct
{
DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
- HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
typedef struct
{
- ULONG Dummy;
+ HANDLE ConsoleHandle;
} CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- CONSOLE_SCREEN_BUFFER_INFO Info;
+ COORD ScreenBufferSize;
+ COORD CursorPosition;
+ COORD ViewOrigin;
+ WORD Attributes;
+ COORD ViewSize;
+ COORD MaximumViewSize;
} CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- COORD Position;
+ COORD Position;
} CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
typedef struct
{
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ BOOL Show;
+ INT RefCount;
+} CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ HCURSOR CursorHandle;
+} CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
CONSOLE_CURSOR_INFO Info;
+/*
+ DWORD Size;
+ BOOLEAN Visible;
+*/
} CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
typedef struct
{
+ HANDLE ConsoleHandle;
+ ULONG NumButtons;
+} CONSOLE_GETMOUSEINFO, *PCONSOLE_GETMOUSEINFO;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- WORD Attrib;
+ WORD Attributes;
} CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
typedef struct
{
- HANDLE ConsoleHandle; /* A valid input or output console handle */
- DWORD ConsoleMode;
+ HANDLE ConsoleHandle;
+ HANDLE Handle;
+ DWORD Mode;
} CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
-
-#define CONSOLE_WINDOWED 0 /* Internal console hardware state */
typedef struct
{
- // HANDLE OutputHandle;
- DWORD DisplayMode;
+ HANDLE ConsoleHandle;
+ DWORD DisplayMode; // ModeFlags
} CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- DWORD DisplayMode;
+ DWORD DisplayMode; // ModeFlags
COORD NewSBDim;
+ HANDLE EventHandle;
} CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
/*
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
+ DWORD Flags;
DWORD State;
} CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
+
typedef struct
{
- HANDLE OutputHandle; /* Handle to newly created screen buffer */
-
- DWORD Access;
- DWORD ShareMode;
- BOOL Inheritable;
+ HANDLE ConsoleHandle;
+ 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
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle; /* Handle to screen buffer to switch to */
} CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
typedef struct
{
- DWORD Length;
- PWCHAR Title;
-} CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ SMALL_RECT Region;
+} CONSOLE_INVALIDATEDIBITS, *PCONSOLE_INVALIDATEDIBITS;
typedef struct
{
- HANDLE OutputHandle;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ HPALETTE PaletteHandle;
+ UINT Usage;
+} CONSOLE_SETPALETTE, *PCONSOLE_SETPALETTE;
- BOOL Unicode;
- COORD BufferSize;
- COORD BufferCoord;
- SMALL_RECT WriteRegion;
- CHAR_INFO* CharInfo;
-} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ ULONG Length;
+ PVOID Title;
+ BOOLEAN Unicode;
+} CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
} CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
typedef struct
{
- HANDLE OutputHandle;
-
- BOOL Unicode;
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
SMALL_RECT ScrollRectangle;
- BOOL UseClipRectangle;
SMALL_RECT ClipRectangle;
- COORD DestinationOrigin;
- CHAR_INFO Fill;
+ BOOL UseClipRectangle;
+ COORD DestinationOrigin;
+ CHAR_INFO Fill;
+ BOOLEAN Unicode;
} CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
CODE_ATTRIBUTE = 0x03
} CODE_TYPE;
-typedef struct
+typedef union _CODE_ELEMENT
{
- HANDLE OutputHandle;
-
- DWORD NumCodesToRead;
- COORD ReadCoord;
- COORD EndCoord;
-
- 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;
+ CHAR AsciiChar;
+ WCHAR UnicodeChar;
+ WORD Attribute;
+} CODE_ELEMENT;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
+ COORD Coord;
- ULONG BufferSize;
- WORD Length;
- COORD Coord;
- COORD EndCoord;
-
- ULONG NrCharactersWritten;
+ CODE_TYPE CodeType;
+ CHAR CodeStaticBuffer[80]; // == 40 * sizeof(CODE_ELEMENT)
+ PVOID pCode; // Either a pointer to a character or to an attribute.
+ // union
+ // {
+ // PVOID pCode;
+ // PCHAR AsciiChar;
+ // PWCHAR UnicodeChar;
+ // PWORD Attribute;
+ // } pCode; // Either a pointer to a character or to an attribute.
- USHORT CodeType;
- union
- {
- // PVOID String;
- PVOID pCode;
- PCHAR AsciiChar;
- PWCHAR UnicodeChar;
- PWORD Attribute;
- } pCode; // Either a pointer to a character or to an attribute.
-} CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
+ ULONG NumCodes;
+} CONSOLE_READOUTPUTCODE , *PCONSOLE_READOUTPUTCODE,
+ CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
+ COORD WriteCoord;
- CODE_TYPE CodeType;
- union
- {
- CHAR AsciiChar;
- WCHAR UnicodeChar;
- WORD Attribute;
- } Code; // Either a character or an attribute.
+ CODE_TYPE CodeType;
+ CODE_ELEMENT Code; // Either a character or an attribute.
- COORD Coord;
- ULONG Length;
-
- ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
+ ULONG NumCodes;
} CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
typedef struct
{
- HANDLE InputHandle;
- BOOL Unicode;
- BOOL bRead; // TRUE --> Read ; FALSE --> Peek
-
- ULONG InputsRead;
-
- ULONG Length;
- PINPUT_RECORD InputRecord;
+ HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+ INPUT_RECORD RecordStaticBuffer[5];
+ PINPUT_RECORD RecordBufPtr;
+ ULONG NumRecords;
+ WORD Flags;
+ BOOLEAN Unicode;
} CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
typedef struct
{
+ HANDLE ConsoleHandle;
+ HANDLE InputHandle;
+ INPUT_RECORD RecordStaticBuffer[5];
+ PINPUT_RECORD RecordBufPtr;
+ ULONG NumRecords;
+ BOOLEAN Unicode;
+ BOOLEAN AppendToEnd;
+} CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- BOOL Unicode;
- COORD BufferSize;
- COORD BufferCoord;
+ CHAR_INFO StaticBuffer;
+ PCHAR_INFO CharInfo;
+
SMALL_RECT ReadRegion;
- CHAR_INFO* CharInfo;
+ BOOLEAN Unicode;
} CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
typedef struct
{
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+
+ CHAR_INFO StaticBuffer;
+ PCHAR_INFO CharInfo;
+
+ SMALL_RECT WriteRegion;
+ BOOLEAN Unicode;
+
+ /*
+ * If we are going to write too large (>= 64 kB, size of the CSR heap)
+ * data buffers, we allocate a heap buffer in the process' memory, and
+ * CSR will read it via NtReadVirtualMemory.
+ */
+ BOOLEAN UseVirtualMemory;
+} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE InputHandle;
- BOOL Unicode;
- DWORD Length;
- INPUT_RECORD* InputRecord;
-} CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
+ ULONG NumberOfEvents;
+} CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
+
+
typedef struct
{
HANDLE ConsoleHandle;
+ HANDLE Handle;
} CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
typedef struct
{
+ BOOL IsValid;
HANDLE ConsoleHandle;
+ HANDLE Handle;
} CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
typedef struct
{
- HANDLE ConsoleHandle;
- DWORD Access;
- BOOL Inheritable;
- DWORD Options;
+ HANDLE ConsoleHandle;
+ HANDLE SourceHandle;
+ DWORD DesiredAccess;
+ BOOLEAN InheritHandle;
+ DWORD Options;
+ HANDLE TargetHandle;
} CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HANDLE Handle;
+ DWORD Flags;
+} CONSOLE_GETHANDLEINFO, *PCONSOLE_GETHANDLEINFO;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HANDLE Handle;
+ DWORD Mask;
+ DWORD Flags;
+} CONSOLE_SETHANDLEINFO, *PCONSOLE_SETHANDLEINFO;
+
/*
* Type of handles.
*/
{
HANDLE ConsoleHandle;
CONSOLE_HANDLE_TYPE HandleType;
- DWORD Access;
- BOOL Inheritable;
- DWORD ShareMode;
+ DWORD DesiredAccess;
+ BOOL InheritHandle;
+ DWORD ShareMode;
+ HANDLE Handle;
} CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
+
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
COORD Size;
} CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
typedef struct
{
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+ DWORD CmdIdLow;
+ DWORD CmdIdHigh;
+ HMENU MenuHandle;
+} CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ BOOL Enable;
+} CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
BOOL Absolute;
SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
typedef struct
{
- HWND WindowHandle;
+ HANDLE ConsoleHandle;
+ HWND WindowHandle;
} CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
typedef struct
{
- HICON WindowIcon;
+ HANDLE ConsoleHandle;
+ HICON IconHandle;
} CONSOLE_SETICON, *PCONSOLE_SETICON;
typedef struct
{
- ULONG SourceLength;
- ULONG TargetLength; // Also used for storing the number of bytes written.
- ULONG ExeLength;
- LPWSTR Source;
- LPWSTR Target;
- LPWSTR Exe;
+ 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 ExeLength;
- DWORD AliasesBufferLength;
- LPWSTR ExeName;
- LPWSTR AliasesBuffer;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+ ULONG AliasesBufferLength;
+ PVOID AliasesBuffer;
} CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
typedef struct
{
- DWORD Length;
- DWORD ExeLength;
- LPWSTR ExeName;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ ULONG Length;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
} CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
typedef struct
{
- DWORD Length;
- LPWSTR ExeNames;
+ HANDLE ConsoleHandle;
+ ULONG Length ; // ExeLength; // ExesLength
+ PVOID ExeNames;
+ BOOLEAN Unicode;
} CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
typedef struct
{
- DWORD Length;
+ HANDLE ConsoleHandle;
+ ULONG Length;
+ BOOLEAN Unicode;
} CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
typedef struct
{
- UNICODE_STRING ExeName;
- PWCHAR History;
- DWORD Length;
+ 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;
+ HANDLE ConsoleHandle;
+ ULONG HistoryLength;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
} CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
typedef struct
{
- UNICODE_STRING ExeName;
+ HANDLE ConsoleHandle;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
} CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
-typedef struct
-{
- UNICODE_STRING ExeName;
- DWORD NumCommands;
-} CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
-
typedef struct
{
UINT HistoryBufferSize;
DWORD dwFlags;
} CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
-
-
typedef struct
{
- DWORD Event;
- DWORD ProcessGroup;
-} CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
+ HANDLE ConsoleHandle;
+ ULONG NumCommands;
+ USHORT ExeLength;
+ PVOID ExeName;
+ BOOLEAN Unicode;
+ BOOLEAN Unicode2;
+} CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
typedef struct
{
- HANDLE InputHandle;
- DWORD NumInputEvents;
-} CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
+ HANDLE ConsoleHandle;
+ ULONG Mode;
+} CONSOLE_SETHISTORYMODE, *PCONSOLE_SETHISTORYMODE;
+
+
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- COORD Size;
+ COORD Size;
} CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
typedef struct
{
+ HANDLE ConsoleHandle;
CONSOLE_SELECTION_INFO Info;
} CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
typedef struct
{
- BOOL InputCP; // TRUE : Input Code Page ; FALSE : Output Code Page
- UINT CodePage;
-} CONSOLE_GETSETINPUTOUTPUTCP, *PCONSOLE_GETSETINPUTOUTPUTCP;
+ HANDLE ConsoleHandle;
+ UINT CodePage;
+ BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
+} CONSOLE_GETINPUTOUTPUTCP, *PCONSOLE_GETINPUTOUTPUTCP;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ UINT CodePage;
+ BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
+ HANDLE EventHandle;
+} CONSOLE_SETINPUTOUTPUTCP, *PCONSOLE_SETINPUTOUTPUTCP;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ CHAR LayoutBuffer[KL_NAMELENGTH * sizeof(WCHAR)]; // Can hold up to 9 wchars
+ BOOL Ansi;
+} CONSOLE_GETKBDLAYOUTNAME, *PCONSOLE_GETKBDLAYOUTNAME;
typedef struct _CONSOLE_API_MESSAGE
{
CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
CONSOLE_FREECONSOLE FreeConsoleRequest;
- /* Process list */
+ /* 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 */
+ /* Cursor & Mouse */
+ CONSOLE_SHOWCURSOR ShowCursorRequest;
+ CONSOLE_SETCURSOR SetCursorRequest;
CONSOLE_GETSETCURSORINFO CursorInfoRequest;
CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
+ CONSOLE_GETMOUSEINFO GetMouseInfoRequest;
/* Screen-buffer */
CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
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;
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_GETCOMMANDHISTORY GetCommandHistoryRequest;
CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
- CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
+ CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
+ CONSOLE_SETHISTORYMODE SetHistoryModeRequest;
- CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
- CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
-
- /* Input and Output Code Pages */
- CONSOLE_GETSETINPUTOUTPUTCP ConsoleCPRequest;
+ /* Input and Output Code Pages; keyboard */
+ CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest;
+ CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest;
+ CONSOLE_GETKBDLAYOUTNAME GetKbdLayoutNameRequest;
} Data;
} CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;