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;
- ULONG NrCharactersToRead;
- ULONG 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
BOOL Unicode;
COORD BufferSize;
- COORD BufferCoord;
+ COORD BufferCoord; // WriteCoord
SMALL_RECT WriteRegion;
PCHAR_INFO CharInfo;
} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
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;
-
- ULONG BufferSize; // Seems unusued
- WORD Length;
- COORD Coord;
- COORD EndCoord;
-
- ULONG NrCharactersWritten; // Seems unusued
+ COORD Coord;
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;
+ 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.
+
+ 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.
-
- COORD Coord;
- ULONG Length;
+ CODE_TYPE CodeType;
+ CODE_ELEMENT Code; // Either a character or an attribute.
- ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
+ ULONG NumCodes;
} CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
typedef struct