427 switch (
Stack->Parameters.DeviceIoControl.IoControlCode)
433 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_GET_SCREEN_BUFFER_INFO\n");
460 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_SET_SCREEN_BUFFER_INFO\n");
482 Irp->IoStatus.Information = 0;
489 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_GET_CURSOR_INFO\n");
501 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_GET_MODE\n");
512 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_SET_MODE\n");
516 Irp->IoStatus.Information = 0;
522 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_FILL_OUTPUT_ATTRIBUTE\n");
528 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_READ_OUTPUT_ATTRIBUTE\n");
534 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_WRITE_OUTPUT_ATTRIBUTE\n");
540 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_SET_TEXT_ATTRIBUTE\n");
543 Irp->IoStatus.Information = 0;
549 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_FILL_OUTPUT_CHARACTER\n");
555 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_READ_OUTPUT_CHARACTER\n");
561 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_WRITE_OUTPUT_CHARACTER\n");
571 DPRINT(
"IRP_MJ_DEVICE_CONTROL / IOCTL_CONSOLE_DRAW\n");
574 { ConsoleDraw->
X++; ConsoleDraw->
CursorX++; }
575 { ConsoleDraw->
Y++; ConsoleDraw->
CursorY++; }
577 ConsoleDraw->
X, ConsoleDraw->
Y,
593 if (ConsoleDraw->
X == 1
594 && ConsoleDraw->
Y == 1
596 && ConsoleDraw->
SizeY == DeviceExtension->
Rows)
599 DoOptimization =
TRUE;
600 Video = (
PUCHAR)(ConsoleDraw + 1);
604 if (Video[
x++] !=
' ')
606 DoOptimization =
FALSE;
620 for (
y = 0;
y < ConsoleDraw->
SizeY;
y++)
623 -(
int)(ConsoleDraw->
Y +
y),
';',
624 -(
int)(ConsoleDraw->
X),
'H');
625 Video = (
PUCHAR)(ConsoleDraw + 1);
626 Video = &Video[((ConsoleDraw->
Y +
y) * ConsoleDraw->
X) * 2];
627 for (
x = 0;
x < ConsoleDraw->
SizeX;
x++)
638 -(
int)(ConsoleDraw->
CursorY),
';',
639 -(
int)(ConsoleDraw->
CursorX),
'H');
644 Irp->IoStatus.Information = 0;
651 DPRINT1(
"IRP_MJ_DEVICE_CONTROL / unknown ioctl code 0x%lx\n",
652 Stack->Parameters.DeviceIoControl.IoControlCode);
struct tagCONSOLE_CURSOR_INFO * PCONSOLE_CURSOR_INFO
#define IOCTL_CONSOLE_WRITE_OUTPUT_ATTRIBUTE
#define IOCTL_CONSOLE_SET_SCREEN_BUFFER_INFO
#define IOCTL_CONSOLE_SET_TEXT_ATTRIBUTE
COORD dwMaximumWindowSize
struct tagCONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO
GLint GLint GLint GLint GLint x
struct tagCONSOLE_MODE * PCONSOLE_MODE
struct _SCREEN_DEVICE_EXTENSION * PSCREEN_DEVICE_EXTENSION
#define IOCTL_CONSOLE_FILL_OUTPUT_CHARACTER
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
#define IOCTL_CONSOLE_FILL_OUTPUT_ATTRIBUTE
#define IoCompleteRequest
#define IOCTL_CONSOLE_GET_CURSOR_INFO
#define IOCTL_CONSOLE_READ_OUTPUT_ATTRIBUTE
#define NT_SUCCESS(StatCode)
static VOID AddToSendBuffer(IN PSCREEN_DEVICE_EXTENSION DeviceExtension, IN ULONG NumberOfChars,...)
struct tagCONSOLE_DRAW * PCONSOLE_DRAW
#define IOCTL_CONSOLE_GET_MODE
#define IOCTL_CONSOLE_DRAW
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
static const COLUMN_LIST Columns[]
PDEVICE_OBJECT PreviousBlue
#define IOCTL_CONSOLE_SET_MODE
struct tagCONSOLE_MODE CONSOLE_MODE
#define IOCTL_CONSOLE_READ_OUTPUT_CHARACTER
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_CONSOLE_GET_SCREEN_BUFFER_INFO
#define IoSkipCurrentIrpStackLocation(Irp)
GLint GLint GLint GLint GLint GLint y
#define MmGetSystemAddressForMdl(Mdl)
#define IOCTL_CONSOLE_WRITE_OUTPUT_CHARACTER
COMMON_FDO_DEVICE_EXTENSION Common
struct tagCONSOLE_SCREEN_BUFFER_INFO * PCONSOLE_SCREEN_BUFFER_INFO
struct tagCONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO
PDEVICE_OBJECT LowerDevice