ConsolepReadConsoleOutput,
ConsolepWriteConsoleOutput,
ConsolepReadConsoleOutputString,
- // ConsolepWriteConsoleOutputString,
- // ConsolepFillConsoleOutput,
+ ConsolepWriteConsoleOutputString,
+ ConsolepFillConsoleOutput,
ConsolepGetMode,
// ConsolepGetNumberOfFonts,
ConsolepGetNumberOfInputEvents,
ConsolepSetCursorInfo,
// ConsolepSetWindowInfo,
ConsolepScrollScreenBuffer,
- // ConsolepSetTextAttribute,
+ ConsolepSetTextAttribute,
// ConsolepSetFont,
ConsolepSetIcon,
ConsolepReadConsole,
} 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
+{
+
+} 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;
+ ULONG nProcessIdsTotal;
PDWORD pProcessIds;
- ULONG nProcessIdsTotal;
} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
typedef struct
BOOL Unicode;
ULONG NrCharactersToWrite;
ULONG NrCharactersWritten;
- HANDLE UnpauseEvent;
- BYTE Buffer[0];
+ // HANDLE UnpauseEvent;
+
+ ULONG BufferSize;
+ PVOID Buffer;
} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
typedef struct
BOOL Unicode;
WORD NrCharactersToRead;
WORD NrCharactersRead;
- HANDLE EventHandle;
-
- PVOID Buffer;
- ULONG BufferSize;
UNICODE_STRING ExeName;
DWORD CtrlWakeupMask;
DWORD ControlKeyState;
+
+ ULONG BufferSize;
+ PVOID Buffer;
} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
typedef struct
COORD Position;
} CSRSS_SET_CURSOR_POSITION, *PCSRSS_SET_CURSOR_POSITION;
-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;
- 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;
-
typedef struct
{
HANDLE ConsoleHandle;
typedef struct
{
- HANDLE ConsoleHandle;
- CODE_TYPE CodeType;
+ HANDLE ConsoleHandle;
DWORD NumCodesToRead;
COORD ReadCoord;
DWORD CodesRead;
+ CODE_TYPE CodeType;
union
{
PVOID pCode;
} 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;
+ USHORT CodeType;
+
+ ULONG BufferSize;
+ WORD Length;
+ COORD Coord;
+ COORD EndCoord;
+
+ 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
{
BOOL Unicode;
BOOL bRead; // TRUE --> Read ; FALSE --> Peek
- DWORD Length;
- INPUT_RECORD* InputRecord;
-
- /** For Read **/
ULONG InputsRead;
- // INPUT_RECORD Input;
- BOOL MoreEvents;
- HANDLE Event;
+
+ ULONG Length;
+ PINPUT_RECORD InputRecord;
} CSRSS_GET_CONSOLE_INPUT, *PCSRSS_GET_CONSOLE_INPUT;
typedef struct
CSRSS_READ_CONSOLE_OUTPUT_CODE ReadConsoleOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
/* Write */
- CSRSS_WRITE_CONSOLE WriteConsoleRequest;
+ CSRSS_WRITE_CONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
- CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
- CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
+ CSRSS_WRITE_CONSOLE_OUTPUT_CODE WriteConsoleOutputCodeRequest;
CSRSS_FILL_OUTPUT FillOutputRequest;
- CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
CSRSS_SET_ATTRIB SetAttribRequest;
/* Aliases */
} 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 */