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 <chorns@users.sourceforge.net>
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
27extern "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
35DEFINE_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
194typedef struct _VIDEO_MEMORY {
195  PVOID  RequestedVirtualAddress;
196} VIDEO_MEMORY, *PVIDEO_MEMORY;
197
198typedef 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
209typedef 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
224typedef 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
247typedef struct _VIDEO_NUM_MODES {
248  ULONG  NumModes;
249  ULONG  ModeInformationLength;
250} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
251
252typedef 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
263typedef struct _VIDEO_POWER_MANAGEMENT {
264  ULONG  Length;
265  ULONG  DPMSVersion;
266  ULONG  PowerState;
267} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
268
269typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
270  ULONG  InIoSpace;
271  ULONG  MappedInIoSpace;
272  PVOID  VirtualAddress;
273} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
274
275typedef struct _VIDEO_SHARE_MEMORY {
276  HANDLE  ProcessHandle;
277  ULONG  ViewOffset;
278  ULONG  ViewSize;
279  PVOID  RequestedVirtualAddress;
280} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
281
282typedef 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 */
292typedef enum _VIDEO_BANK_TYPE {
293  VideoNotBanked = 0,
294  VideoBanked1RW,
295  VideoBanked1R1W,
296  VideoBanked2RW,
297  NumVideoBankTypes
298} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
299
300typedef 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
316typedef 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
327typedef 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
348typedef 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
357typedef struct _VIDEO_CURSOR_POSITION {
358  SHORT  Column;
359  SHORT  Row;
360} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
361
362typedef 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
380typedef 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
388typedef 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
399typedef 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
432typedef struct _VIDEO_CLUTDATA {
433  UCHAR  Red;
434  UCHAR  Green;
435  UCHAR  Blue;
436  UCHAR  Unused;
437} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
438
439typedef 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
448typedef struct _VIDEO_PALETTE_DATA {
449  USHORT  NumEntries;
450  USHORT  FirstEntry;
451  USHORT  Colors[1];
452} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
453
454typedef 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_
469typedef struct _ENG_EVENT *PEVENT;
470#endif
471
472typedef struct _ENG_EVENT {
473    PVOID pKEvent;
474    ULONG fFlags;
475} ENG_EVENT, *PENG_EVENT;
476
477typedef 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