[KERNEL32]
[reactos.git] / include / reactos / subsys / win / conmsg.h
index d4273bd..62b98f2 100644 (file)
@@ -26,7 +26,7 @@ typedef enum _CONSRV_API_NUMBER
     ConsolepReadConsoleOutput,
     ConsolepWriteConsoleOutput,
     ConsolepReadConsoleOutputString,
-    // ConsolepWriteConsoleOutputString,
+    ConsolepWriteConsoleOutputString,
     ConsolepFillConsoleOutput,
     ConsolepGetMode,
     // ConsolepGetNumberOfFonts,
@@ -112,22 +112,21 @@ typedef enum _CONSRV_API_NUMBER
 } 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
@@ -136,8 +135,10 @@ 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
@@ -146,14 +147,13 @@ 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
@@ -183,26 +183,6 @@ 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;
@@ -299,6 +279,28 @@ typedef struct
     } 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;
@@ -323,14 +325,10 @@ 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
@@ -583,11 +581,10 @@ typedef struct _CONSOLE_API_MESSAGE
         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;
@@ -616,6 +613,9 @@ typedef struct _CONSOLE_API_MESSAGE
     } 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 */