terminal/dep/Console/condrv.h
Leonard Hecker eb5c26cc69
Add InteractivityOneCore/RendererWddmCon projects (#13007)
`InteractivityOneCore` and `RendererWddmCon` were the last two remaining
projects which are relevant for our internal console builds, but couldn't be
easily compiled publicly by users on GitHub. This commit adds all definitions
required to compile the two projects into dysfunctional libraries at least.
(Since the added definitions are deliberately incorrect.)

Additionally this commit fixes the AuditMode build for the two projects.

## Validation Steps Performed
The two new projects compile fine.
2022-05-04 00:49:43 +00:00

224 lines
5.8 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT license.
Module Name:
condrv.h
Abstract:
This module contains the declarations shared by the console driver and the
user-mode components that use it.
Author:
Wedson Almeida Filho (wedsonaf) 24-Sep-2009
Environment:
Kernel and user modes.
--*/
#pragma once
#include "..\NT\ntioapi_x.h"
//
// Messages that can be received by servers, used in CD_IO_DESCRIPTOR::Function.
//
#define CONSOLE_IO_CONNECT 0x01
#define CONSOLE_IO_DISCONNECT 0x02
#define CONSOLE_IO_CREATE_OBJECT 0x03
#define CONSOLE_IO_CLOSE_OBJECT 0x04
#define CONSOLE_IO_RAW_WRITE 0x05
#define CONSOLE_IO_RAW_READ 0x06
#define CONSOLE_IO_USER_DEFINED 0x07
#define CONSOLE_IO_RAW_FLUSH 0x08
//
// Header of all IOs submitted to a server.
//
typedef struct _CD_IO_DESCRIPTOR {
LUID Identifier;
ULONG_PTR Process;
ULONG_PTR Object;
ULONG Function;
ULONG InputSize;
ULONG OutputSize;
ULONG Reserved;
} CD_IO_DESCRIPTOR, *PCD_IO_DESCRIPTOR;
//
// Types of objects, used in CREATE_OBJECT_INFORMATION::ObjectType.
//
#define CD_IO_OBJECT_TYPE_CURRENT_INPUT 0x01
#define CD_IO_OBJECT_TYPE_CURRENT_OUTPUT 0x02
#define CD_IO_OBJECT_TYPE_NEW_OUTPUT 0x03
#define CD_IO_OBJECT_TYPE_GENERIC 0x04
//
// Payload of the CONSOLE_IO_CREATE_OBJECT io.
//
typedef struct _CD_CREATE_OBJECT_INFORMATION {
ULONG ObjectType;
ULONG ShareMode;
ACCESS_MASK DesiredAccess;
} CD_CREATE_OBJECT_INFORMATION, *PCD_CREATE_OBJECT_INFORMATION;
//
// Create EA buffers.
//
#define CD_BROKER_EA_NAME "broker"
#define CD_SERVER_EA_NAME "server"
#define CD_ATTACH_EA_NAME "attach"
typedef struct _CD_CREATE_SERVER {
HANDLE BrokerHandle;
LUID BrokerRequest;
} CD_CREATE_SERVER, *PCD_CREATE_SERVER;
typedef struct _CD_ATTACH_INFORMATION {
HANDLE ProcessId;
} CD_ATTACH_INFORMATION, *PCD_ATTACH_INFORMATION;
typedef struct _CD_ATTACH_INFORMATION64 {
PVOID64 ProcessId;
} CD_ATTACH_INFORMATION64, *PCD_ATTACH_INFORMATION64;
//
// Information passed to the driver by a server when a connection is accepted.
//
typedef struct _CD_CONNECTION_INFORMATION {
ULONG_PTR Process;
ULONG_PTR Input;
ULONG_PTR Output;
} CD_CONNECTION_INFORMATION, *PCD_CONNECTION_INFORMATION;
//
// Ioctls.
//
typedef struct _CD_IO_BUFFER {
ULONG Size;
PVOID Buffer;
} CD_IO_BUFFER, *PCD_IO_BUFFER;
typedef struct _CD_IO_BUFFER64 {
ULONG Size;
PVOID64 Buffer;
} CD_IO_BUFFER64, *PCD_IO_BUFFER64;
typedef struct _CD_USER_DEFINED_IO {
HANDLE Client;
ULONG InputCount;
ULONG OutputCount;
CD_IO_BUFFER Buffers[ANYSIZE_ARRAY];
} CD_USER_DEFINED_IO, *PCD_USER_DEFINED_IO;
typedef struct _CD_USER_DEFINED_IO64 {
PVOID64 Client;
ULONG InputCount;
ULONG OutputCount;
CD_IO_BUFFER64 Buffers[ANYSIZE_ARRAY];
} CD_USER_DEFINED_IO64, *PCD_USER_DEFINED_IO64;
typedef struct _CD_IO_BUFFER_DESCRIPTOR {
PVOID Data;
ULONG Size;
ULONG Offset;
} CD_IO_BUFFER_DESCRIPTOR, *PCD_IO_BUFFER_DESCRIPTOR;
typedef struct _CD_IO_COMPLETE {
LUID Identifier;
IO_STATUS_BLOCK IoStatus;
CD_IO_BUFFER_DESCRIPTOR Write;
} CD_IO_COMPLETE, *PCD_IO_COMPLETE;
typedef struct _CD_IO_OPERATION {
LUID Identifier;
CD_IO_BUFFER_DESCRIPTOR Buffer;
} CD_IO_OPERATION, *PCD_IO_OPERATION;
typedef struct _CD_IO_SERVER_INFORMATION {
HANDLE InputAvailableEvent;
} CD_IO_SERVER_INFORMATION, *PCD_IO_SERVER_INFORMATION;
typedef struct _CD_IO_DISPLAY_SIZE {
ULONG Width;
ULONG Height;
} CD_IO_DISPLAY_SIZE, *PCD_IO_DISPLAY_SIZE;
typedef struct _CD_IO_CHARACTER {
WCHAR Character;
USHORT Attribute;
} CD_IO_CHARACTER, *PCD_IO_CHARACTER;
typedef struct _CD_IO_ROW_INFORMATION {
SHORT Index;
PCD_IO_CHARACTER Old;
PCD_IO_CHARACTER New;
} CD_IO_ROW_INFORMATION, *PCD_IO_ROW_INFORMATION;
typedef struct _CD_IO_CURSOR_INFORMATION {
USHORT Column;
USHORT Row;
ULONG Height;
BOOLEAN IsVisible;
} CD_IO_CURSOR_INFORMATION, *PCD_IO_CURSOR_INFORMATION;
typedef struct _CD_IO_FONT_SIZE {
ULONG Width;
ULONG Height;
} CD_IO_FONT_SIZE, *PCD_IO_FONT_SIZE;
#define IOCTL_CONDRV_READ_IO \
CTL_CODE(FILE_DEVICE_CONSOLE, 1, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_COMPLETE_IO \
CTL_CODE(FILE_DEVICE_CONSOLE, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_READ_INPUT \
CTL_CODE(FILE_DEVICE_CONSOLE, 3, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_WRITE_OUTPUT \
CTL_CODE(FILE_DEVICE_CONSOLE, 4, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_ISSUE_USER_IO \
CTL_CODE(FILE_DEVICE_CONSOLE, 5, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_DISCONNECT_PIPE \
CTL_CODE(FILE_DEVICE_CONSOLE, 6, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_SET_SERVER_INFORMATION \
CTL_CODE(FILE_DEVICE_CONSOLE, 7, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_GET_SERVER_PID \
CTL_CODE(FILE_DEVICE_CONSOLE, 8, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_GET_DISPLAY_SIZE \
CTL_CODE(FILE_DEVICE_CONSOLE, 9, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_UPDATE_DISPLAY \
CTL_CODE(FILE_DEVICE_CONSOLE, 10, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_SET_CURSOR \
CTL_CODE(FILE_DEVICE_CONSOLE, 11, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_ALLOW_VIA_UIACCESS \
CTL_CODE(FILE_DEVICE_CONSOLE, 12, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_LAUNCH_SERVER \
CTL_CODE(FILE_DEVICE_CONSOLE, 13, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CONDRV_GET_FONT_SIZE \
CTL_CODE(FILE_DEVICE_CONSOLE, 14, METHOD_NEITHER, FILE_ANY_ACCESS)