57 {0x5F, 0x4F, 0x50, 0x82, 0x55, 0x81, 0xBF, 0x1F, 0x00, 0x47, 0x1E, 0x00,
58 0x00, 0x00, 0x05, 0xF0, 0x9C, 0x8E, 0x8F, 0x28, 0x1F, 0x96, 0xB9, 0xA3},
60 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39, 0x3A, 0x3B,
61 0x3C, 0x3D, 0x3E, 0x3F, 0x0C, 0x00, 0x0F, 0x08, 0x00},
63 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0xFF},
65 {0x03, 0x00, 0x03, 0x00, 0x02},
209 if ((
i > 0) && (--
i == 0))
226 if ((
i > 0) && (--
i == 0))
336 for (
i = 0;
i <
sizeof(Registers->
CRT);
i++)
368 if (!DeviceExtension->VideoMemory)
371 Offset = (DeviceExtension->CursorY * DeviceExtension->Columns) + DeviceExtension->CursorX;
389 if (!DeviceExtension->VideoMemory)
392 height = DeviceExtension->ScanLines;
393 data = (DeviceExtension->CursorVisible) ? 0x00 : 0x20;
395 size = (DeviceExtension->CursorSize *
height) / 100;
456 DeviceExtension->Rows |= (((
data & 0x02) << 7) | ((
data & 0x40) << 3));
457 DeviceExtension->Rows++;
474 data | ((DeviceExtension->ScanLines - 1) & 0x1F));
479 DeviceExtension->Rows = DeviceExtension->Rows / DeviceExtension->ScanLines;
482 DeviceExtension->CursorX = (
USHORT)(
offset % DeviceExtension->Columns);
483 DeviceExtension->CursorY = (
USHORT)(
offset / DeviceExtension->Columns);
485 DeviceExtension->CursorY =
min(
max(DeviceExtension->CursorY, 0), DeviceExtension->Rows - 1);
487 if (DeviceExtension->FontBitfield)
497 DPRINT(
"%d Columns %d Rows %d Scanlines\n",
498 DeviceExtension->Columns,
499 DeviceExtension->Rows,
500 DeviceExtension->ScanLines);
509 #define FOREGROUND_LIGHTGRAY (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED) 514 if (!FullReset && (
Enable == DeviceExtension->Enabled))
519 DeviceExtension->CursorSize = 5;
520 DeviceExtension->CursorVisible =
TRUE;
522 if (DeviceExtension->FontBitfield)
525 DeviceExtension->FontBitfield =
NULL;
532 DeviceExtension->CodePage = 437;
546 if (DeviceExtension->VideoMemory)
548 ASSERT(DeviceExtension->VideoMemorySize != 0);
549 MmUnmapIoSpace(DeviceExtension->VideoMemory, DeviceExtension->VideoMemorySize);
551 DeviceExtension->VideoMemory =
NULL;
552 DeviceExtension->VideoMemorySize = 0;
555 if (DeviceExtension->ScreenBuffer)
557 ASSERT(DeviceExtension->ScreenBufferSize != 0);
560 DeviceExtension->ScreenBuffer =
NULL;
561 DeviceExtension->ScreenBufferSize = 0;
564 DeviceExtension->VideoMemorySize = DeviceExtension->Rows * DeviceExtension->Columns * 2;
565 if (DeviceExtension->VideoMemorySize == 0)
570 DeviceExtension->VideoMemory =
572 if (!DeviceExtension->VideoMemory)
574 DeviceExtension->VideoMemorySize = 0;
579 DeviceExtension->ScreenBufferSize = DeviceExtension->VideoMemorySize;
580 DeviceExtension->ScreenBuffer =
582 if (!DeviceExtension->ScreenBuffer)
584 DPRINT1(
"Could not allocate screenbuffer, ignore...\n");
585 DeviceExtension->ScreenBufferSize = 0;
598 if (DeviceExtension->ScreenBuffer)
600 ASSERT(DeviceExtension->VideoMemory);
601 ASSERT(DeviceExtension->ScreenBuffer);
602 ASSERT(DeviceExtension->ScreenBufferSize != 0);
603 ASSERT(DeviceExtension->VideoMemorySize == DeviceExtension->ScreenBufferSize);
606 DeviceExtension->ScreenBuffer,
607 DeviceExtension->VideoMemorySize);
614 DeviceExtension->Enabled =
TRUE;
618 DeviceExtension->Enabled =
FALSE;
629 if (DeviceExtension->VideoMemory)
631 ASSERT(DeviceExtension->VideoMemorySize != 0);
632 MmUnmapIoSpace(DeviceExtension->VideoMemory, DeviceExtension->VideoMemorySize);
634 DeviceExtension->VideoMemory =
NULL;
635 DeviceExtension->VideoMemorySize = 0;
638 if (DeviceExtension->ScreenBuffer)
640 ASSERT(DeviceExtension->ScreenBufferSize != 0);
643 DeviceExtension->ScreenBuffer =
NULL;
644 DeviceExtension->ScreenBufferSize = 0;
647 DeviceExtension->Columns = 1;
648 DeviceExtension->Rows = 1;
649 DeviceExtension->ScanLines = 1;
658 if (DeviceExtension->ScreenBuffer)
660 ASSERT(DeviceExtension->VideoMemory);
661 ASSERT(DeviceExtension->ScreenBuffer);
662 ASSERT(DeviceExtension->ScreenBufferSize != 0);
663 ASSERT(DeviceExtension->VideoMemorySize == DeviceExtension->ScreenBufferSize);
666 DeviceExtension->VideoMemory,
667 DeviceExtension->VideoMemorySize);
713 if (!DeviceExtension->Enabled || !DeviceExtension->VideoMemory)
724 vidmem = DeviceExtension->VideoMemory;
725 rows = DeviceExtension->Rows;
726 columns = DeviceExtension->Columns;
727 cursorx = DeviceExtension->CursorX;
728 cursory = DeviceExtension->CursorY;
735 offset = cursorx + cursory * columns;
746 cursory =
min(
max(cursory, 0), rows - 1);
761 else if (cursory > 0)
764 cursorx = columns - 1;
766 offset = cursorx + cursory * columns;
784 vidmem[(cursorx + cursory * columns) * 2] =
' ';
786 if (cursorx >= columns)
799 offset = cursorx + cursory * columns;
803 if (cursorx >= columns)
819 columns * (rows - 1) * 2);
823 for (
j = 0;
j < columns;
j++)
825 LinePtr[
j] = DeviceExtension->CharAttribute << 8;
828 for (
j = 0;
j < columns;
j++)
830 offset =
j + cursory * columns;
839 ASSERT((0 <= cursorx) && (cursorx < DeviceExtension->
Columns));
840 ASSERT((0 <= cursory) && (cursory < DeviceExtension->
Rows));
841 DeviceExtension->CursorX = cursorx;
842 DeviceExtension->CursorY = cursory;
864 switch (stk->
Parameters.DeviceIoControl.IoControlCode)
883 Irp->IoStatus.Information = 0;
890 USHORT rows = DeviceExtension->Rows;
891 USHORT columns = DeviceExtension->Columns;
910 pcsbi->
wAttributes = DeviceExtension->CharAttribute;
942 Irp->IoStatus.Information = 0;
947 DeviceExtension->CharAttribute = pcsbi->
wAttributes;
954 if (DeviceExtension->Enabled)
957 Irp->IoStatus.Information = 0;
977 pcci->
dwSize = DeviceExtension->CursorSize;
978 pcci->
bVisible = DeviceExtension->CursorVisible;
999 DeviceExtension->CursorSize = pcci->
dwSize;
1000 DeviceExtension->CursorVisible = pcci->
bVisible;
1001 if (DeviceExtension->Enabled)
1004 Irp->IoStatus.Information = 0;
1019 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1024 pcm->
dwMode = DeviceExtension->Mode;
1041 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1044 DeviceExtension->Mode = pcm->
dwMode;
1046 Irp->IoStatus.Information = 0;
1066 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1082 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1084 vidmem = DeviceExtension->VideoMemory;
1087 nMaxLength =
min(nMaxLength,
1088 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1089 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1091 for (dwCount = 0; dwCount < nMaxLength; dwCount++)
1117 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1120 Irp->IoStatus.Information = 0;
1123 if (stk->
Parameters.DeviceIoControl.OutputBufferLength == 0)
1143 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength;
1144 nMaxLength /=
sizeof(
USHORT);
1146 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1148 vidmem = DeviceExtension->VideoMemory;
1151 nMaxLength =
min(nMaxLength,
1152 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1153 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1155 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pAttr++)
1159 Irp->IoStatus.Information = dwCount *
sizeof(
USHORT);
1182 if (stk->
Parameters.DeviceIoControl.OutputBufferLength <
sizeof(
COORD))
1197 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength -
sizeof(
COORD);
1198 nMaxLength /=
sizeof(
USHORT);
1200 Irp->IoStatus.Information = 0;
1202 if ( dwCoord.
X < 0 || dwCoord.
X >= DeviceExtension->Columns ||
1203 dwCoord.
Y < 0 || dwCoord.
Y >= DeviceExtension->Rows ||
1210 pAttr = (
PUSHORT)(pCoord + 1);
1212 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1214 vidmem = DeviceExtension->VideoMemory;
1215 offset = (dwCoord.
X + dwCoord.
Y * DeviceExtension->Columns) * 2 + 1;
1217 nMaxLength =
min(nMaxLength,
1218 (DeviceExtension->Rows - dwCoord.
Y)
1219 * DeviceExtension->Columns - dwCoord.
X);
1221 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pAttr++)
1225 Irp->IoStatus.Information = dwCount *
sizeof(
USHORT);
1240 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1242 DeviceExtension->CharAttribute = *(
PUSHORT)
Irp->AssociatedIrp.SystemBuffer;
1244 Irp->IoStatus.Information = 0;
1264 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1280 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1282 vidmem = DeviceExtension->VideoMemory;
1285 nMaxLength =
min(nMaxLength,
1286 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1287 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1289 for (dwCount = 0; dwCount < nMaxLength; dwCount++)
1315 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1318 Irp->IoStatus.Information = 0;
1321 if (stk->
Parameters.DeviceIoControl.OutputBufferLength == 0)
1341 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength;
1343 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1345 vidmem = DeviceExtension->VideoMemory;
1348 nMaxLength =
min(nMaxLength,
1349 (DeviceExtension->Rows - Buf->
dwCoord.
Y)
1350 * DeviceExtension->Columns - Buf->
dwCoord.
X);
1352 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pChar++)
1356 Irp->IoStatus.Information = dwCount *
sizeof(
CHAR);
1379 if (stk->
Parameters.DeviceIoControl.OutputBufferLength <
sizeof(
COORD))
1394 nMaxLength = stk->
Parameters.DeviceIoControl.OutputBufferLength -
sizeof(
COORD);
1395 Irp->IoStatus.Information = 0;
1397 if ( dwCoord.
X < 0 || dwCoord.
X >= DeviceExtension->Columns ||
1398 dwCoord.
Y < 0 || dwCoord.
Y >= DeviceExtension->Rows ||
1405 pChar = (
PCHAR)(pCoord + 1);
1407 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1409 vidmem = DeviceExtension->VideoMemory;
1410 offset = (dwCoord.
X + dwCoord.
Y * DeviceExtension->Columns) * 2;
1412 nMaxLength =
min(nMaxLength,
1413 (DeviceExtension->Rows - dwCoord.
Y)
1414 * DeviceExtension->Columns - dwCoord.
X);
1416 for (dwCount = 0; dwCount < nMaxLength; dwCount++, pChar++)
1420 Irp->IoStatus.Information = dwCount *
sizeof(
CHAR);
1432 UINT32 SrcDelta, DestDelta,
i;
1442 if (pConsoleDraw ==
NULL)
1448 ConsoleDraw = *pConsoleDraw;
1458 Irp->IoStatus.Information = 0;
1461 DeviceExtension->CursorX =
min(
max(ConsoleDraw.
CursorX, 0), DeviceExtension->Columns - 1);
1462 DeviceExtension->CursorY =
min(
max(ConsoleDraw.
CursorY, 0), DeviceExtension->Rows - 1);
1463 if (DeviceExtension->Enabled)
1469 if ( ConsoleDraw.
X < 0 || ConsoleDraw.
X >= DeviceExtension->Columns ||
1470 ConsoleDraw.
Y < 0 || ConsoleDraw.
Y >= DeviceExtension->Rows )
1475 if ( ConsoleDraw.
SizeX > DeviceExtension->Columns - ConsoleDraw.
X ||
1476 ConsoleDraw.
SizeY > DeviceExtension->Rows - ConsoleDraw.
Y )
1482 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1484 Src = (
PUCHAR)(pConsoleDraw + 1);
1485 SrcDelta = ConsoleDraw.
SizeX * 2;
1486 Dest = DeviceExtension->VideoMemory +
1487 (ConsoleDraw.
X + ConsoleDraw.
Y * DeviceExtension->Columns) * 2;
1488 DestDelta = DeviceExtension->Columns * 2;
1492 for (
i = 0;
i < ConsoleDraw.
SizeY;
i++)
1507 if (stk->
Parameters.DeviceIoControl.InputBufferLength <
sizeof(
ULONG))
1512 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1514 if (DeviceExtension->FontBitfield)
1517 DeviceExtension->FontBitfield =
NULL;
1519 DeviceExtension->CodePage = *(
PULONG)
Irp->AssociatedIrp.SystemBuffer;
1522 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1525 Irp->IoStatus.Information = 0;
1533 if (stk->
Parameters.DeviceIoControl.InputBufferLength < 256 * 8)
1538 ASSERT(
Irp->AssociatedIrp.SystemBuffer);
1540 DeviceExtension->CodePage = 0;
1541 if (DeviceExtension->FontBitfield)
1544 if (!DeviceExtension->FontBitfield)
1549 RtlCopyMemory(DeviceExtension->FontBitfield,
Irp->AssociatedIrp.SystemBuffer, 256 * 8);
1552 if (DeviceExtension->Enabled && DeviceExtension->VideoMemory)
1555 Irp->IoStatus.Information = 0;
1581 DPRINT1(
"ScrDispatch(0x%p): stk->MajorFunction = %lu UNIMPLEMENTED\n",
1603 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
VOID NTAPI InbvNotifyDisplayOwnershipLost(IN INBV_RESET_DISPLAY_PARAMETERS Callback)
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)
#define IOCTL_CONSOLE_SETFONT
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)
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
#define ExFreePoolWithTag(_P, _T)
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
struct tagCONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO
struct tagOUTPUT_ATTRIBUTE OUTPUT_ATTRIBUTE
VOID ScrLoadFontTable(_In_ ULONG CodePage)
#define IRP_MJ_DEVICE_CONTROL
NTSTATUS NTAPI DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
#define RTL_CONSTANT_STRING(s)