1 /*
2  * ntddvdeo.h
3  *
4  * Definitions for video devices
5  *
6  * This file is part of the w32api package.
7  *
8  * Contributors:
9  *   Created by Casper S. Hornstrup <[email protected]>
10  *
11  * THIS SOFTWARE IS NOT COPYRIGHTED
12  *
13  * This source code is offered for use in the public domain. You may
14  * use, modify or distribute it freely.
15  *
16  * This code is distributed in the hope that it will be useful but
17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18  * DISCLAIMED. This includes but is not limited to warranties of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  */
22 
23 #ifndef _NTDDVDEO_
24 #define _NTDDVDEO_
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #define VIDEO_DEVICE_NAME                 "DISPLAY%d"
31 #define WVIDEO_DEVICE_NAME                L"DISPLAY%d"
32 
33 #define DD_FULLSCREEN_VIDEO_DEVICE_NAME   L"\\Device\\FSVideo"
34 
35 DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
36   0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
37 
38 #define IOCTL_VIDEO_ENABLE_VDM \
39   CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
40 
41 #define IOCTL_VIDEO_DISABLE_VDM \
42   CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
43 
44 #define IOCTL_VIDEO_REGISTER_VDM \
45   CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
46 
47 #define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE \
48   CTL_CODE(FILE_DEVICE_VIDEO, 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
49 
50 #define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE \
51   CTL_CODE(FILE_DEVICE_VIDEO, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
52 
53 #define IOCTL_VIDEO_MONITOR_DEVICE \
54   CTL_CODE(FILE_DEVICE_VIDEO, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
55 
56 #define IOCTL_VIDEO_ENUM_MONITOR_PDO \
57   CTL_CODE(FILE_DEVICE_VIDEO, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
58 
59 #define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS \
60   CTL_CODE(FILE_DEVICE_VIDEO, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
61 
62 #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
63   CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
64 
65 #define IOCTL_VIDEO_IS_VGA_DEVICE \
66   CTL_CODE(FILE_DEVICE_VIDEO, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
67 
68 #define IOCTL_VIDEO_USE_DEVICE_IN_SESSION \
69   CTL_CODE(FILE_DEVICE_VIDEO, 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
70 
71 #define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY \
72   CTL_CODE(FILE_DEVICE_VIDEO, 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
73 
74 #define IOCTL_VIDEO_DISABLE_CURSOR \
75   CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
76 
77 #define IOCTL_VIDEO_DISABLE_POINTER \
78   CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
79 
80 #define IOCTL_VIDEO_ENABLE_CURSOR \
81   CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
82 
83 #define IOCTL_VIDEO_ENABLE_POINTER \
84   CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
85 
86 #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
87   CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
88 
89 #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
90   CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
91 
92 #define IOCTL_VIDEO_GET_CHILD_STATE \
93   CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
94 
95 #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
96   CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
97 
98 #define IOCTL_VIDEO_LOAD_AND_SET_FONT \
99   CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
100 
101 #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
102   CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
103 
104 #define IOCTL_VIDEO_QUERY_AVAIL_MODES \
105   CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
106 
107 #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
108   CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
109 
110 #define IOCTL_VIDEO_QUERY_CURRENT_MODE \
111   CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
112 
113 #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
114   CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
115 
116 #define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
117   CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
118 
119 #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
120   CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
121 
122 #define IOCTL_VIDEO_QUERY_POINTER_ATTR \
123   CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
124 
125 #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
126   CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
127 
128 #define IOCTL_VIDEO_QUERY_POINTER_POSITION \
129   CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
130 
131 #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
132   CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
133 
134 #define IOCTL_VIDEO_RESET_DEVICE \
135   CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
136 
137 #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
138   CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
139 
140 #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
141   CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
142 
143 #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
144   CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
145 
146 #define IOCTL_VIDEO_SET_COLOR_REGISTERS \
147   CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
148 
149 #define IOCTL_VIDEO_SET_CURRENT_MODE \
150   CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
151 
152 #define IOCTL_VIDEO_SET_CURSOR_ATTR \
153   CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
154 
155 #define IOCTL_VIDEO_SET_CURSOR_POSITION \
156   CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
157 
158 #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
159   CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
160 
161 #define IOCTL_VIDEO_SET_POINTER_ATTR \
162   CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
163 
164 #define IOCTL_VIDEO_SET_POINTER_POSITION \
165   CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
166 
167 #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
168   CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
169 
170 #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
171   CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
172 
173 #define IOCTL_VIDEO_SWITCH_DUALVIEW \
174   CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
175 
176 #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
177   CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
178 
179 #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
180   CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
181 
182 #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
183   CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
184 
185 #define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
186     CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)
187 
188 #define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
189     CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)
190 
191 #define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
192     CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)
193 
194 typedef struct _VIDEO_MEMORY {
195   PVOID  RequestedVirtualAddress;
196 } VIDEO_MEMORY, *PVIDEO_MEMORY;
197 
198 typedef struct _VIDEO_MEMORY_INFORMATION {
199   PVOID  VideoRamBase;
200   ULONG  VideoRamLength;
201   PVOID  FrameBufferBase;
202   ULONG  FrameBufferLength;
203 } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
204 
205 /* VIDEO_MODE.RequestedMode */
206 #define VIDEO_MODE_MAP_MEM_LINEAR         0x40000000
207 #define VIDEO_MODE_NO_ZERO_MEMORY         0x80000000
208 
209 typedef struct _VIDEO_MODE {
210   ULONG  RequestedMode;
211 } VIDEO_MODE, *PVIDEO_MODE;
212 
213 /* VIDEO_MODE_INFORMATION.AttributeFlags */
214 #define VIDEO_MODE_COLOR                  0x0001
215 #define VIDEO_MODE_GRAPHICS               0x0002
216 #define VIDEO_MODE_PALETTE_DRIVEN         0x0004
217 #define VIDEO_MODE_MANAGED_PALETTE        0x0008
218 #define VIDEO_MODE_INTERLACED             0x0010
219 #define VIDEO_MODE_NO_OFF_SCREEN          0x0020
220 #define VIDEO_MODE_NO_64_BIT_ACCESS       0x0040
221 #define VIDEO_MODE_BANKED                 0x0080
222 #define VIDEO_MODE_LINEAR                 0x0100
223 
224 typedef struct _VIDEO_MODE_INFORMATION {
225   ULONG  Length;
226   ULONG  ModeIndex;
227   ULONG  VisScreenWidth;
228   ULONG  VisScreenHeight;
229   ULONG  ScreenStride;
230   ULONG  NumberOfPlanes;
231   ULONG  BitsPerPlane;
232   ULONG  Frequency;
233   ULONG  XMillimeter;
234   ULONG  YMillimeter;
235   ULONG  NumberRedBits;
236   ULONG  NumberGreenBits;
237   ULONG  NumberBlueBits;
238   ULONG  RedMask;
239   ULONG  GreenMask;
240   ULONG  BlueMask;
241   ULONG  AttributeFlags;
242   ULONG  VideoMemoryBitmapWidth;
243   ULONG  VideoMemoryBitmapHeight;
244   ULONG  DriverSpecificAttributeFlags;
245 } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
246 
247 typedef struct _VIDEO_NUM_MODES {
248   ULONG  NumModes;
249   ULONG  ModeInformationLength;
250 } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
251 
252 typedef enum _VIDEO_POWER_STATE {
253   VideoPowerUnspecified = 0,
254   VideoPowerOn = 1,
255   VideoPowerStandBy,
256   VideoPowerSuspend,
257   VideoPowerOff,
258   VideoPowerHibernate,
259   VideoPowerShutdown,
260   VideoPowerMaximum
261 } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
262 
263 typedef struct _VIDEO_POWER_MANAGEMENT {
264   ULONG  Length;
265   ULONG  DPMSVersion;
266   ULONG  PowerState;
267 } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
268 
269 typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
270   ULONG  InIoSpace;
271   ULONG  MappedInIoSpace;
272   PVOID  VirtualAddress;
273 } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
274 
275 typedef struct _VIDEO_SHARE_MEMORY {
276   HANDLE  ProcessHandle;
277   ULONG  ViewOffset;
278   ULONG  ViewSize;
279   PVOID  RequestedVirtualAddress;
280 } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
281 
282 typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
283   ULONG  SharedViewOffset;
284   ULONG  SharedViewSize;
285   PVOID  VirtualAddress;
286 } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
287 
288 /* VIDEO_BANK_SELECT.BankingFlags constants */
289 #define PLANAR_HC                         0x00000001
290 
291 /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
292 typedef enum _VIDEO_BANK_TYPE {
293   VideoNotBanked = 0,
294   VideoBanked1RW,
295   VideoBanked1R1W,
296   VideoBanked2RW,
297   NumVideoBankTypes
298 } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
299 
300 typedef struct _VIDEO_BANK_SELECT {
301   ULONG  Length;
302   ULONG  Size;
303   ULONG  BankingFlags;
304   ULONG  BankingType;
305   ULONG  PlanarHCBankingType;
306   ULONG  BitmapWidthInBytes;
307   ULONG  BitmapSize;
308   ULONG  Granularity;
309   ULONG  PlanarHCGranularity;
310   ULONG  CodeOffset;
311   ULONG  PlanarHCBankCodeOffset;
312   ULONG  PlanarHCEnableCodeOffset;
313   ULONG  PlanarHCDisableCodeOffset;
314 } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
315 
316 typedef struct _VIDEO_LOAD_FONT_INFORMATION {
317   USHORT  WidthInPixels;
318   USHORT  HeightInPixels;
319   ULONG  FontSize;
320   UCHAR  Font[1];
321 } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
322 
323 /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
324 #define VIDEO_DEVICE_COLOR                0x00000001
325 #define VIDEO_OPTIONAL_GAMMET_TABLE       0x00000002
326 
327 typedef struct _VIDEO_COLOR_CAPABILITIES {
328   ULONG  Length;
329   ULONG  AttributeFlags;
330   LONG  RedPhosphoreDecay;
331   LONG  GreenPhosphoreDecay;
332   LONG  BluePhosphoreDecay;
333   LONG  WhiteChromaticity_x;
334   LONG  WhiteChromaticity_y;
335   LONG  WhiteChromaticity_Y;
336   LONG  RedChromaticity_x;
337   LONG  RedChromaticity_y;
338   LONG  GreenChromaticity_x;
339   LONG  GreenChromaticity_y;
340   LONG  BlueChromaticity_x;
341   LONG  BlueChromaticity_y;
342   LONG  WhiteGamma;
343   LONG  RedGamma;
344   LONG  GreenGamma;
345   LONG  BlueGamma;
346 } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
347 
348 typedef struct _VIDEO_CURSOR_ATTRIBUTES {
349   USHORT  Width;
350   USHORT  Height;
351   SHORT  Column;
352   SHORT  Row;
353   UCHAR  Rate;
354   UCHAR  Enable;
355 } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
356 
357 typedef struct _VIDEO_CURSOR_POSITION {
358   SHORT  Column;
359   SHORT  Row;
360 } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
361 
362 typedef struct _VIDEO_POINTER_ATTRIBUTES {
363   ULONG  Flags;
364   ULONG  Width;
365   ULONG  Height;
366   ULONG  WidthInBytes;
367   ULONG  Enable;
368   SHORT  Column;
369   SHORT  Row;
370   UCHAR  Pixels[1];
371 } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
372 
373 /* VIDEO_POINTER_CAPABILITIES.Flags */
374 #define VIDEO_MODE_ASYNC_POINTER          0x01
375 #define VIDEO_MODE_MONO_POINTER           0x02
376 #define VIDEO_MODE_COLOR_POINTER          0x04
377 #define VIDEO_MODE_ANIMATE_START          0x08
378 #define VIDEO_MODE_ANIMATE_UPDATE         0x10
379 
380 typedef struct _VIDEO_POINTER_CAPABILITIES {
381   ULONG  Flags;
382   ULONG  MaxWidth;
383   ULONG  MaxHeight;
384   ULONG  HWPtrBitmapStart;
385   ULONG  HWPtrBitmapEnd;
386 } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
387 
388 typedef struct _VIDEO_POINTER_POSITION {
389   SHORT  Column;
390   SHORT  Row;
391 } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
392 
393 
394 /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
395 #define VIDEO_STATE_NON_STANDARD_VGA      0x00000001
396 #define VIDEO_STATE_UNEMULATED_VGA_STATE  0x00000002
397 #define VIDEO_STATE_PACKED_CHAIN4_MODE    0x00000004
398 
399 typedef struct _VIDEO_HARDWARE_STATE_HEADER {
400   ULONG  Length;
401   UCHAR  PortValue[0x30];
402   ULONG  AttribIndexDataState;
403   ULONG  BasicSequencerOffset;
404   ULONG  BasicCrtContOffset;
405   ULONG  BasicGraphContOffset;
406   ULONG  BasicAttribContOffset;
407   ULONG  BasicDacOffset;
408   ULONG  BasicLatchesOffset;
409   ULONG  ExtendedSequencerOffset;
410   ULONG  ExtendedCrtContOffset;
411   ULONG  ExtendedGraphContOffset;
412   ULONG  ExtendedAttribContOffset;
413   ULONG  ExtendedDacOffset;
414   ULONG  ExtendedValidatorStateOffset;
415   ULONG  ExtendedMiscDataOffset;
416   ULONG  PlaneLength;
417   ULONG  Plane1Offset;
418   ULONG  Plane2Offset;
419   ULONG  Plane3Offset;
420   ULONG  Plane4Offset;
421   ULONG  VGAStateFlags;
422   ULONG  DIBOffset;
423   ULONG  DIBBitsPerPixel;
424   ULONG  DIBXResolution;
425   ULONG  DIBYResolution;
426   ULONG  DIBXlatOffset;
427   ULONG  DIBXlatLength;
428   ULONG  VesaInfoOffset;
429   PVOID  FrameBufferData;
430 } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
431 
432 typedef struct _VIDEO_CLUTDATA {
433   UCHAR  Red;
434   UCHAR  Green;
435   UCHAR  Blue;
436   UCHAR  Unused;
437 } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
438 
439 typedef struct {
440 	USHORT  NumEntries;
441 	USHORT  FirstEntry;
442 	union {
443 		VIDEO_CLUTDATA  RgbArray;
444 		ULONG  RgbLong;
445 	} LookupTable[1];
446 } VIDEO_CLUT, *PVIDEO_CLUT;
447 
448 typedef struct _VIDEO_PALETTE_DATA {
449   USHORT  NumEntries;
450   USHORT  FirstEntry;
451   USHORT  Colors[1];
452 } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
453 
454 typedef struct _VIDEO_HARDWARE_STATE {
455 	PVIDEO_HARDWARE_STATE_HEADER  StateHeader;
456 	ULONG  StateLength;
457 } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
458 
459 #define VIDEO_CHILD_ACTIVE                0x00000001
460 #define VIDEO_CHILD_DETACHED              0x00000002
461 #define VIDEO_CHILD_NOPRUNE_FREQ          0x80000000
462 #define VIDEO_CHILD_NOPRUNE_RESOLUTION    0x40000000
463 
464 #define VIDEO_DUALVIEW_REMOVABLE          0x00000001
465 #define VIDEO_DUALVIEW_PRIMARY            0x80000000
466 #define VIDEO_DUALVIEW_SECONDARY          0x40000000
467 
468 #ifndef _WINDDI_
469 typedef struct _ENG_EVENT *PEVENT;
470 #endif
471 
472 typedef struct _ENG_EVENT {
473     PVOID pKEvent;
474     ULONG fFlags;
475 } ENG_EVENT, *PENG_EVENT;
476 
477 typedef struct _DISPLAY_BRIGHTNESS {
478   UCHAR ucDisplayPolicy;
479   UCHAR ucACBrightness;
480   UCHAR ucDCBrightness;
481 } DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;
482 
483 #define DISPLAYPOLICY_AC                0x00000001
484 #define DISPLAYPOLICY_DC                0x00000002
485 #define DISPLAYPOLICY_BOTH              0x00000003
486 
487 #ifdef __cplusplus
488 }
489 #endif
490 
491 #endif /* _NTDDVDEO_ */
492