25#define ConsoleOutputUnicodeToAnsiChar(Console, dChar, sWChar) \
27 ASSERT((ULONG_PTR)(dChar) != (ULONG_PTR)(sWChar)); \
28 WideCharToMultiByte((Console)->OutputCodePage, 0, (sWChar), 1, (dChar), 1, NULL, NULL); \
31#define ConsoleOutputAnsiToUnicodeChar(Console, dWChar, sChar) \
33 ASSERT((ULONG_PTR)(dWChar) != (ULONG_PTR)(sChar)); \
34 MultiByteToWideChar((Console)->OutputCodePage, 0, (sChar), 1, (dWChar), 1); \
67 if ((TextModeInfo->ScreenBufferSize.X == 0) ||
68 (TextModeInfo->ScreenBufferSize.Y == 0))
82 TextModeInfo->ScreenBufferSize.X *
83 TextModeInfo->ScreenBufferSize.Y *
91 NewBuffer->ScreenBufferSize = TextModeInfo->ScreenBufferSize;
92 NewBuffer->OldScreenBufferSize = NewBuffer->ScreenBufferSize;
98 NewBuffer->ViewSize.X =
min(
max(TextModeInfo->ViewSize.X, 1), NewBuffer->ScreenBufferSize.X);
99 NewBuffer->ViewSize.Y =
min(
max(TextModeInfo->ViewSize.Y, 1), NewBuffer->ScreenBufferSize.Y);
100 NewBuffer->OldViewSize = NewBuffer->ViewSize;
102 NewBuffer->ViewOrigin.X = NewBuffer->ViewOrigin.Y = 0;
105 NewBuffer->CursorBlinkOn = NewBuffer->ForceCursorOff =
FALSE;
106 NewBuffer->CursorInfo.bVisible = (TextModeInfo->IsCursorVisible && (TextModeInfo->CursorSize != 0));
107 NewBuffer->CursorInfo.dwSize =
min(
max(TextModeInfo->CursorSize, 0), 100);
113 for (NewBuffer->CursorPosition.Y = 0 ; NewBuffer->CursorPosition.Y < NewBuffer->ScreenBufferSize.Y; NewBuffer->CursorPosition.Y++)
117 NewBuffer->CursorPosition.X = NewBuffer->CursorPosition.Y = 0;
145 ASSERT(X < Buff->ScreenBufferSize.X);
146 ASSERT(Y < Buff->ScreenBufferSize.Y);
147 return &Buff->
Buffer[((
Y + Buff->
VirtualY) % Buff->ScreenBufferSize.Y) * Buff->ScreenBufferSize.X +
X];
156 for (
Pos = 0;
Pos < Buff->ScreenBufferSize.X;
Pos++,
Ptr++)
159 Ptr->Char.UnicodeChar =
L' ';
173 UpdateRect->Right = Buff->ScreenBufferSize.X - 1;
184 UpdateRect->Bottom = Buff->ScreenBufferSize.Y - 1;
216 ASSERT(SrcRegion->Bottom >= 0 && SrcRegion->Bottom <
ScreenBuffer->ScreenBufferSize.Y);
222 if ((SrcRegion->Left == DstOrigin->X) && (SrcRegion->Top == DstOrigin->Y))
231 SY = SrcRegion->Bottom;
232 DY = DstOrigin->Y + (SrcRegion->Bottom - SrcRegion->Top);
237 SXOrg = SrcRegion->Left;
238 DXOrg = DstOrigin->X;
243 SXOrg = SrcRegion->Right;
244 DXOrg = DstOrigin->X + (SrcRegion->Right - SrcRegion->Left);
253 for (
i = 0;
i <
Height; ++
i, SY += YDelta, DY += YDelta)
255 for (;
Height-- > 0; SY += YDelta, DY += YDelta)
276 for (
j = 0;
j <
Width; ++
j, SX += XDelta,
DX += XDelta)
306 ExcludeRegion =
NULL;
316 ASSERT(ExcludeRegion->Left >= 0 && ExcludeRegion->Left <
ScreenBuffer->ScreenBufferSize.X);
317 ASSERT(ExcludeRegion->Right >= 0 && ExcludeRegion->Right <
ScreenBuffer->ScreenBufferSize.X);
318 ASSERT(ExcludeRegion->Top >= 0 && ExcludeRegion->Top <
ScreenBuffer->ScreenBufferSize.Y);
319 ASSERT(ExcludeRegion->Bottom >= 0 && ExcludeRegion->Bottom <
ScreenBuffer->ScreenBufferSize.Y);
329 for (
X =
Region->Left; X <= Region->Right; ++
X)
333 if (!ExcludeRegion ||
334 !(
X >= ExcludeRegion->Left && X <= ExcludeRegion->Right &&
335 Y >= ExcludeRegion->Top && Y <= ExcludeRegion->
Bottom))
366 WORD CurrentAttribute;
404 for (CurrentY = 0; CurrentY <
ScreenBuffer->ScreenBufferSize.Y && CurrentY <
Size.Y; CurrentY++)
418 Ptr->Char.UnicodeChar =
L' ';
420 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
433 CurrentAttribute &= ~COMMON_LVB_SBCSDBCS;
438 for (
i = 0;
i < diff;
i++)
441 Ptr->Char.UnicodeChar =
L' ';
442 Ptr->Attributes = CurrentAttribute;
453 for (
i = 0;
i < diff;
i++)
456 Ptr->Char.UnicodeChar =
L' ';
478 ULONG NumEventsWritten;
506 ULONG NumCodesToWrite;
507 USHORT OldScreenAttrib, OldPopupAttrib;
518 NewScreenAttrib &= ~COMMON_LVB_SBCSDBCS;
519 NewPopupAttrib &= ~COMMON_LVB_SBCSDBCS;
521 NumCodesToWrite =
Buffer->ScreenBufferSize.X *
Buffer->ScreenBufferSize.Y;
522 OldScreenAttrib =
Buffer->ScreenDefaultAttrib;
523 OldPopupAttrib =
Buffer->PopupDefaultAttrib;
525 for (
Y = 0;
Y <
Buffer->ScreenBufferSize.Y; ++
Y)
528 for (
X = 0;
X <
Buffer->ScreenBufferSize.X; ++
X)
535 if ((
Ptr->Attributes & 0x0F) == (OldScreenAttrib & 0x0F))
536 Ptr->Attributes = (
Ptr->Attributes & 0xFFF0) | (NewScreenAttrib & 0x0F);
537 if ((
Ptr->Attributes & 0x0F) == (OldPopupAttrib & 0x0F))
538 Ptr->Attributes = (
Ptr->Attributes & 0xFFF0) | (NewPopupAttrib & 0x0F);
541 if ((
Ptr->Attributes & 0xF0) == (OldScreenAttrib & 0xF0))
542 Ptr->Attributes = (
Ptr->Attributes & 0xFF0F) | (NewScreenAttrib & 0xF0);
543 if ((
Ptr->Attributes & 0xF0) == (OldPopupAttrib & 0xF0))
544 Ptr->Attributes = (
Ptr->Attributes & 0xFF0F) | (NewPopupAttrib & 0xF0);
551 Buffer->ScreenDefaultAttrib = NewScreenAttrib;
552 Buffer->PopupDefaultAttrib = NewPopupAttrib;
589 CapturedReadRegion = *ReadRegion;
593 Buffer->ScreenBufferSize.Y - 1,
594 Buffer->ScreenBufferSize.X - 1);
604 CurCharInfo = CharInfo;
606 for (
Y = CapturedReadRegion.
Top;
Y <= CapturedReadRegion.
Bottom; ++
Y)
609 for (
X = CapturedReadRegion.
Left;
X <= CapturedReadRegion.
Right; ++
X)
621#if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
623 CurCharInfo->
Attributes = (
Ptr->Attributes & ~COMMON_LVB_SBCSDBCS);
632 *ReadRegion = CapturedReadRegion;
658 CapturedWriteRegion = *WriteRegion;
662 Buffer->ScreenBufferSize.Y - 1,
663 Buffer->ScreenBufferSize.X - 1);
673 CurCharInfo = CharInfo;
675 for (
Y = CapturedWriteRegion.
Top;
Y <= CapturedWriteRegion.
Bottom; ++
Y)
678 for (
X = CapturedWriteRegion.
Left;
X <= CapturedWriteRegion.
Right; ++
X)
697 *WriteRegion = CapturedWriteRegion;
728 CapturedWriteRegion = *WriteRegion;
732 Buffer->ScreenBufferSize.Y - 1,
733 Buffer->ScreenBufferSize.X - 1);
745 for (
Y = CapturedWriteRegion.
Top;
Y <= CapturedWriteRegion.
Bottom; ++
Y)
747 CurCharInfo = CharInfo +
Y * CharInfoSize.X + CapturedWriteRegion.
Left;
750 for (
X = CapturedWriteRegion.
Left;
X <= CapturedWriteRegion.
Right; ++
X)
822 Written = NumCharsToWrite;
829 if (NumCharsWritten) *NumCharsWritten = Written;
847 SHORT XStart = ReadCoord->X;
855 for (
Y = ReadCoord->Y; Y < Buffer->ScreenBufferSize.Y; ++
Y)
858 for (
X = XStart;
X <
Buffer->ScreenBufferSize.X; ++
X)
860 if (nNumChars >= NumCodesToRead)
876 if (NumCodesToRead > 0) --NumCodesToRead;
897 *NumCodesRead = nNumChars;
912 SHORT XStart = ReadCoord->X;
916 for (
Y = ReadCoord->Y; Y < Buffer->ScreenBufferSize.Y; ++
Y)
919 for (
X = XStart;
X <
Buffer->ScreenBufferSize.X; ++
X)
921 if (nNumChars >= NumCodesToRead)
936 *NumCodesRead = nNumChars;
967 if ( ReadCoord->X < 0 || ReadCoord->X >=
Buffer->ScreenBufferSize.X ||
968 ReadCoord->Y < 0 || ReadCoord->Y >=
Buffer->ScreenBufferSize.Y )
973 NumCodesToRead =
min(NumCodesToRead, (
ULONG)
Buffer->ScreenBufferSize.X *
Buffer->ScreenBufferSize.Y);
1030 SHORT XStart = WriteCoord->X;
1031 ULONG nNumChars = 0;
1059 NumCodesToWrite =
Length;
1063 for (
Y = WriteCoord->Y; Y < Buffer->ScreenBufferSize.Y; ++
Y)
1066 for (
X = XStart;
X <
Buffer->ScreenBufferSize.X; ++
X)
1068 if (nNumChars >= NumCodesToWrite)
1075 if (
X >=
Buffer->ScreenBufferSize.X - 1)
1083 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
1088 Ptr->Char.UnicodeChar =
L' ';
1089 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
1113 if (NumCodesWritten)
1114 *NumCodesWritten = nNumChars;
1129 SHORT XStart = WriteCoord->X;
1130 ULONG nNumChars = 0;
1133 for (
Y = WriteCoord->Y; Y < Buffer->ScreenBufferSize.Y; ++
Y)
1136 for (
X = XStart;
X <
Buffer->ScreenBufferSize.X; ++
X)
1138 if (nNumChars >= NumCodesToWrite)
1154 if (NumCodesWritten)
1155 *NumCodesWritten = nNumChars;
1181 if (NumCodesWritten)
1182 *NumCodesWritten = 0;
1188 if ( WriteCoord->X < 0 || WriteCoord->X >=
Buffer->ScreenBufferSize.X ||
1189 WriteCoord->Y < 0 || WriteCoord->Y >=
Buffer->ScreenBufferSize.Y )
1194 NumCodesToWrite =
min(NumCodesToWrite, (
ULONG)
Buffer->ScreenBufferSize.X *
Buffer->ScreenBufferSize.Y);
1261 ULONG nNumChars = 0;
1273 if (NumCodesWritten)
1274 *NumCodesWritten = 0;
1276 if (NumCodesToWrite == 0)
1280 if ( WriteCoord->X < 0 || WriteCoord->X >=
Buffer->ScreenBufferSize.X ||
1281 WriteCoord->Y < 0 || WriteCoord->Y >=
Buffer->ScreenBufferSize.Y )
1286 NumCodesToWrite =
min(NumCodesToWrite, (
ULONG)
Buffer->ScreenBufferSize.X *
Buffer->ScreenBufferSize.Y);
1296 XStart = WriteCoord->X;
1311 Ptr->Char.UnicodeChar =
L' ';
1312 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
1317 for (
Y = WriteCoord->Y; Y < Buffer->ScreenBufferSize.Y; ++
Y)
1320 for (
X = XStart;
X <
Buffer->ScreenBufferSize.X; ++
X)
1322 if (nNumChars >= NumCodesToWrite)
1329 Ptr->Char.UnicodeChar =
Code.UnicodeChar;
1330 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
1343 Ptr->Attributes |= (
Code.Attribute & ~COMMON_LVB_SBCSDBCS);
1356 if ((nNumChars & 1) & bFullwidth)
1358 if (
X +
Y *
Buffer->ScreenBufferSize.X > 0)
1361 Ptr->Char.UnicodeChar =
L' ';
1362 Ptr->Attributes &= ~COMMON_LVB_SBCSDBCS;
1366 if (NumCodesWritten)
1367 *NumCodesWritten = nNumChars;
1389 COORD LargestWindowSize;
1401 *ScreenBufferSize =
Buffer->ScreenBufferSize;
1403 *ViewOrigin =
Buffer->ViewOrigin;
1412 LargestWindowSize.
X =
min(LargestWindowSize.
X,
Buffer->ScreenBufferSize.X);
1413 LargestWindowSize.
Y =
min(LargestWindowSize.
Y,
Buffer->ScreenBufferSize.Y);
1414 *MaximumViewSize = LargestWindowSize;
1464 COORD CapturedDestinationOrigin;
1472 (UseClipRectangle && (ClipRectangle ==
NULL)) || DestinationOrigin ==
NULL)
1480 CapturedDestinationOrigin = *DestinationOrigin;
1484 Buffer->ScreenBufferSize.Y - 1,
1485 Buffer->ScreenBufferSize.X - 1);
1492 if (ScrollRectangle->Left < 0)
1493 CapturedDestinationOrigin.
X -= ScrollRectangle->Left;
1494 if (ScrollRectangle->Top < 0)
1495 CapturedDestinationOrigin.
Y -= ScrollRectangle->Top;
1501 if (UseClipRectangle)
1503 CapturedClipRectangle = *ClipRectangle;
1527 CapturedDestinationOrigin.
Y,
1528 CapturedDestinationOrigin.
X,
1538 SrcRegion.
Left += DstRegion.
Left - CapturedDestinationOrigin.
X;
1539 SrcRegion.
Top += DstRegion.
Top - CapturedDestinationOrigin.
Y;
1544 CapturedDestinationOrigin.
X = DstRegion.
Left;
1545 CapturedDestinationOrigin.
Y = DstRegion.
Top;
1554 FillChar.Char.UnicodeChar = tmp;
1557 FillChar.Attributes &= ~COMMON_LVB_SBCSDBCS;
1585 COORD LargestWindowSize;
1593 CapturedWindowRect = *WindowRect;
1598 CapturedWindowRect.
Left +=
Buffer->ViewOrigin.X;
1599 CapturedWindowRect.
Top +=
Buffer->ViewOrigin.Y;
1622 LargestWindowSize.
X =
min(LargestWindowSize.
X,
Buffer->ScreenBufferSize.X);
1623 LargestWindowSize.
Y =
min(LargestWindowSize.
Y,
Buffer->ScreenBufferSize.Y);
1631 if (CapturedWindowRect.
Left < 0)
1633 CapturedWindowRect.
Right -= CapturedWindowRect.
Left;
1634 CapturedWindowRect.
Left = 0;
1636 if (CapturedWindowRect.
Top < 0)
1638 CapturedWindowRect.
Bottom -= CapturedWindowRect.
Top;
1639 CapturedWindowRect.
Top = 0;
1646 Buffer->ViewOrigin.X = CapturedWindowRect.
Left;
1647 Buffer->ViewOrigin.Y = CapturedWindowRect.
Top;
#define WriteBuffer(BaseIoAddress, Buffer, Count)
#define ReadBuffer(BaseIoAddress, Buffer, Count)
#define IS_FULL_WIDTH(wch)
static LPHIST_ENTRY Bottom
#define ENABLE_WRAP_AT_EOL_OUTPUT
#define ENABLE_PROCESSED_OUTPUT
enum _CODE_TYPE CODE_TYPE
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ConioRectWidth(Rect)
#define ConioRectHeight(Rect)
#define InterlockedExchangePointer(Target, Value)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define RTL_FIELD_SIZE(type, field)
_In_ HANDLE ProcessHandle
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
static USHORT CursorPosition
PULONG MinorVersion OPTIONAL
union _CHAR_INFO::@3280 Char
USHORT PopupDefaultAttrib
USHORT ScreenDefaultAttrib
#define TermResizeTerminal(Console)
#define TermGetLargestConsoleWindowSize(Console, pSize)
#define TermWriteStream(Console, ScreenBuffer, Buffer, Length, Attrib)
#define TermDrawRegion(Console, Region)
static int UpdateRect(TreeListData *pData, unsigned uItem, unsigned uSub)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
NTSTATUS TEXTMODE_BUFFER_Initialize(OUT PCONSOLE_SCREEN_BUFFER *Buffer, IN PCONSOLE Console, IN HANDLE ProcessHandle, IN PTEXTMODE_BUFFER_INFO TextModeInfo)
static NTSTATUS IntWriteConsoleOutputStringAttribute(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN PWORD StringBuffer, IN ULONG NumCodesToWrite, IN PCOORD WriteCoord, OUT PULONG NumCodesWritten OPTIONAL)
NTSTATUS NTAPI ConDrvReadConsoleOutput(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN BOOLEAN Unicode, OUT PCHAR_INFO CharInfo, IN OUT PSMALL_RECT ReadRegion)
NTSTATUS NTAPI ConDrvChangeScreenBufferAttributes(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN USHORT NewScreenAttrib, IN USHORT NewPopupAttrib)
NTSTATUS NTAPI ConDrvGetConsoleScreenBufferInfo(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, OUT PCOORD ScreenBufferSize, OUT PCOORD CursorPosition, OUT PCOORD ViewOrigin, OUT PCOORD ViewSize, OUT PCOORD MaximumViewSize, OUT PWORD Attributes)
static VOID ConioComputeUpdateRect(IN PTEXTMODE_SCREEN_BUFFER Buff, IN OUT PSMALL_RECT UpdateRect, IN PCOORD Start, IN UINT Length)
#define ConsoleOutputUnicodeToAnsiChar(Console, dChar, sWChar)
NTSTATUS NTAPI ConDrvSetConsoleWindowInfo(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN BOOLEAN Absolute, IN PSMALL_RECT WindowRect)
NTSTATUS NTAPI ConDrvWriteConsoleOutput(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN BOOLEAN Unicode, IN PCHAR_INFO CharInfo, IN OUT PSMALL_RECT WriteRegion)
NTSTATUS NTAPI ConDrvSetConsoleTextAttribute(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN WORD Attributes)
#define ConsoleOutputAnsiToUnicodeChar(Console, dWChar, sChar)
NTSTATUS NTAPI ConDrvScrollConsoleScreenBuffer(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN BOOLEAN Unicode, IN PSMALL_RECT ScrollRectangle, IN BOOLEAN UseClipRectangle, IN PSMALL_RECT ClipRectangle OPTIONAL, IN PCOORD DestinationOrigin, IN CHAR_INFO FillChar)
VOID CONSOLE_SCREEN_BUFFER_Destroy(IN OUT PCONSOLE_SCREEN_BUFFER Buffer)
static VOID ConioFillRegion(IN PTEXTMODE_SCREEN_BUFFER ScreenBuffer, IN PSMALL_RECT Region, IN PSMALL_RECT ExcludeRegion OPTIONAL, IN CHAR_INFO FillChar)
NTSTATUS NTAPI ConDrvWriteConsoleOutputString(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN CODE_TYPE CodeType, IN PVOID StringBuffer, IN ULONG NumCodesToWrite, IN PCOORD WriteCoord, OUT PULONG NumCodesWritten OPTIONAL)
PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y)
NTSTATUS CONSOLE_SCREEN_BUFFER_Initialize(OUT PCONSOLE_SCREEN_BUFFER *Buffer, IN PCONSOLE Console, IN CONSOLE_IO_OBJECT_TYPE Type, IN SIZE_T Size)
static NTSTATUS IntReadConsoleOutputStringAttributes(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, OUT PWORD StringBuffer, IN ULONG NumCodesToRead, IN PCOORD ReadCoord, OUT PULONG NumCodesRead OPTIONAL)
NTSTATUS NTAPI ConDrvWriteConsoleInput(IN PCONSOLE Console, IN PCONSOLE_INPUT_BUFFER InputBuffer, IN BOOLEAN AppendToEnd, IN PINPUT_RECORD InputRecord, IN ULONG NumEventsToWrite, OUT PULONG NumEventsWritten OPTIONAL)
static NTSTATUS IntWriteConsoleOutputStringChars(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN PVOID StringBuffer, IN BOOLEAN Unicode, IN ULONG NumCodesToWrite, IN PCOORD WriteCoord, OUT PULONG NumCodesWritten OPTIONAL)
static VOID ConioCopyRegion(IN PTEXTMODE_SCREEN_BUFFER ScreenBuffer, IN PSMALL_RECT SrcRegion, IN PCOORD DstOrigin)
NTSTATUS NTAPI ConDrvWriteConsole(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER ScreenBuffer, IN BOOLEAN Unicode, IN PVOID StringBuffer, IN ULONG NumCharsToWrite, OUT PULONG NumCharsWritten OPTIONAL)
NTSTATUS ConioResizeBuffer(PCONSOLE Console, PTEXTMODE_SCREEN_BUFFER ScreenBuffer, COORD Size)
NTSTATUS NTAPI ConDrvWriteConsoleOutputVDM(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN PCHAR_CELL CharInfo, IN COORD CharInfoSize, IN PSMALL_RECT WriteRegion)
NTSTATUS NTAPI ConDrvFillConsoleOutput(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN CODE_TYPE CodeType, IN CODE_ELEMENT Code, IN ULONG NumCodesToWrite, IN PCOORD WriteCoord, OUT PULONG NumCodesWritten OPTIONAL)
NTSTATUS NTAPI ConDrvSetConsoleScreenBufferSize(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN PCOORD Size)
static NTSTATUS IntReadConsoleOutputStringChars(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, OUT PVOID StringBuffer, IN BOOLEAN Unicode, IN ULONG NumCodesToRead, IN PCOORD ReadCoord, OUT PULONG NumCodesRead OPTIONAL)
NTSTATUS NTAPI ConDrvReadConsoleOutputString(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN CODE_TYPE CodeType, OUT PVOID StringBuffer, IN ULONG NumCodesToRead, IN PCOORD ReadCoord, OUT PULONG NumCodesRead OPTIONAL)
VOID ClearLineBuffer(PTEXTMODE_SCREEN_BUFFER Buff)
VOID TEXTMODE_BUFFER_Destroy(IN OUT PCONSOLE_SCREEN_BUFFER Buffer)
#define ConsoleAllocHeap(Flags, Size)
#define ConsoleFreeHeap(HeapBase)
enum _CONSOLE_IO_OBJECT_TYPE CONSOLE_IO_OBJECT_TYPE
struct _TEXTMODE_SCREEN_BUFFER * PTEXTMODE_SCREEN_BUFFER
struct _CONSOLE_SCREEN_BUFFER * PCONSOLE_SCREEN_BUFFER
static __inline BOOLEAN ConioGetIntersection(OUT PSMALL_RECT Intersection, IN PSMALL_RECT Rect1, IN PSMALL_RECT Rect2)
#define ConioInitRect(Rect, top, left, bottom, right)
#define ConioIsRectEmpty(Rect)
static __inline BOOLEAN ConioGetUnion(OUT PSMALL_RECT Union, IN PSMALL_RECT Rect1, IN PSMALL_RECT Rect2)
#define COMMON_LVB_TRAILING_BYTE
#define WINDOW_BUFFER_SIZE_EVENT
#define COMMON_LVB_LEADING_BYTE
#define COMMON_LVB_SBCSDBCS
#define ENABLE_WINDOW_INPUT