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;
- ULONG BufferSize;
- PVOID Buffer;
+ BOOLEAN UsingStaticBuffer;
+ BOOLEAN Unicode;
+
+ // 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;
- UNICODE_STRING ExeName;
- DWORD CtrlWakeupMask;
- DWORD ControlKeyState;
+ CHAR StaticBuffer[80];
+ PVOID Buffer; // BufPtr
+ ULONG NumBytes;
- ULONG BufferSize;
- PVOID Buffer;
+ ULONG CaptureBufferSize;
+
+ ULONG InitialNumBytes;
+ ULONG CtrlWakeupMask;
+ ULONG ControlKeyState;
+ BOOLEAN Unicode;
} CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
typedef struct
BOOLEAN Unicode;
} CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
-typedef struct
-{
- HANDLE OutputHandle;
-
- BOOL Unicode;
- COORD BufferSize;
- COORD BufferCoord; // WriteCoord
- SMALL_RECT WriteRegion;
- PCHAR_INFO CharInfo;
-} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
-
typedef struct
{
HANDLE ConsoleHandle;
CODE_ATTRIBUTE = 0x03
} CODE_TYPE;
+typedef union _CODE_ELEMENT
+{
+ CHAR AsciiChar;
+ WCHAR UnicodeChar;
+ WORD Attribute;
+} CODE_ELEMENT;
+
typedef struct
{
HANDLE ConsoleHandle;
COORD Coord;
CODE_TYPE CodeType;
- CHAR CodeStaticBuffer[80];
- union
- {
- PVOID pCode;
- PCHAR AsciiChar;
- PWCHAR UnicodeChar;
- PWORD Attribute;
- } pCode; // Either a pointer to a character or to an attribute.
+ 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,
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.
ULONG NumCodes;
} CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
typedef struct
{
+ HANDLE ConsoleHandle;
HANDLE OutputHandle;
- BOOL Unicode;
- COORD BufferSize;
- COORD BufferCoord;
- SMALL_RECT ReadRegion;
+ CHAR_INFO StaticBuffer;
PCHAR_INFO CharInfo;
+
+ SMALL_RECT ReadRegion;
+ BOOLEAN Unicode;
} CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ HANDLE OutputHandle;
+
+ CHAR_INFO StaticBuffer;
+ PCHAR_INFO CharInfo;
+
+ SMALL_RECT WriteRegion;
+ BOOLEAN Unicode;
+
+ ULONG Unknown;
+} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
+
typedef struct
{
HANDLE ConsoleHandle;