ConsolepReadConsoleOutput,
ConsolepWriteConsoleOutput,
ConsolepReadConsoleOutputString,
- // ConsolepWriteConsoleOutputString,
+ ConsolepWriteConsoleOutputString,
ConsolepFillConsoleOutput,
ConsolepGetMode,
// ConsolepGetNumberOfFonts,
} 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;
- 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;
} 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;
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_SET_ATTRIB SetAttribRequest;
} 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 */