40 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
46#define GUID_DISPLAY_ADAPTER_INTERFACE GUID_DEVINTERFACE_DISPLAY_ADAPTER
48#if (NTDDI_VERSION >= NTDDI_VISTA)
55 0xe6f07b5f, 0xee97, 0x4a90, 0xb0, 0x76, 0x33, 0xf5, 0x7b, 0xf4, 0xea, 0xa7);
62 0x1ca05180, 0xa699, 0x450a, 0x9a, 0x0c, 0xde, 0x4f, 0xbe, 0x3d, 0xdd, 0x89);
69 0x1ad9e4f0, 0xf88d, 0x4360, 0xba, 0xb9, 0x4c, 0x2d, 0x55, 0xe5, 0x64, 0xcd);
73#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
74#ifdef DEFINE_DEVPROPKEY
81 0xc50a3f10, 0xaa5c, 0x4247, 0xb8, 0x30, 0xd6, 0xa6, 0xf8, 0xea, 0xa3, 0x10, 0x01);
83struct INDIRECT_DISPLAY_INFO
85 LUID DisplayAdapterLuid;
88 ULONG DisplayAdapterTargetBase;
92#define INDIRECT_DISPLAY_INFO_FLAGS_CREATED_IDDCX_ADAPTER 0x01
104#define VIDEO_DEVICE_NAME "DISPLAY%d"
105#define WVIDEO_DEVICE_NAME L"DISPLAY%d"
107#define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo"
110#define IOCTL_VIDEO_ENABLE_VDM \
111 CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
113#define IOCTL_VIDEO_DISABLE_VDM \
114 CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
116#define IOCTL_VIDEO_REGISTER_VDM \
117 CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
119#define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE \
120 CTL_CODE(FILE_DEVICE_VIDEO, 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
122#define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE \
123 CTL_CODE(FILE_DEVICE_VIDEO, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
125#define IOCTL_VIDEO_MONITOR_DEVICE \
126 CTL_CODE(FILE_DEVICE_VIDEO, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
128#define IOCTL_VIDEO_ENUM_MONITOR_PDO \
129 CTL_CODE(FILE_DEVICE_VIDEO, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
131#define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS \
132 CTL_CODE(FILE_DEVICE_VIDEO, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
134#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
135 CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
137#define IOCTL_VIDEO_IS_VGA_DEVICE \
138 CTL_CODE(FILE_DEVICE_VIDEO, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
140#define IOCTL_VIDEO_USE_DEVICE_IN_SESSION \
141 CTL_CODE(FILE_DEVICE_VIDEO, 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
143#define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY \
144 CTL_CODE(FILE_DEVICE_VIDEO, 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
146#define IOCTL_VIDEO_DISABLE_CURSOR \
147 CTL_CODE(FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
149#define IOCTL_VIDEO_DISABLE_POINTER \
150 CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
152#define IOCTL_VIDEO_ENABLE_CURSOR \
153 CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
155#define IOCTL_VIDEO_ENABLE_POINTER \
156 CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
158#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
159 CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
161#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
162 CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
164#define IOCTL_VIDEO_GET_CHILD_STATE \
165 CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
167#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
168 CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
170#define IOCTL_VIDEO_LOAD_AND_SET_FONT \
171 CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
173#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
174 CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
176#define IOCTL_VIDEO_QUERY_AVAIL_MODES \
177 CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
179#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
180 CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
182#define IOCTL_VIDEO_QUERY_CURRENT_MODE \
183 CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
185#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
186 CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
188#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
189 CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
191#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
192 CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
194#define IOCTL_VIDEO_QUERY_POINTER_ATTR \
195 CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
197#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
198 CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
200#define IOCTL_VIDEO_QUERY_POINTER_POSITION \
201 CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
203#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
204 CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
206#define IOCTL_VIDEO_RESET_DEVICE \
207 CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
209#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
210 CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
212#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
213 CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
215#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
216 CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
218#define IOCTL_VIDEO_SET_COLOR_REGISTERS \
219 CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
221#define IOCTL_VIDEO_SET_CURRENT_MODE \
222 CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
224#define IOCTL_VIDEO_SET_CURSOR_ATTR \
225 CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
227#define IOCTL_VIDEO_SET_CURSOR_POSITION \
228 CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
230#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
231 CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
233#define IOCTL_VIDEO_SET_POINTER_ATTR \
234 CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
236#define IOCTL_VIDEO_SET_POINTER_POSITION \
237 CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
239#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
240 CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
242#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
243 CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
245#define IOCTL_VIDEO_SWITCH_DUALVIEW \
246 CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
248#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
249 CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
251#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
252 CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
254#define IOCTL_VIDEO_SET_COLOR_LUT_DATA \
255 CTL_CODE(FILE_DEVICE_VIDEO, 0x11f, METHOD_BUFFERED, FILE_ANY_ACCESS)
257#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
258 CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
260#define IOCTL_VIDEO_SET_BANK_POSITION \
261 CTL_CODE(FILE_DEVICE_VIDEO, 0x124, METHOD_BUFFERED, FILE_ANY_ACCESS)
263#define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
264 CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)
266#define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
267 CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)
269#define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
270 CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)
305#define DXGK_WIN32K_PARAM_FLAG_UPDATEREGISTRY 1
306#define DXGK_WIN32K_PARAM_FLAG_MODESWITCH 2
307#define DXGK_WIN32K_PARAM_FLAG_DISABLEVIEW 4
355#define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
356#define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
363#define VIDEO_MODE_COLOR 0x0001
364#define VIDEO_MODE_GRAPHICS 0x0002
365#define VIDEO_MODE_PALETTE_DRIVEN 0x0004
366#define VIDEO_MODE_MANAGED_PALETTE 0x0008
367#define VIDEO_MODE_INTERLACED 0x0010
368#define VIDEO_MODE_NO_OFF_SCREEN 0x0020
369#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
370#define VIDEO_MODE_BANKED 0x0080
371#define VIDEO_MODE_LINEAR 0x0100
438#define PLANAR_HC 0x00000001
473#define VIDEO_DEVICE_COLOR 0x00000001
474#define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
523#define VIDEO_MODE_ASYNC_POINTER 0x01
524#define VIDEO_MODE_MONO_POINTER 0x02
525#define VIDEO_MODE_COLOR_POINTER 0x04
526#define VIDEO_MODE_ANIMATE_START 0x08
527#define VIDEO_MODE_ANIMATE_UPDATE 0x10
544#define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
545#define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
546#define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
608#define VIDEO_CHILD_ACTIVE 0x00000001
609#define VIDEO_CHILD_DETACHED 0x00000002
610#define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
611#define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
613#define VIDEO_DUALVIEW_REMOVABLE 0x00000001
614#define VIDEO_DUALVIEW_PRIMARY 0x80000000
615#define VIDEO_DUALVIEW_SECONDARY 0x40000000
633#define DISPLAYPOLICY_AC 0x00000001
634#define DISPLAYPOLICY_DC 0x00000002
635#define DISPLAYPOLICY_BOTH 0x00000003
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid)
struct tagVIDEO_MONITOR_DESCRIPTOR VIDEO_MONITOR_DESCRIPTOR
struct _VIDEO_SHARE_MEMORY_INFORMATION * PVIDEO_SHARE_MEMORY_INFORMATION
struct _VIDEO_LOAD_FONT_INFORMATION * PVIDEO_LOAD_FONT_INFORMATION
struct _VIDEO_PUBLIC_ACCESS_RANGES VIDEO_PUBLIC_ACCESS_RANGES
struct _VIDEO_MEMORY VIDEO_MEMORY
struct _VIDEO_SHARE_MEMORY_INFORMATION VIDEO_SHARE_MEMORY_INFORMATION
struct _VIDEO_PUBLIC_ACCESS_RANGES * PVIDEO_PUBLIC_ACCESS_RANGES
struct _VIDEO_VDM VIDEO_VDM
struct _VIDEO_COLOR_CAPABILITIES VIDEO_COLOR_CAPABILITIES
struct _VIDEO_POINTER_POSITION VIDEO_POINTER_POSITION
struct _VIDEO_MODE VIDEO_MODE
struct _VIDEO_VDM * PVIDEO_VDM
enum _VIDEO_BANK_TYPE VIDEO_BANK_TYPE
VOID(NTAPI * PVIDEO_WIN32K_CALLOUT)(_In_ PVOID Params)
enum _VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE
struct _VIDEO_REGISTER_VDM VIDEO_REGISTER_VDM
struct _VIDEO_CURSOR_ATTRIBUTES VIDEO_CURSOR_ATTRIBUTES
struct _VIDEO_PALETTE_DATA VIDEO_PALETTE_DATA
struct _VIDEO_MODE_INFORMATION * PVIDEO_MODE_INFORMATION
_VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE
@ VideoEnumChildPdoNotifyCallout
@ VideoPowerNotifyCallout
@ VideoDxgkFindAdapterTdrCallout
@ VideoDxgkMonitorEventCallout
@ VideoChangeDisplaySettingsCallout
@ VideoDisplaySwitchCallout
@ VideoDxgkDisplaySwitchCallout
@ VideoFindAdapterCallout
struct _VIDEO_HARDWARE_STATE_HEADER VIDEO_HARDWARE_STATE_HEADER
struct _VIDEO_HARDWARE_STATE VIDEO_HARDWARE_STATE
enum _VIDEO_BANK_TYPE * PVIDEO_BANK_TYPE
struct _VIDEO_POWER_MANAGEMENT * PVIDEO_POWER_MANAGEMENT
struct _VIDEO_WIN32K_CALLBACKS_PARAMS VIDEO_WIN32K_CALLBACKS_PARAMS
struct _VIDEO_NUM_MODES * PVIDEO_NUM_MODES
struct _VIDEO_DEVICE_SESSION_STATUS * PVIDEO_DEVICE_SESSION_STATUS
struct tagVIDEO_MONITOR_DEVICE * PVIDEO_MONITOR_DEVICE
struct _ENG_EVENT * PEVENT
struct _VIDEO_CURSOR_ATTRIBUTES * PVIDEO_CURSOR_ATTRIBUTES
struct _VIDEO_MODE * PVIDEO_MODE
struct _VIDEO_POINTER_ATTRIBUTES VIDEO_POINTER_ATTRIBUTES
struct _DISPLAY_BRIGHTNESS DISPLAY_BRIGHTNESS
struct _VIDEO_WIN32K_CALLBACKS_PARAMS * PVIDEO_WIN32K_CALLBACKS_PARAMS
struct _VIDEO_MEMORY_INFORMATION * PVIDEO_MEMORY_INFORMATION
struct _VIDEO_POINTER_CAPABILITIES VIDEO_POINTER_CAPABILITIES
struct _VIDEO_REGISTER_VDM * PVIDEO_REGISTER_VDM
struct _VIDEO_HARDWARE_STATE_HEADER * PVIDEO_HARDWARE_STATE_HEADER
struct _VIDEO_POINTER_POSITION * PVIDEO_POINTER_POSITION
struct _VIDEO_LOAD_FONT_INFORMATION VIDEO_LOAD_FONT_INFORMATION
struct _DXGK_WIN32K_PARAM_DATA * PDXGK_WIN32K_PARAM_DATA
struct VIDEO_CLUT * PVIDEO_CLUT
struct _VIDEO_PALETTE_DATA * PVIDEO_PALETTE_DATA
struct _VIDEO_CURSOR_POSITION * PVIDEO_CURSOR_POSITION
struct _VIDEO_WIN32K_CALLBACKS VIDEO_WIN32K_CALLBACKS
struct _VIDEO_CURSOR_POSITION VIDEO_CURSOR_POSITION
struct _VIDEO_COLOR_CAPABILITIES * PVIDEO_COLOR_CAPABILITIES
struct _VIDEO_HARDWARE_STATE * PVIDEO_HARDWARE_STATE
struct _VIDEO_DEVICE_SESSION_STATUS VIDEO_DEVICE_SESSION_STATUS
struct _VIDEO_NUM_MODES VIDEO_NUM_MODES
struct _DISPLAY_BRIGHTNESS * PDISPLAY_BRIGHTNESS
struct _VIDEO_CLUTDATA * PVIDEO_CLUTDATA
struct _VIDEO_BANK_SELECT * PVIDEO_BANK_SELECT
struct _VIDEO_MEMORY_INFORMATION VIDEO_MEMORY_INFORMATION
struct _ENG_EVENT ENG_EVENT
struct _VIDEO_SHARE_MEMORY VIDEO_SHARE_MEMORY
struct _VIDEO_CLUTDATA VIDEO_CLUTDATA
struct _VIDEO_BANK_SELECT VIDEO_BANK_SELECT
struct _DXGK_WIN32K_PARAM_DATA DXGK_WIN32K_PARAM_DATA
struct _VIDEO_MODE_INFORMATION VIDEO_MODE_INFORMATION
enum _VIDEO_POWER_STATE VIDEO_POWER_STATE
struct tagVIDEO_MONITOR_DESCRIPTOR * PVIDEO_MONITOR_DESCRIPTOR
struct tagVIDEO_MONITOR_DEVICE VIDEO_MONITOR_DEVICE
struct _VIDEO_SHARE_MEMORY * PVIDEO_SHARE_MEMORY
struct _VIDEO_POINTER_ATTRIBUTES * PVIDEO_POINTER_ATTRIBUTES
enum _VIDEO_POWER_STATE * PVIDEO_POWER_STATE
struct _VIDEO_WIN32K_CALLBACKS * PVIDEO_WIN32K_CALLBACKS
struct _ENG_EVENT * PENG_EVENT
struct _VIDEO_POINTER_CAPABILITIES * PVIDEO_POINTER_CAPABILITIES
struct _VIDEO_POWER_MANAGEMENT VIDEO_POWER_MANAGEMENT
struct _VIDEO_MEMORY * PVIDEO_MEMORY
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
ULONG NumPathArrayElements
ULONG NumModeArrayElements
ULONG PlanarHCEnableCodeOffset
ULONG PlanarHCDisableCodeOffset
ULONG PlanarHCBankingType
ULONG PlanarHCGranularity
ULONG PlanarHCBankCodeOffset
PVIDEO_HARDWARE_STATE_HEADER StateHeader
PVOID RequestedVirtualAddress
ULONG ModeInformationLength
PVOID RequestedVirtualAddress
VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE CalloutType
IN PVIDEO_WIN32K_CALLOUT Callout
OUT HANDLE pPhysDeviceObject
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ ULONG Flags