xref: /reactos/sdk/include/psdk/ntddvdeo.h (revision b5f9e1c2)
1c2c66affSColin Finck /*
2c2c66affSColin Finck  * ntddvdeo.h
3c2c66affSColin Finck  *
4c2c66affSColin Finck  * Definitions for video devices
5c2c66affSColin Finck  *
6c2c66affSColin Finck  * This file is part of the w32api package.
7c2c66affSColin Finck  *
8c2c66affSColin Finck  * Contributors:
9c2c66affSColin Finck  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10c2c66affSColin Finck  *
11c2c66affSColin Finck  * THIS SOFTWARE IS NOT COPYRIGHTED
12c2c66affSColin Finck  *
13c2c66affSColin Finck  * This source code is offered for use in the public domain. You may
14c2c66affSColin Finck  * use, modify or distribute it freely.
15c2c66affSColin Finck  *
16c2c66affSColin Finck  * This code is distributed in the hope that it will be useful but
17c2c66affSColin Finck  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18c2c66affSColin Finck  * DISCLAIMED. This includes but is not limited to warranties of
19c2c66affSColin Finck  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20c2c66affSColin Finck  *
21c2c66affSColin Finck  */
22c2c66affSColin Finck 
23*b5f9e1c2SHermès Bélusca-Maïto #ifndef _NTDDVDEO_
24c2c66affSColin Finck #define _NTDDVDEO_
25c2c66affSColin Finck 
26*b5f9e1c2SHermès Bélusca-Maïto #pragma once
27*b5f9e1c2SHermès Bélusca-Maïto 
28*b5f9e1c2SHermès Bélusca-Maïto /*
29*b5f9e1c2SHermès Bélusca-Maïto  * Display output interfaces
30*b5f9e1c2SHermès Bélusca-Maïto  * {96304d9f-54b5-11d1-8b0f-00a0c9068ff3}
31*b5f9e1c2SHermès Bélusca-Maïto  */
32*b5f9e1c2SHermès Bélusca-Maïto // DEFINE_GUID(GUID_DISPLAY_OUTPUT_INTERFACE_STANDARD, \/
33*b5f9e1c2SHermès Bélusca-Maïto //   0x96304d9f, 0x54b5, 0x11d1, 0x8b, 0x0f, 0x00, 0xa0, 0xc9, 0x06, 0x8f, 0xf3);
34*b5f9e1c2SHermès Bélusca-Maïto 
35*b5f9e1c2SHermès Bélusca-Maïto /*
36*b5f9e1c2SHermès Bélusca-Maïto  * Display adapter device interface
37*b5f9e1c2SHermès Bélusca-Maïto  * {5b45201d-f2f2-4f3b-85bb-30ff1f953599}
38*b5f9e1c2SHermès Bélusca-Maïto  */
39c2c66affSColin Finck DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
40c2c66affSColin Finck   0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
41c2c66affSColin Finck 
42*b5f9e1c2SHermès Bélusca-Maïto /*
43*b5f9e1c2SHermès Bélusca-Maïto  * Obsolete device interface class GUID names
44*b5f9e1c2SHermès Bélusca-Maïto  * (use of above GUID_DEVINTERFACE_* names is recommended)
45*b5f9e1c2SHermès Bélusca-Maïto  */
46*b5f9e1c2SHermès Bélusca-Maïto #define GUID_DISPLAY_ADAPTER_INTERFACE  GUID_DEVINTERFACE_DISPLAY_ADAPTER
47*b5f9e1c2SHermès Bélusca-Maïto 
48*b5f9e1c2SHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_VISTA)
49*b5f9e1c2SHermès Bélusca-Maïto 
50*b5f9e1c2SHermès Bélusca-Maïto /*
51*b5f9e1c2SHermès Bélusca-Maïto  * Monitor device interface
52*b5f9e1c2SHermès Bélusca-Maïto  * {e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
53*b5f9e1c2SHermès Bélusca-Maïto  */
54*b5f9e1c2SHermès Bélusca-Maïto DEFINE_GUID(GUID_DEVINTERFACE_MONITOR, \
55*b5f9e1c2SHermès Bélusca-Maïto   0xe6f07b5f, 0xee97, 0x4a90, 0xb0, 0x76, 0x33, 0xf5, 0x7b, 0xf4, 0xea, 0xa7);
56*b5f9e1c2SHermès Bélusca-Maïto 
57*b5f9e1c2SHermès Bélusca-Maïto /*
58*b5f9e1c2SHermès Bélusca-Maïto  * Interface used by anyone listening for arrival of the display device
59*b5f9e1c2SHermès Bélusca-Maïto  * {1ca05180-a699-450a-9a0c-de4fbe3ddd89}
60*b5f9e1c2SHermès Bélusca-Maïto  */
61*b5f9e1c2SHermès Bélusca-Maïto DEFINE_GUID(GUID_DISPLAY_DEVICE_ARRIVAL, \
62*b5f9e1c2SHermès Bélusca-Maïto   0x1ca05180, 0xa699, 0x450a, 0x9a, 0x0c, 0xde, 0x4f, 0xbe, 0x3d, 0xdd, 0x89);
63*b5f9e1c2SHermès Bélusca-Maïto 
64*b5f9e1c2SHermès Bélusca-Maïto /*
65*b5f9e1c2SHermès Bélusca-Maïto  * Interface used by anyone listening for arrival of display children
66*b5f9e1c2SHermès Bélusca-Maïto  * {1ad9e4f0-f88d-4360-bab9-4c2d55e564cd}
67*b5f9e1c2SHermès Bélusca-Maïto  */
68*b5f9e1c2SHermès Bélusca-Maïto DEFINE_GUID(GUID_DEVINTERFACE_VIDEO_OUTPUT_ARRIVAL, \
69*b5f9e1c2SHermès Bélusca-Maïto   0x1ad9e4f0, 0xf88d, 0x4360, 0xba, 0xb9, 0x4c, 0x2d, 0x55, 0xe5, 0x64, 0xcd);
70*b5f9e1c2SHermès Bélusca-Maïto 
71*b5f9e1c2SHermès Bélusca-Maïto #endif // (NTDDI_VERSION >= NTDDI_VISTA)
72*b5f9e1c2SHermès Bélusca-Maïto 
73*b5f9e1c2SHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
74*b5f9e1c2SHermès Bélusca-Maïto #ifdef DEFINE_DEVPROPKEY
75*b5f9e1c2SHermès Bélusca-Maïto 
76*b5f9e1c2SHermès Bélusca-Maïto /*
77*b5f9e1c2SHermès Bélusca-Maïto  * Property on a display class device's DevNode indicating
78*b5f9e1c2SHermès Bélusca-Maïto  * that it is a indirect display.
79*b5f9e1c2SHermès Bélusca-Maïto  */
80*b5f9e1c2SHermès Bélusca-Maïto DEFINE_DEVPROPKEY(DEVPKEY_IndirectDisplay, \
81*b5f9e1c2SHermès Bélusca-Maïto   0xc50a3f10, 0xaa5c, 0x4247, 0xb8, 0x30, 0xd6, 0xa6, 0xf8, 0xea, 0xa3, 0x10, 0x01);
82*b5f9e1c2SHermès Bélusca-Maïto 
83*b5f9e1c2SHermès Bélusca-Maïto struct INDIRECT_DISPLAY_INFO
84*b5f9e1c2SHermès Bélusca-Maïto {
85*b5f9e1c2SHermès Bélusca-Maïto     LUID DisplayAdapterLuid;
86*b5f9e1c2SHermès Bélusca-Maïto     ULONG Flags;
87*b5f9e1c2SHermès Bélusca-Maïto     ULONG NumMonitors;
88*b5f9e1c2SHermès Bélusca-Maïto     ULONG DisplayAdapterTargetBase;
89*b5f9e1c2SHermès Bélusca-Maïto };
90*b5f9e1c2SHermès Bélusca-Maïto 
91*b5f9e1c2SHermès Bélusca-Maïto /* This indirect display device created an IddCx adapter */
92*b5f9e1c2SHermès Bélusca-Maïto #define INDIRECT_DISPLAY_INFO_FLAGS_CREATED_IDDCX_ADAPTER 0x01
93*b5f9e1c2SHermès Bélusca-Maïto 
94*b5f9e1c2SHermès Bélusca-Maïto #endif // DEFINE_DEVPROPKEY
95*b5f9e1c2SHermès Bélusca-Maïto #endif // (NTDDI_VERSION >= NTDDI_WIN10_RS1)
96*b5f9e1c2SHermès Bélusca-Maïto 
97*b5f9e1c2SHermès Bélusca-Maïto 
98c2c66affSColin Finck #ifndef GUID_DEFS_ONLY
99c2c66affSColin Finck 
100c2c66affSColin Finck #ifdef __cplusplus
101c2c66affSColin Finck extern "C" {
102c2c66affSColin Finck #endif
103c2c66affSColin Finck 
104c2c66affSColin Finck #define VIDEO_DEVICE_NAME                 "DISPLAY%d"
105c2c66affSColin Finck #define WVIDEO_DEVICE_NAME                L"DISPLAY%d"
106c2c66affSColin Finck 
107c2c66affSColin Finck #define DD_FULLSCREEN_VIDEO_DEVICE_NAME   L"\\Device\\FSVideo"
108c2c66affSColin Finck 
109c2c66affSColin Finck 
110c2c66affSColin Finck #define IOCTL_VIDEO_ENABLE_VDM \
111c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
112c2c66affSColin Finck 
113c2c66affSColin Finck #define IOCTL_VIDEO_DISABLE_VDM \
114c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
115c2c66affSColin Finck 
116c2c66affSColin Finck #define IOCTL_VIDEO_REGISTER_VDM \
117c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
118c2c66affSColin Finck 
119c2c66affSColin Finck #define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE \
120c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
121c2c66affSColin Finck 
122c2c66affSColin Finck #define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE \
123c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
124c2c66affSColin Finck 
125c2c66affSColin Finck #define IOCTL_VIDEO_MONITOR_DEVICE \
126c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
127c2c66affSColin Finck 
128c2c66affSColin Finck #define IOCTL_VIDEO_ENUM_MONITOR_PDO \
129c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
130c2c66affSColin Finck 
131c2c66affSColin Finck #define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS \
132c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
133c2c66affSColin Finck 
134c2c66affSColin Finck #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
135c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
136c2c66affSColin Finck 
137c2c66affSColin Finck #define IOCTL_VIDEO_IS_VGA_DEVICE \
138c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
139c2c66affSColin Finck 
140c2c66affSColin Finck #define IOCTL_VIDEO_USE_DEVICE_IN_SESSION \
141c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
142c2c66affSColin Finck 
143c2c66affSColin Finck #define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY \
144c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
145c2c66affSColin Finck 
146c2c66affSColin Finck #define IOCTL_VIDEO_DISABLE_CURSOR \
147c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
148c2c66affSColin Finck 
149c2c66affSColin Finck #define IOCTL_VIDEO_DISABLE_POINTER \
150c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
151c2c66affSColin Finck 
152c2c66affSColin Finck #define IOCTL_VIDEO_ENABLE_CURSOR \
153c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
154c2c66affSColin Finck 
155c2c66affSColin Finck #define IOCTL_VIDEO_ENABLE_POINTER \
156c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
157c2c66affSColin Finck 
158c2c66affSColin Finck #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
159c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
160c2c66affSColin Finck 
161c2c66affSColin Finck #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
162c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
163c2c66affSColin Finck 
164c2c66affSColin Finck #define IOCTL_VIDEO_GET_CHILD_STATE \
165c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
166c2c66affSColin Finck 
167c2c66affSColin Finck #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
168c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
169c2c66affSColin Finck 
170c2c66affSColin Finck #define IOCTL_VIDEO_LOAD_AND_SET_FONT \
171c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
172c2c66affSColin Finck 
173c2c66affSColin Finck #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
174c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
175c2c66affSColin Finck 
176c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_AVAIL_MODES \
177c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
178c2c66affSColin Finck 
179c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
180c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
181c2c66affSColin Finck 
182c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_CURRENT_MODE \
183c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
184c2c66affSColin Finck 
185c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
186c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
187c2c66affSColin Finck 
188c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
189c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
190c2c66affSColin Finck 
191c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
192c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
193c2c66affSColin Finck 
194c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_POINTER_ATTR \
195c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
196c2c66affSColin Finck 
197c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
198c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
199c2c66affSColin Finck 
200c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_POINTER_POSITION \
201c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
202c2c66affSColin Finck 
203c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
204c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
205c2c66affSColin Finck 
206c2c66affSColin Finck #define IOCTL_VIDEO_RESET_DEVICE \
207c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
208c2c66affSColin Finck 
209c2c66affSColin Finck #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
210c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
211c2c66affSColin Finck 
212c2c66affSColin Finck #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
213c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
214c2c66affSColin Finck 
215c2c66affSColin Finck #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
216c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
217c2c66affSColin Finck 
218c2c66affSColin Finck #define IOCTL_VIDEO_SET_COLOR_REGISTERS \
219c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
220c2c66affSColin Finck 
221c2c66affSColin Finck #define IOCTL_VIDEO_SET_CURRENT_MODE \
222c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
223c2c66affSColin Finck 
224c2c66affSColin Finck #define IOCTL_VIDEO_SET_CURSOR_ATTR \
225c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
226c2c66affSColin Finck 
227c2c66affSColin Finck #define IOCTL_VIDEO_SET_CURSOR_POSITION \
228c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
229c2c66affSColin Finck 
230c2c66affSColin Finck #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
231c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
232c2c66affSColin Finck 
233c2c66affSColin Finck #define IOCTL_VIDEO_SET_POINTER_ATTR \
234c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
235c2c66affSColin Finck 
236c2c66affSColin Finck #define IOCTL_VIDEO_SET_POINTER_POSITION \
237c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
238c2c66affSColin Finck 
239c2c66affSColin Finck #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
240c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
241c2c66affSColin Finck 
242c2c66affSColin Finck #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
243c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
244c2c66affSColin Finck 
245c2c66affSColin Finck #define IOCTL_VIDEO_SWITCH_DUALVIEW \
246c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
247c2c66affSColin Finck 
248c2c66affSColin Finck #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
249c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
250c2c66affSColin Finck 
251c2c66affSColin Finck #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
252c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
253c2c66affSColin Finck 
254c2c66affSColin Finck #define IOCTL_VIDEO_SET_COLOR_LUT_DATA \
255c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x11f, METHOD_BUFFERED, FILE_ANY_ACCESS)
256c2c66affSColin Finck 
257c2c66affSColin Finck #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
258c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
259c2c66affSColin Finck 
260c2c66affSColin Finck #define IOCTL_VIDEO_SET_BANK_POSITION \
261c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x124, METHOD_BUFFERED, FILE_ANY_ACCESS)
262c2c66affSColin Finck 
263c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
264c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)
265c2c66affSColin Finck 
266c2c66affSColin Finck #define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
267c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)
268c2c66affSColin Finck 
269c2c66affSColin Finck #define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
270c2c66affSColin Finck   CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)
271c2c66affSColin Finck 
272c2c66affSColin Finck typedef struct _VIDEO_VDM {
273c2c66affSColin Finck   HANDLE ProcessHandle;
274c2c66affSColin Finck } VIDEO_VDM, *PVIDEO_VDM;
275c2c66affSColin Finck 
276c2c66affSColin Finck typedef struct _VIDEO_REGISTER_VDM {
277c2c66affSColin Finck   ULONG MinimumStateSize;
278c2c66affSColin Finck } VIDEO_REGISTER_VDM, *PVIDEO_REGISTER_VDM;
279c2c66affSColin Finck 
280c2c66affSColin Finck typedef struct tagVIDEO_MONITOR_DEVICE {
281c2c66affSColin Finck   ULONG flag;
282f26fe3f1SHervé Poussineau   HANDLE pdo;
283c2c66affSColin Finck   ULONG HwID;
284c2c66affSColin Finck   BOOLEAN Internal;
285c2c66affSColin Finck } VIDEO_MONITOR_DEVICE, *PVIDEO_MONITOR_DEVICE;
286c2c66affSColin Finck 
287c2c66affSColin Finck typedef struct tagVIDEO_MONITOR_DESCRIPTOR {
288c2c66affSColin Finck   ULONG DescriptorSize;
289c2c66affSColin Finck   UCHAR Descriptor[1];
290c2c66affSColin Finck } VIDEO_MONITOR_DESCRIPTOR, *PVIDEO_MONITOR_DESCRIPTOR;
291c2c66affSColin Finck 
292c2c66affSColin Finck typedef enum _VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE {
293c2c66affSColin Finck   VideoPowerNotifyCallout = 1,
294c2c66affSColin Finck   VideoDisplaySwitchCallout,
295c2c66affSColin Finck   VideoEnumChildPdoNotifyCallout,
296c2c66affSColin Finck   VideoFindAdapterCallout,
297c2c66affSColin Finck   VideoWakeupCallout,
298c2c66affSColin Finck   VideoChangeDisplaySettingsCallout,
299c2c66affSColin Finck   VideoPnpNotifyCallout,
300c2c66affSColin Finck   VideoDxgkDisplaySwitchCallout,
301c2c66affSColin Finck   VideoDxgkMonitorEventCallout,
302c2c66affSColin Finck   VideoDxgkFindAdapterTdrCallout
303c2c66affSColin Finck } VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE;
304c2c66affSColin Finck 
305c2c66affSColin Finck #define DXGK_WIN32K_PARAM_FLAG_UPDATEREGISTRY 1
306c2c66affSColin Finck #define DXGK_WIN32K_PARAM_FLAG_MODESWITCH 2
307c2c66affSColin Finck #define DXGK_WIN32K_PARAM_FLAG_DISABLEVIEW 4
308c2c66affSColin Finck 
309c2c66affSColin Finck typedef struct _DXGK_WIN32K_PARAM_DATA
310c2c66affSColin Finck {
311c2c66affSColin Finck   PVOID PathsArray;
312c2c66affSColin Finck   PVOID ModesArray;
313c2c66affSColin Finck   ULONG NumPathArrayElements;
314c2c66affSColin Finck   ULONG NumModeArrayElements;
315c2c66affSColin Finck   ULONG SDCFlags;
316c2c66affSColin Finck } DXGK_WIN32K_PARAM_DATA, *PDXGK_WIN32K_PARAM_DATA;
317c2c66affSColin Finck 
318c2c66affSColin Finck typedef struct _VIDEO_WIN32K_CALLBACKS_PARAMS {
319c2c66affSColin Finck   VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE CalloutType;
320c2c66affSColin Finck   PVOID PhysDisp;
321c2c66affSColin Finck   ULONG_PTR Param;
322c2c66affSColin Finck   LONG Status;
323c2c66affSColin Finck } VIDEO_WIN32K_CALLBACKS_PARAMS, *PVIDEO_WIN32K_CALLBACKS_PARAMS;
324c2c66affSColin Finck 
325c2c66affSColin Finck typedef
326c2c66affSColin Finck VOID
3270ad65796SHermès Bélusca-Maïto (NTAPI *PVIDEO_WIN32K_CALLOUT)(
328c2c66affSColin Finck   _In_ PVOID Params);
329c2c66affSColin Finck 
330c2c66affSColin Finck typedef struct _VIDEO_WIN32K_CALLBACKS {
331c2c66affSColin Finck   IN  PVOID PhysDisp;
332c2c66affSColin Finck   IN  PVIDEO_WIN32K_CALLOUT Callout;
333c2c66affSColin Finck   OUT ULONG bACPI;
334c2c66affSColin Finck   OUT HANDLE pPhysDeviceObject;
335c2c66affSColin Finck   OUT ULONG DualviewFlags;
336c2c66affSColin Finck } VIDEO_WIN32K_CALLBACKS, *PVIDEO_WIN32K_CALLBACKS;
337c2c66affSColin Finck 
338c2c66affSColin Finck typedef struct _VIDEO_DEVICE_SESSION_STATUS {
339c2c66affSColin Finck   ULONG bEnable;
340c2c66affSColin Finck   ULONG bSuccess;
341c2c66affSColin Finck } VIDEO_DEVICE_SESSION_STATUS, *PVIDEO_DEVICE_SESSION_STATUS;
342c2c66affSColin Finck 
343c2c66affSColin Finck typedef struct _VIDEO_MEMORY {
344c2c66affSColin Finck   PVOID RequestedVirtualAddress;
345c2c66affSColin Finck } VIDEO_MEMORY, *PVIDEO_MEMORY;
346c2c66affSColin Finck 
347c2c66affSColin Finck typedef struct _VIDEO_MEMORY_INFORMATION {
348c2c66affSColin Finck   PVOID  VideoRamBase;
349c2c66affSColin Finck   ULONG  VideoRamLength;
350c2c66affSColin Finck   PVOID  FrameBufferBase;
351c2c66affSColin Finck   ULONG  FrameBufferLength;
352c2c66affSColin Finck } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
353c2c66affSColin Finck 
354c2c66affSColin Finck /* VIDEO_MODE.RequestedMode */
355c2c66affSColin Finck #define VIDEO_MODE_MAP_MEM_LINEAR         0x40000000
356c2c66affSColin Finck #define VIDEO_MODE_NO_ZERO_MEMORY         0x80000000
357c2c66affSColin Finck 
358c2c66affSColin Finck typedef struct _VIDEO_MODE {
359c2c66affSColin Finck   ULONG  RequestedMode;
360c2c66affSColin Finck } VIDEO_MODE, *PVIDEO_MODE;
361c2c66affSColin Finck 
362c2c66affSColin Finck /* VIDEO_MODE_INFORMATION.AttributeFlags */
363c2c66affSColin Finck #define VIDEO_MODE_COLOR                  0x0001
364c2c66affSColin Finck #define VIDEO_MODE_GRAPHICS               0x0002
365c2c66affSColin Finck #define VIDEO_MODE_PALETTE_DRIVEN         0x0004
366c2c66affSColin Finck #define VIDEO_MODE_MANAGED_PALETTE        0x0008
367c2c66affSColin Finck #define VIDEO_MODE_INTERLACED             0x0010
368c2c66affSColin Finck #define VIDEO_MODE_NO_OFF_SCREEN          0x0020
369c2c66affSColin Finck #define VIDEO_MODE_NO_64_BIT_ACCESS       0x0040
370c2c66affSColin Finck #define VIDEO_MODE_BANKED                 0x0080
371c2c66affSColin Finck #define VIDEO_MODE_LINEAR                 0x0100
372c2c66affSColin Finck 
373c2c66affSColin Finck typedef struct _VIDEO_MODE_INFORMATION {
374c2c66affSColin Finck   ULONG  Length;
375c2c66affSColin Finck   ULONG  ModeIndex;
376c2c66affSColin Finck   ULONG  VisScreenWidth;
377c2c66affSColin Finck   ULONG  VisScreenHeight;
378c2c66affSColin Finck   ULONG  ScreenStride;
379c2c66affSColin Finck   ULONG  NumberOfPlanes;
380c2c66affSColin Finck   ULONG  BitsPerPlane;
381c2c66affSColin Finck   ULONG  Frequency;
382c2c66affSColin Finck   ULONG  XMillimeter;
383c2c66affSColin Finck   ULONG  YMillimeter;
384c2c66affSColin Finck   ULONG  NumberRedBits;
385c2c66affSColin Finck   ULONG  NumberGreenBits;
386c2c66affSColin Finck   ULONG  NumberBlueBits;
387c2c66affSColin Finck   ULONG  RedMask;
388c2c66affSColin Finck   ULONG  GreenMask;
389c2c66affSColin Finck   ULONG  BlueMask;
390c2c66affSColin Finck   ULONG  AttributeFlags;
391c2c66affSColin Finck   ULONG  VideoMemoryBitmapWidth;
392c2c66affSColin Finck   ULONG  VideoMemoryBitmapHeight;
393c2c66affSColin Finck   ULONG  DriverSpecificAttributeFlags;
394c2c66affSColin Finck } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
395c2c66affSColin Finck 
396c2c66affSColin Finck typedef struct _VIDEO_NUM_MODES {
397c2c66affSColin Finck   ULONG  NumModes;
398c2c66affSColin Finck   ULONG  ModeInformationLength;
399c2c66affSColin Finck } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
400c2c66affSColin Finck 
401c2c66affSColin Finck typedef enum _VIDEO_POWER_STATE {
402c2c66affSColin Finck   VideoPowerUnspecified = 0,
403c2c66affSColin Finck   VideoPowerOn = 1,
404c2c66affSColin Finck   VideoPowerStandBy,
405c2c66affSColin Finck   VideoPowerSuspend,
406c2c66affSColin Finck   VideoPowerOff,
407c2c66affSColin Finck   VideoPowerHibernate,
408c2c66affSColin Finck   VideoPowerShutdown,
409c2c66affSColin Finck   VideoPowerMaximum
410c2c66affSColin Finck } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
411c2c66affSColin Finck 
412c2c66affSColin Finck typedef struct _VIDEO_POWER_MANAGEMENT {
413c2c66affSColin Finck   ULONG  Length;
414c2c66affSColin Finck   ULONG  DPMSVersion;
415c2c66affSColin Finck   ULONG  PowerState;
416c2c66affSColin Finck } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
417c2c66affSColin Finck 
418c2c66affSColin Finck typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
419c2c66affSColin Finck   ULONG  InIoSpace;
420c2c66affSColin Finck   ULONG  MappedInIoSpace;
421c2c66affSColin Finck   PVOID  VirtualAddress;
422c2c66affSColin Finck } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
423c2c66affSColin Finck 
424c2c66affSColin Finck typedef struct _VIDEO_SHARE_MEMORY {
425c2c66affSColin Finck   HANDLE  ProcessHandle;
426c2c66affSColin Finck   ULONG  ViewOffset;
427c2c66affSColin Finck   ULONG  ViewSize;
428c2c66affSColin Finck   PVOID  RequestedVirtualAddress;
429c2c66affSColin Finck } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
430c2c66affSColin Finck 
431c2c66affSColin Finck typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
432c2c66affSColin Finck   ULONG  SharedViewOffset;
433c2c66affSColin Finck   ULONG  SharedViewSize;
434c2c66affSColin Finck   PVOID  VirtualAddress;
435c2c66affSColin Finck } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
436c2c66affSColin Finck 
437c2c66affSColin Finck /* VIDEO_BANK_SELECT.BankingFlags constants */
438c2c66affSColin Finck #define PLANAR_HC                         0x00000001
439c2c66affSColin Finck 
440c2c66affSColin Finck /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
441c2c66affSColin Finck typedef enum _VIDEO_BANK_TYPE {
442c2c66affSColin Finck   VideoNotBanked = 0,
443c2c66affSColin Finck   VideoBanked1RW,
444c2c66affSColin Finck   VideoBanked1R1W,
445c2c66affSColin Finck   VideoBanked2RW,
446c2c66affSColin Finck   NumVideoBankTypes
447c2c66affSColin Finck } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
448c2c66affSColin Finck 
449c2c66affSColin Finck typedef struct _VIDEO_BANK_SELECT {
450c2c66affSColin Finck   ULONG  Length;
451c2c66affSColin Finck   ULONG  Size;
452c2c66affSColin Finck   ULONG  BankingFlags;
453c2c66affSColin Finck   ULONG  BankingType;
454c2c66affSColin Finck   ULONG  PlanarHCBankingType;
455c2c66affSColin Finck   ULONG  BitmapWidthInBytes;
456c2c66affSColin Finck   ULONG  BitmapSize;
457c2c66affSColin Finck   ULONG  Granularity;
458c2c66affSColin Finck   ULONG  PlanarHCGranularity;
459c2c66affSColin Finck   ULONG  CodeOffset;
460c2c66affSColin Finck   ULONG  PlanarHCBankCodeOffset;
461c2c66affSColin Finck   ULONG  PlanarHCEnableCodeOffset;
462c2c66affSColin Finck   ULONG  PlanarHCDisableCodeOffset;
463c2c66affSColin Finck } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
464c2c66affSColin Finck 
465c2c66affSColin Finck typedef struct _VIDEO_LOAD_FONT_INFORMATION {
466c2c66affSColin Finck   USHORT  WidthInPixels;
467c2c66affSColin Finck   USHORT  HeightInPixels;
468c2c66affSColin Finck   ULONG  FontSize;
469c2c66affSColin Finck   UCHAR  Font[1];
470c2c66affSColin Finck } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
471c2c66affSColin Finck 
472c2c66affSColin Finck /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
473c2c66affSColin Finck #define VIDEO_DEVICE_COLOR                0x00000001
474c2c66affSColin Finck #define VIDEO_OPTIONAL_GAMMET_TABLE       0x00000002
475c2c66affSColin Finck 
476c2c66affSColin Finck typedef struct _VIDEO_COLOR_CAPABILITIES {
477c2c66affSColin Finck   ULONG  Length;
478c2c66affSColin Finck   ULONG  AttributeFlags;
479c2c66affSColin Finck   LONG  RedPhosphoreDecay;
480c2c66affSColin Finck   LONG  GreenPhosphoreDecay;
481c2c66affSColin Finck   LONG  BluePhosphoreDecay;
482c2c66affSColin Finck   LONG  WhiteChromaticity_x;
483c2c66affSColin Finck   LONG  WhiteChromaticity_y;
484c2c66affSColin Finck   LONG  WhiteChromaticity_Y;
485c2c66affSColin Finck   LONG  RedChromaticity_x;
486c2c66affSColin Finck   LONG  RedChromaticity_y;
487c2c66affSColin Finck   LONG  GreenChromaticity_x;
488c2c66affSColin Finck   LONG  GreenChromaticity_y;
489c2c66affSColin Finck   LONG  BlueChromaticity_x;
490c2c66affSColin Finck   LONG  BlueChromaticity_y;
491c2c66affSColin Finck   LONG  WhiteGamma;
492c2c66affSColin Finck   LONG  RedGamma;
493c2c66affSColin Finck   LONG  GreenGamma;
494c2c66affSColin Finck   LONG  BlueGamma;
495c2c66affSColin Finck } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
496c2c66affSColin Finck 
497c2c66affSColin Finck typedef struct _VIDEO_CURSOR_ATTRIBUTES {
498c2c66affSColin Finck   USHORT  Width;
499c2c66affSColin Finck   USHORT  Height;
500c2c66affSColin Finck   SHORT  Column;
501c2c66affSColin Finck   SHORT  Row;
502c2c66affSColin Finck   UCHAR  Rate;
503c2c66affSColin Finck   UCHAR  Enable;
504c2c66affSColin Finck } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
505c2c66affSColin Finck 
506c2c66affSColin Finck typedef struct _VIDEO_CURSOR_POSITION {
507c2c66affSColin Finck   SHORT  Column;
508c2c66affSColin Finck   SHORT  Row;
509c2c66affSColin Finck } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
510c2c66affSColin Finck 
511c2c66affSColin Finck typedef struct _VIDEO_POINTER_ATTRIBUTES {
512c2c66affSColin Finck   ULONG  Flags;
513c2c66affSColin Finck   ULONG  Width;
514c2c66affSColin Finck   ULONG  Height;
515c2c66affSColin Finck   ULONG  WidthInBytes;
516c2c66affSColin Finck   ULONG  Enable;
517c2c66affSColin Finck   SHORT  Column;
518c2c66affSColin Finck   SHORT  Row;
519c2c66affSColin Finck   UCHAR  Pixels[1];
520c2c66affSColin Finck } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
521c2c66affSColin Finck 
522c2c66affSColin Finck /* VIDEO_POINTER_CAPABILITIES.Flags */
523c2c66affSColin Finck #define VIDEO_MODE_ASYNC_POINTER          0x01
524c2c66affSColin Finck #define VIDEO_MODE_MONO_POINTER           0x02
525c2c66affSColin Finck #define VIDEO_MODE_COLOR_POINTER          0x04
526c2c66affSColin Finck #define VIDEO_MODE_ANIMATE_START          0x08
527c2c66affSColin Finck #define VIDEO_MODE_ANIMATE_UPDATE         0x10
528c2c66affSColin Finck 
529c2c66affSColin Finck typedef struct _VIDEO_POINTER_CAPABILITIES {
530c2c66affSColin Finck   ULONG  Flags;
531c2c66affSColin Finck   ULONG  MaxWidth;
532c2c66affSColin Finck   ULONG  MaxHeight;
533c2c66affSColin Finck   ULONG  HWPtrBitmapStart;
534c2c66affSColin Finck   ULONG  HWPtrBitmapEnd;
535c2c66affSColin Finck } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
536c2c66affSColin Finck 
537c2c66affSColin Finck typedef struct _VIDEO_POINTER_POSITION {
538c2c66affSColin Finck   SHORT  Column;
539c2c66affSColin Finck   SHORT  Row;
540c2c66affSColin Finck } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
541c2c66affSColin Finck 
542c2c66affSColin Finck 
543c2c66affSColin Finck /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
544c2c66affSColin Finck #define VIDEO_STATE_NON_STANDARD_VGA      0x00000001
545c2c66affSColin Finck #define VIDEO_STATE_UNEMULATED_VGA_STATE  0x00000002
546c2c66affSColin Finck #define VIDEO_STATE_PACKED_CHAIN4_MODE    0x00000004
547c2c66affSColin Finck 
548c2c66affSColin Finck typedef struct _VIDEO_HARDWARE_STATE_HEADER {
549c2c66affSColin Finck   ULONG  Length;
550c2c66affSColin Finck   UCHAR  PortValue[0x30];
551c2c66affSColin Finck   ULONG  AttribIndexDataState;
552c2c66affSColin Finck   ULONG  BasicSequencerOffset;
553c2c66affSColin Finck   ULONG  BasicCrtContOffset;
554c2c66affSColin Finck   ULONG  BasicGraphContOffset;
555c2c66affSColin Finck   ULONG  BasicAttribContOffset;
556c2c66affSColin Finck   ULONG  BasicDacOffset;
557c2c66affSColin Finck   ULONG  BasicLatchesOffset;
558c2c66affSColin Finck   ULONG  ExtendedSequencerOffset;
559c2c66affSColin Finck   ULONG  ExtendedCrtContOffset;
560c2c66affSColin Finck   ULONG  ExtendedGraphContOffset;
561c2c66affSColin Finck   ULONG  ExtendedAttribContOffset;
562c2c66affSColin Finck   ULONG  ExtendedDacOffset;
563c2c66affSColin Finck   ULONG  ExtendedValidatorStateOffset;
564c2c66affSColin Finck   ULONG  ExtendedMiscDataOffset;
565c2c66affSColin Finck   ULONG  PlaneLength;
566c2c66affSColin Finck   ULONG  Plane1Offset;
567c2c66affSColin Finck   ULONG  Plane2Offset;
568c2c66affSColin Finck   ULONG  Plane3Offset;
569c2c66affSColin Finck   ULONG  Plane4Offset;
570c2c66affSColin Finck   ULONG  VGAStateFlags;
571c2c66affSColin Finck   ULONG  DIBOffset;
572c2c66affSColin Finck   ULONG  DIBBitsPerPixel;
573c2c66affSColin Finck   ULONG  DIBXResolution;
574c2c66affSColin Finck   ULONG  DIBYResolution;
575c2c66affSColin Finck   ULONG  DIBXlatOffset;
576c2c66affSColin Finck   ULONG  DIBXlatLength;
577c2c66affSColin Finck   ULONG  VesaInfoOffset;
578c2c66affSColin Finck   PVOID  FrameBufferData;
579c2c66affSColin Finck } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
580c2c66affSColin Finck 
581c2c66affSColin Finck typedef struct _VIDEO_CLUTDATA {
582c2c66affSColin Finck   UCHAR  Red;
583c2c66affSColin Finck   UCHAR  Green;
584c2c66affSColin Finck   UCHAR  Blue;
585c2c66affSColin Finck   UCHAR  Unused;
586c2c66affSColin Finck } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
587c2c66affSColin Finck 
588c2c66affSColin Finck typedef struct {
589c2c66affSColin Finck 	USHORT  NumEntries;
590c2c66affSColin Finck 	USHORT  FirstEntry;
591c2c66affSColin Finck 	union {
592c2c66affSColin Finck     VIDEO_CLUTDATA  RgbArray;
593c2c66affSColin Finck     ULONG  RgbLong;
594c2c66affSColin Finck 	} LookupTable[1];
595c2c66affSColin Finck } VIDEO_CLUT, *PVIDEO_CLUT;
596c2c66affSColin Finck 
597c2c66affSColin Finck typedef struct _VIDEO_PALETTE_DATA {
598c2c66affSColin Finck   USHORT  NumEntries;
599c2c66affSColin Finck   USHORT  FirstEntry;
600c2c66affSColin Finck   USHORT  Colors[1];
601c2c66affSColin Finck } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
602c2c66affSColin Finck 
603c2c66affSColin Finck typedef struct _VIDEO_HARDWARE_STATE {
604c2c66affSColin Finck 	PVIDEO_HARDWARE_STATE_HEADER  StateHeader;
605c2c66affSColin Finck 	ULONG  StateLength;
606c2c66affSColin Finck } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
607c2c66affSColin Finck 
608c2c66affSColin Finck #define VIDEO_CHILD_ACTIVE                0x00000001
609c2c66affSColin Finck #define VIDEO_CHILD_DETACHED              0x00000002
610c2c66affSColin Finck #define VIDEO_CHILD_NOPRUNE_FREQ          0x80000000
611c2c66affSColin Finck #define VIDEO_CHILD_NOPRUNE_RESOLUTION    0x40000000
612c2c66affSColin Finck 
613c2c66affSColin Finck #define VIDEO_DUALVIEW_REMOVABLE          0x00000001
614c2c66affSColin Finck #define VIDEO_DUALVIEW_PRIMARY            0x80000000
615c2c66affSColin Finck #define VIDEO_DUALVIEW_SECONDARY          0x40000000
616c2c66affSColin Finck 
617c2c66affSColin Finck #ifndef _WINDDI_
618c2c66affSColin Finck typedef struct _ENG_EVENT *PEVENT;
619c2c66affSColin Finck #endif
620c2c66affSColin Finck 
621c2c66affSColin Finck typedef struct _ENG_EVENT
622c2c66affSColin Finck {
623c2c66affSColin Finck     PVOID pKEvent;
624c2c66affSColin Finck     ULONG fFlags;
625c2c66affSColin Finck } ENG_EVENT, *PENG_EVENT;
626c2c66affSColin Finck 
627c2c66affSColin Finck typedef struct _DISPLAY_BRIGHTNESS {
628c2c66affSColin Finck   UCHAR ucDisplayPolicy;
629c2c66affSColin Finck   UCHAR ucACBrightness;
630c2c66affSColin Finck   UCHAR ucDCBrightness;
631c2c66affSColin Finck } DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;
632c2c66affSColin Finck 
633c2c66affSColin Finck #define DISPLAYPOLICY_AC                0x00000001
634c2c66affSColin Finck #define DISPLAYPOLICY_DC                0x00000002
635c2c66affSColin Finck #define DISPLAYPOLICY_BOTH              0x00000003
636c2c66affSColin Finck 
637c2c66affSColin Finck 
638c2c66affSColin Finck #ifdef __cplusplus
639c2c66affSColin Finck }
640c2c66affSColin Finck #endif
641c2c66affSColin Finck 
642*b5f9e1c2SHermès Bélusca-Maïto #endif /* !GUID_DEFS_ONLY */
643*b5f9e1c2SHermès Bélusca-Maïto 
644*b5f9e1c2SHermès Bélusca-Maïto #endif /* _NTDDVDEO_ */
645