56 {0x5F, 0x4F, 0x50, 0x82, 0x55, 0x81, 0xBF, 0x1F, 0x00, 0x47, 0x1E, 0x00,
57 0x00, 0x00, 0x05, 0xF0, 0x9C, 0x8E, 0x8F, 0x28, 0x1F, 0x96, 0xB9, 0xA3},
59 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39, 0x3A, 0x3B,
60 0x3C, 0x3D, 0x3E, 0x3F, 0x0C, 0x00, 0x0F, 0x08, 0x00},
62 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0xFF},
64 {0x03, 0x00, 0x03, 0x00, 0x02},
208 if ((
i > 0) && (--
i == 0))
225 if ((
i > 0) && (--
i == 0))
335 for (
i = 0;
i <
sizeof(Registers->
CRT);
i++)
367 if (!DeviceExtension->VideoMemory)
370 Offset = (DeviceExtension->CursorY * DeviceExtension->Columns) + DeviceExtension->CursorX;
388 if (!DeviceExtension->VideoMemory)
391 height = DeviceExtension->ScanLines;
392 data = (DeviceExtension->CursorVisible) ? 0x00 : 0x20;
394 size = (DeviceExtension->CursorSize *
height) / 100;
455 DeviceExtension->Rows |= (((
data & 0x02) << 7) | ((
data & 0x40) << 3));
456 DeviceExtension->Rows++;
473 data | ((DeviceExtension->ScanLines - 1) & 0x1F));
478 DeviceExtension->Rows = DeviceExtension->Rows / DeviceExtension->ScanLines;
481 DeviceExtension->CursorX = (
USHORT)(
offset % DeviceExtension->Columns);
482 DeviceExtension->CursorY = (
USHORT)(
offset / DeviceExtension->Columns);
484 DeviceExtension->CursorY =
min(
max(DeviceExtension->CursorY, 0), DeviceExtension->Rows - 1);
487 if (DeviceExtension->FontBitfield)
490 DPRINT(
"%d Columns %d Rows %d Scanlines\n",
491 DeviceExtension->Columns,
492 DeviceExtension->Rows,
493 DeviceExtension->ScanLines);
502 #define FOREGROUND_LIGHTGRAY (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED) 507 if (!FullReset && (
Enable == DeviceExtension->Enabled))
512 DeviceExtension->CursorSize = 5;
513 DeviceExtension->CursorVisible =
TRUE;
515 if (DeviceExtension->FontBitfield)
518 DeviceExtension->FontBitfield =
NULL;
538 if (DeviceExtension->VideoMemory)
540 ASSERT(DeviceExtension->VideoMemorySize != 0);
541 MmUnmapIoSpace(DeviceExtension->VideoMemory, DeviceExtension->VideoMemorySize);
543 DeviceExtension->VideoMemory =
NULL;
544 DeviceExtension->VideoMemorySize = 0;
547 if (DeviceExtension->ScreenBuffer)
549 ASSERT(DeviceExtension->ScreenBufferSize != 0);
552 DeviceExtension->ScreenBuffer =
NULL;
553 DeviceExtension->ScreenBufferSize = 0;
556 DeviceExtension->VideoMemorySize = DeviceExtension->Rows * DeviceExtension->Columns * 2;
557 if (DeviceExtension->VideoMemorySize == 0)
562 DeviceExtension->VideoMemory =
564 if (!DeviceExtension->VideoMemory)
566 DeviceExtension->VideoMemorySize = 0;
571 DeviceExtension->ScreenBufferSize = DeviceExtension->VideoMemorySize;
572 DeviceExtension->ScreenBuffer =
574 if (!DeviceExtension->ScreenBuffer)
576 DPRINT1(
"Could not allocate screenbuffer, ignore...\n");
577 DeviceExtension->ScreenBufferSize = 0;
590 if (DeviceExtension->ScreenBuffer)
592 ASSERT(DeviceExtension->VideoMemory);
593 ASSERT(DeviceExtension->ScreenBuffer);
594 ASSERT(DeviceExtension->ScreenBufferSize != 0);
595 ASSERT(DeviceExtension->VideoMemorySize == DeviceExtension->ScreenBufferSize);
598 DeviceExtension->ScreenBuffer,
599 DeviceExtension->VideoMemorySize);
606 DeviceExtension->Enabled =
TRUE;
610 DeviceExtension->Enabled =
FALSE;
621 if (DeviceExtension->VideoMemory)
623 ASSERT(DeviceExtension->VideoMemorySize != 0);
624 MmUnmapIoSpace(DeviceExtension->VideoMemory, DeviceExtension->VideoMemorySize);
626 DeviceExtension->VideoMemory =
NULL;
627 DeviceExtension->VideoMemorySize = 0;
630 if (DeviceExtension->ScreenBuffer)
632 ASSERT(DeviceExtension->ScreenBufferSize != 0);
635 DeviceExtension->ScreenBuffer =
NULL;
636 DeviceExtension->ScreenBufferSize = 0;
639 DeviceExtension->Columns = 1;
640 DeviceExtension->Rows = 1;
641 DeviceExtension->ScanLines = 1;
650 if (DeviceExtension->ScreenBuffer)
652 ASSERT(DeviceExtension->VideoMemory);
653 ASSERT(DeviceExtension->ScreenBuffer);
654 ASSERT(DeviceExtension->ScreenBufferSize != 0);
655 ASSERT(DeviceExtension->VideoMemorySize == DeviceExtension->ScreenBufferSize);
658 DeviceExtension->VideoMemory,
659 DeviceExtension->VideoMemorySize);
705 if (!DeviceExtension->Enabled || !DeviceExtension->VideoMemory)
716 vidmem = DeviceExtension->VideoMemory;
717 rows = DeviceExtension->Rows;
718 columns = DeviceExtension->Columns;
719 cursorx = DeviceExtension->CursorX;
720 cursory = DeviceExtension->CursorY;
727 offset = cursorx + cursory * columns;
738 cursory =
min(
max(cursory, 0), rows - 1);
753 else if (cursory > 0)
756 cursorx = columns - 1;
758 offset = cursorx + cursory * columns;
776 vidmem[(cursorx + cursory * columns) * 2] =
' ';
778 if (cursorx >= columns)
791 offset = cursorx + cursory * columns;
795 if (cursorx >= columns)
811 columns * (rows - 1) * 2);
815 for (
j = 0;
j < columns;
j++)
817 LinePtr[
j] = DeviceExtension->CharAttribute << 8;
820 for (
j = 0;
j < columns;
j++)
822 offset =
j + cursory * columns;
831 ASSERT((0 <= cursorx) && (cursorx < DeviceExtension->
Columns));
832 ASSERT((0 <= cursory) && (cursory < DeviceExtension->
Rows));
833 DeviceExtension->CursorX = cursorx;
834 DeviceExtension->CursorY = cursory;
856 switch (stk->
Parameters.DeviceIoControl.IoControlCode)
875 Irp->IoStatus.Information = 0;
882 USHORT rows = DeviceExtension->Rows;
883 USHORT columns = DeviceExtension->Columns;
902 pcsbi->
wAttributes = DeviceExtension->CharAttribute;
934 Irp->IoStatus.Information = 0;
939 DeviceExtension->CharAttribute = pcsbi->
wAttributes;
946 if (DeviceExtension->Enabled)
949 Irp->IoStatus.Information = 0;
969 pcci->
dwSize = DeviceExtension->CursorSize;
970 pcci->
bVisible = DeviceExtension->CursorVisible;
991 DeviceExtension->CursorSize = pcci->
dwSize;
992 DeviceExtension->CursorVisible = pcci->
bVisible;
993 if (DeviceExtension->Enabled)
996 Irp->IoStatus.Information = 0;
1011 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1016 pcm->
dwMode = DeviceExtension->Mode;
1033 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1036 DeviceExtension->Mode = pcm->
dwMode;
1038 Irp->IoStatus.Information = 0;
1058 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1074 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1076 vidmem = DeviceExtension->VideoMemory;
1079 nMaxLength =
min(nMaxLength,
1080 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1081 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1083 for (dwCount = 0; dwCount < nMaxLength; dwCount++)
1109 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1112 Irp->IoStatus.Information = 0;
1115 if (stk->
Parameters.DeviceIoControl.OutputBufferLength == 0)
1135 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength;
1136 nMaxLength /=
sizeof(
USHORT);
1138 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1140 vidmem = DeviceExtension->VideoMemory;
1143 nMaxLength =
min(nMaxLength,
1144 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1145 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1147 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pAttr++)
1151 Irp->IoStatus.Information = dwCount *
sizeof(
USHORT);
1174 if (stk->
Parameters.DeviceIoControl.OutputBufferLength <
sizeof(
COORD))
1189 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength -
sizeof(
COORD);
1190 nMaxLength /=
sizeof(
USHORT);
1192 Irp->IoStatus.Information = 0;
1194 if ( dwCoord.
X < 0 || dwCoord.
X >= DeviceExtension->Columns ||
1195 dwCoord.
Y < 0 || dwCoord.
Y >= DeviceExtension->Rows ||
1202 pAttr = (
PUSHORT)(pCoord + 1);
1204 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1206 vidmem = DeviceExtension->VideoMemory;
1207 offset = (dwCoord.
X + dwCoord.
Y * DeviceExtension->Columns) * 2 + 1;
1209 nMaxLength =
min(nMaxLength,
1210 (DeviceExtension->Rows - dwCoord.
Y)
1211 * DeviceExtension->Columns - dwCoord.
X);
1213 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pAttr++)
1217 Irp->IoStatus.Information = dwCount *
sizeof(
USHORT);
1232 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1234 DeviceExtension->CharAttribute = *(
PUSHORT)
Irp->AssociatedIrp.SystemBuffer;
1236 Irp->IoStatus.Information = 0;
1256 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1272 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1274 vidmem = DeviceExtension->VideoMemory;
1277 nMaxLength =
min(nMaxLength,
1278 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1279 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1281 for (dwCount = 0; dwCount < nMaxLength; dwCount++)
1307 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1310 Irp->IoStatus.Information = 0;
1313 if (stk->
Parameters.DeviceIoControl.OutputBufferLength == 0)
1333 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength;
1335 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1337 vidmem = DeviceExtension->VideoMemory;
1340 nMaxLength =
min(nMaxLength,
1341 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1342 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1344 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pChar++)
1348 Irp->IoStatus.Information = dwCount *
sizeof(
CHAR);
1371 if (stk->
Parameters.DeviceIoControl.OutputBufferLength <
sizeof(
COORD))
1386 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength -
sizeof(
COORD);
1387 Irp->IoStatus.Information = 0;
1389 if ( dwCoord.
X < 0 || dwCoord.
X >= DeviceExtension->Columns ||
1390 dwCoord.
Y < 0 || dwCoord.
Y >= DeviceExtension->Rows ||
1397 pChar = (
PCHAR)(pCoord + 1);
1399 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1401 vidmem = DeviceExtension->VideoMemory;
1402 offset = (dwCoord.
X + dwCoord.
Y * DeviceExtension->Columns) * 2;
1404 nMaxLength =
min(nMaxLength,
1405 (DeviceExtension->Rows - dwCoord.
Y)
1406 * DeviceExtension->Columns - dwCoord.
X);
1408 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pChar++)
1412 Irp->IoStatus.Information = dwCount *
sizeof(
CHAR);
1424 UINT32 SrcDelta, DestDelta,
i;
1434 if (pConsoleDraw ==
NULL)
1440 ConsoleDraw = *pConsoleDraw;
1450 Irp->IoStatus.Information = 0;
1453 DeviceExtension->CursorX =
min(
max(ConsoleDraw.
CursorX, 0), DeviceExtension->Columns - 1);
1454 DeviceExtension->CursorY =
min(
max(ConsoleDraw.
CursorY, 0), DeviceExtension->Rows - 1);
1455 if (DeviceExtension->Enabled)
1461 if ( ConsoleDraw.
X < 0 || ConsoleDraw.
X >= DeviceExtension->Columns ||
1462 ConsoleDraw.
Y < 0 || ConsoleDraw.
Y >= DeviceExtension->Rows )
1467 if ( ConsoleDraw.
SizeX > DeviceExtension->Columns - ConsoleDraw.
X ||
1468 ConsoleDraw.
SizeY > DeviceExtension->Rows - ConsoleDraw.
Y )
1474 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1476 Src = (
PUCHAR)(pConsoleDraw + 1);
1477 SrcDelta = ConsoleDraw.
SizeX * 2;
1478 Dest = DeviceExtension->VideoMemory +
1479 (ConsoleDraw.
X + ConsoleDraw.
Y * DeviceExtension->Columns) * 2;
1480 DestDelta = DeviceExtension->Columns * 2;
1484 for (
i = 0;
i < ConsoleDraw.
SizeY;
i++)
1503 if (stk->
Parameters.DeviceIoControl.InputBufferLength < 256 * 8)
1508 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1510 if (DeviceExtension->FontBitfield)
1513 if (!DeviceExtension->FontBitfield)
1518 RtlCopyMemory(DeviceExtension->FontBitfield,
Irp->AssociatedIrp.SystemBuffer, 256 * 8);
1521 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1524 Irp->IoStatus.Information = 0;
1550 DPRINT1(
"ScrDispatch(0x%p): stk->MajorFunction = %lu UNIMPLEMENTED\n",
1572 DPRINT(
"Screen Driver 0.0.6\n");
#define DO_DEVICE_INITIALIZING
struct tagCONSOLE_CURSOR_INFO * PCONSOLE_CURSOR_INFO
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
static VOID FASTCALL ScrSetCursorShape(_In_ PDEVICE_EXTENSION DeviceExtension)
#define IOCTL_CONSOLE_WRITE_OUTPUT_ATTRIBUTE
#define IOCTL_CONSOLE_SET_SCREEN_BUFFER_INFO
#define STATUS_INSUFFICIENT_RESOURCES
#define FILE_DEVICE_SCREEN
#define IOCTL_CONSOLE_SET_TEXT_ATTRIBUTE
static VOID FASTCALL ScrSetCursor(_In_ PDEVICE_EXTENSION DeviceExtension)
COORD dwMaximumWindowSize
struct _DEVICE_EXTENSION DEVICE_EXTENSION
static const VGA_REGISTERS VidpMode3Regs
#define READ_PORT_UCHAR(p)
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_PARAMETER
struct tagOUTPUT_CHARACTER OUTPUT_CHARACTER
static BOOLEAN InbvMonitoring
void __cdecl _enable(void)
struct tagCONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
static DRIVER_DISPATCH ScrDispatch
#define LOW_REALTIME_PRIORITY
struct tagCONSOLE_MODE * PCONSOLE_MODE
#define IOCTL_CONSOLE_SET_CURSOR_INFO
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
VOID NTAPI InbvNotifyDisplayOwnershipLost(_In_ INBV_RESET_DISPLAY_PARAMETERS Callback)
static BOOLEAN ScrResetScreen(_In_ PDEVICE_EXTENSION DeviceExtension, _In_ BOOLEAN FullReset, _In_ BOOLEAN Enable)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define OBJ_KERNEL_HANDLE
#define IOCTL_CONSOLE_FILL_OUTPUT_CHARACTER
_In_ PDEVICE_OBJECT DeviceObject
#define ENABLE_WRAP_AT_EOL_OUTPUT
static const UCHAR DefaultPalette[]
return STATUS_NOT_IMPLEMENTED
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
static DRIVER_DISPATCH ScrCreateClose
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
static DRIVER_DISPATCH ScrWrite
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
struct _VGA_REGISTERS * PVGA_REGISTERS
#define IOCTL_CONSOLE_FILL_OUTPUT_ATTRIBUTE
#define IoCompleteRequest
#define IOCTL_CONSOLE_GET_CURSOR_INFO
#define IOCTL_CONSOLE_READ_OUTPUT_ATTRIBUTE
static VOID FASTCALL ScrAcquireOwnership(_In_ PDEVICE_EXTENSION DeviceExtension)
static BOOLEAN NTAPI ScrResetDisplayParametersEx(_In_ ULONG Columns, _In_ ULONG Rows, _In_ BOOLEAN CalledByInbv)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
struct _VGA_REGISTERS VGA_REGISTERS
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 STATUS_INVALID_BUFFER_SIZE
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define InterlockedExchangePointer(Target, Value)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
#define IOCTL_CONSOLE_GET_MODE
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IO_VIDEO_INCREMENT
static NTSTATUS ScrInbvInitialize(VOID)
static BOOLEAN NTAPI ScrResetDisplayParameters(_In_ ULONG Columns, _In_ ULONG Rows)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
#define WRITE_PORT_UCHAR(p, d)
GLsizei const GLfloat * value
static DRIVER_DISPATCH ScrIoControl
#define IOCTL_CONSOLE_RESET_SCREEN
DRIVER_DISPATCH(nfs41_FsdDispatch)
GLint GLint GLsizei GLsizei height
static VOID NTAPI InbvMonitorThread(_In_ PVOID Context)
#define IOCTL_CONSOLE_DRAW
#define ENABLE_PROCESSED_OUTPUT
static HANDLE InbvThreadHandle
_In_ ULONG _In_ ULONG Offset
#define FOREGROUND_LIGHTGRAY
struct tagOUTPUT_CHARACTER * POUTPUT_CHARACTER
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a)
static NTSTATUS ScrInbvCleanup(VOID)
static const COLUMN_LIST Columns[]
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
KPRIORITY NTAPI KeSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
#define IOCTL_CONSOLE_SET_MODE
struct tagCONSOLE_MODE CONSOLE_MODE
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define IOCTL_CONSOLE_READ_OUTPUT_CHARACTER
struct tagOUTPUT_ATTRIBUTE * POUTPUT_ATTRIBUTE
#define IOCTL_CONSOLE_GET_SCREEN_BUFFER_INFO
#define IOCTL_CONSOLE_LOADFONT
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
static int processed(const type_t *type)
void __cdecl _disable(void)
VOID ScrSetFont(_In_ PUCHAR FontBitfield)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
#define FILE_DEVICE_SECURE_OPEN
#define IOCTL_CONSOLE_WRITE_OUTPUT_CHARACTER
BOOLEAN NTAPI InbvCheckDisplayOwnership(VOID)
#define KeGetCurrentThread
struct tagCONSOLE_SCREEN_BUFFER_INFO * PCONSOLE_SCREEN_BUFFER_INFO
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
static VOID FASTCALL ScrSetRegisters(const VGA_REGISTERS *Registers)
static PDEVICE_EXTENSION ResetDisplayParametersDeviceExtension
#define ExFreePoolWithTag(_P, _T)
struct tagCONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO
struct tagOUTPUT_ATTRIBUTE OUTPUT_ATTRIBUTE
#define IRP_MJ_DEVICE_CONTROL
NTSTATUS NTAPI DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
#define RTL_CONSTANT_STRING(s)