728f5a61d113a87bde47f249bf4da938ea692ca8
[reactos.git] / reactos / include / psdk / ntddvdeo.h
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 #pragma once
24 #define _NTDDVDEO_
25
26 DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
27 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
28
29 #ifndef GUID_DEFS_ONLY
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #define VIDEO_DEVICE_NAME "DISPLAY%d"
36 #define WVIDEO_DEVICE_NAME L"DISPLAY%d"
37
38 #define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo"
39
40
41 #define IOCTL_VIDEO_ENABLE_VDM \
42 CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
43
44 #define IOCTL_VIDEO_DISABLE_VDM \
45 CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
46
47 #define IOCTL_VIDEO_REGISTER_VDM \
48 CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
49
50 #define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE \
51 CTL_CODE(FILE_DEVICE_VIDEO, 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
52
53 #define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE \
54 CTL_CODE(FILE_DEVICE_VIDEO, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
55
56 #define IOCTL_VIDEO_MONITOR_DEVICE \
57 CTL_CODE(FILE_DEVICE_VIDEO, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
58
59 #define IOCTL_VIDEO_ENUM_MONITOR_PDO \
60 CTL_CODE(FILE_DEVICE_VIDEO, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
61
62 #define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS \
63 CTL_CODE(FILE_DEVICE_VIDEO, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
64
65 #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
66 CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
67
68 #define IOCTL_VIDEO_IS_VGA_DEVICE \
69 CTL_CODE(FILE_DEVICE_VIDEO, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
70
71 #define IOCTL_VIDEO_USE_DEVICE_IN_SESSION \
72 CTL_CODE(FILE_DEVICE_VIDEO, 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
73
74 #define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY \
75 CTL_CODE(FILE_DEVICE_VIDEO, 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
76
77 #define IOCTL_VIDEO_DISABLE_CURSOR \
78 CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
79
80 #define IOCTL_VIDEO_DISABLE_POINTER \
81 CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
82
83 #define IOCTL_VIDEO_ENABLE_CURSOR \
84 CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
85
86 #define IOCTL_VIDEO_ENABLE_POINTER \
87 CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
88
89 #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
90 CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
91
92 #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
93 CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
94
95 #define IOCTL_VIDEO_GET_CHILD_STATE \
96 CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
97
98 #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
99 CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
100
101 #define IOCTL_VIDEO_LOAD_AND_SET_FONT \
102 CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
103
104 #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
105 CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
106
107 #define IOCTL_VIDEO_QUERY_AVAIL_MODES \
108 CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
109
110 #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
111 CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
112
113 #define IOCTL_VIDEO_QUERY_CURRENT_MODE \
114 CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
115
116 #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
117 CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
118
119 #define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
120 CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
121
122 #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
123 CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
124
125 #define IOCTL_VIDEO_QUERY_POINTER_ATTR \
126 CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
127
128 #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
129 CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
130
131 #define IOCTL_VIDEO_QUERY_POINTER_POSITION \
132 CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
133
134 #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
135 CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
136
137 #define IOCTL_VIDEO_RESET_DEVICE \
138 CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
139
140 #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
141 CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
142
143 #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
144 CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
145
146 #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
147 CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
148
149 #define IOCTL_VIDEO_SET_COLOR_REGISTERS \
150 CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
151
152 #define IOCTL_VIDEO_SET_CURRENT_MODE \
153 CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
154
155 #define IOCTL_VIDEO_SET_CURSOR_ATTR \
156 CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
157
158 #define IOCTL_VIDEO_SET_CURSOR_POSITION \
159 CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
160
161 #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
162 CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
163
164 #define IOCTL_VIDEO_SET_POINTER_ATTR \
165 CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
166
167 #define IOCTL_VIDEO_SET_POINTER_POSITION \
168 CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
169
170 #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
171 CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
172
173 #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
174 CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
175
176 #define IOCTL_VIDEO_SWITCH_DUALVIEW \
177 CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
178
179 #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
180 CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
181
182 #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
183 CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
184
185 #define IOCTL_VIDEO_SET_COLOR_LUT_DATA \
186 CTL_CODE(FILE_DEVICE_VIDEO, 0x11f, METHOD_BUFFERED, FILE_ANY_ACCESS)
187
188 #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
189 CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
190
191 #define IOCTL_VIDEO_SET_BANK_POSITION \
192 CTL_CODE(FILE_DEVICE_VIDEO, 0x124, METHOD_BUFFERED, FILE_ANY_ACCESS)
193
194 #define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
195 CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)
196
197 #define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
198 CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)
199
200 #define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
201 CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)
202
203 typedef struct _VIDEO_VDM {
204 HANDLE ProcessHandle;
205 } VIDEO_VDM, *PVIDEO_VDM;
206
207 typedef struct _VIDEO_REGISTER_VDM {
208 ULONG MinimumStateSize;
209 } VIDEO_REGISTER_VDM, *PVIDEO_REGISTER_VDM;
210
211 typedef struct tagVIDEO_MONITOR_DEVICE {
212 ULONG flag;
213 ULONG HwID;
214 BOOLEAN Internal;
215 } VIDEO_MONITOR_DEVICE, *PVIDEO_MONITOR_DEVICE;
216
217 typedef struct tagVIDEO_MONITOR_DESCRIPTOR {
218 ULONG DescriptorSize;
219 UCHAR Descriptor[1];
220 } VIDEO_MONITOR_DESCRIPTOR, *PVIDEO_MONITOR_DESCRIPTOR;
221
222 typedef enum _VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE {
223 VideoPowerNotifyCallout = 1,
224 VideoDisplaySwitchCallout,
225 VideoEnumChildPdoNotifyCallout,
226 VideoFindAdapterCallout,
227 VideoWakeupCallout,
228 VideoChangeDisplaySettingsCallout,
229 VideoPnpNotifyCallout,
230 VideoDxgkDisplaySwitchCallout,
231 VideoDxgkMonitorEventCallout,
232 VideoDxgkFindAdapterTdrCallout
233 } VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE;
234
235 #define DXGK_WIN32K_PARAM_FLAG_UPDATEREGISTRY 1
236 #define DXGK_WIN32K_PARAM_FLAG_MODESWITCH 2
237 #define DXGK_WIN32K_PARAM_FLAG_DISABLEVIEW 4
238
239 typedef struct _DXGK_WIN32K_PARAM_DATA
240 {
241 PVOID PathsArray;
242 PVOID ModesArray;
243 ULONG NumPathArrayElements;
244 ULONG NumModeArrayElements;
245 ULONG SDCFlags;
246 } DXGK_WIN32K_PARAM_DATA, *PDXGK_WIN32K_PARAM_DATA;
247
248 typedef struct _VIDEO_WIN32K_CALLBACKS_PARAMS {
249 VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE CalloutType;
250 PVOID PhysDisp;
251 ULONG_PTR Param;
252 LONG Status;
253 } VIDEO_WIN32K_CALLBACKS_PARAMS, *PVIDEO_WIN32K_CALLBACKS_PARAMS;
254
255 typedef
256 VOID
257 (*PVIDEO_WIN32K_CALLOUT)(
258 _In_ PVOID Params);
259
260 typedef struct _VIDEO_WIN32K_CALLBACKS {
261 IN PVOID PhysDisp;
262 IN PVIDEO_WIN32K_CALLOUT Callout;
263 OUT ULONG bACPI;
264 OUT HANDLE pPhysDeviceObject;
265 OUT ULONG DualviewFlags;
266 } VIDEO_WIN32K_CALLBACKS, *PVIDEO_WIN32K_CALLBACKS;
267
268 typedef struct _VIDEO_MEMORY {
269 PVOID RequestedVirtualAddress;
270 } VIDEO_MEMORY, *PVIDEO_MEMORY;
271
272 typedef struct _VIDEO_MEMORY_INFORMATION {
273 PVOID VideoRamBase;
274 ULONG VideoRamLength;
275 PVOID FrameBufferBase;
276 ULONG FrameBufferLength;
277 } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
278
279 /* VIDEO_MODE.RequestedMode */
280 #define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
281 #define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
282
283 typedef struct _VIDEO_MODE {
284 ULONG RequestedMode;
285 } VIDEO_MODE, *PVIDEO_MODE;
286
287 /* VIDEO_MODE_INFORMATION.AttributeFlags */
288 #define VIDEO_MODE_COLOR 0x0001
289 #define VIDEO_MODE_GRAPHICS 0x0002
290 #define VIDEO_MODE_PALETTE_DRIVEN 0x0004
291 #define VIDEO_MODE_MANAGED_PALETTE 0x0008
292 #define VIDEO_MODE_INTERLACED 0x0010
293 #define VIDEO_MODE_NO_OFF_SCREEN 0x0020
294 #define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
295 #define VIDEO_MODE_BANKED 0x0080
296 #define VIDEO_MODE_LINEAR 0x0100
297
298 typedef struct _VIDEO_MODE_INFORMATION {
299 ULONG Length;
300 ULONG ModeIndex;
301 ULONG VisScreenWidth;
302 ULONG VisScreenHeight;
303 ULONG ScreenStride;
304 ULONG NumberOfPlanes;
305 ULONG BitsPerPlane;
306 ULONG Frequency;
307 ULONG XMillimeter;
308 ULONG YMillimeter;
309 ULONG NumberRedBits;
310 ULONG NumberGreenBits;
311 ULONG NumberBlueBits;
312 ULONG RedMask;
313 ULONG GreenMask;
314 ULONG BlueMask;
315 ULONG AttributeFlags;
316 ULONG VideoMemoryBitmapWidth;
317 ULONG VideoMemoryBitmapHeight;
318 ULONG DriverSpecificAttributeFlags;
319 } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
320
321 typedef struct _VIDEO_NUM_MODES {
322 ULONG NumModes;
323 ULONG ModeInformationLength;
324 } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
325
326 typedef enum _VIDEO_POWER_STATE {
327 VideoPowerUnspecified = 0,
328 VideoPowerOn = 1,
329 VideoPowerStandBy,
330 VideoPowerSuspend,
331 VideoPowerOff,
332 VideoPowerHibernate,
333 VideoPowerShutdown,
334 VideoPowerMaximum
335 } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
336
337 typedef struct _VIDEO_POWER_MANAGEMENT {
338 ULONG Length;
339 ULONG DPMSVersion;
340 ULONG PowerState;
341 } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
342
343 typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
344 ULONG InIoSpace;
345 ULONG MappedInIoSpace;
346 PVOID VirtualAddress;
347 } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
348
349 typedef struct _VIDEO_SHARE_MEMORY {
350 HANDLE ProcessHandle;
351 ULONG ViewOffset;
352 ULONG ViewSize;
353 PVOID RequestedVirtualAddress;
354 } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
355
356 typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
357 ULONG SharedViewOffset;
358 ULONG SharedViewSize;
359 PVOID VirtualAddress;
360 } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
361
362 /* VIDEO_BANK_SELECT.BankingFlags constants */
363 #define PLANAR_HC 0x00000001
364
365 /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
366 typedef enum _VIDEO_BANK_TYPE {
367 VideoNotBanked = 0,
368 VideoBanked1RW,
369 VideoBanked1R1W,
370 VideoBanked2RW,
371 NumVideoBankTypes
372 } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
373
374 typedef struct _VIDEO_BANK_SELECT {
375 ULONG Length;
376 ULONG Size;
377 ULONG BankingFlags;
378 ULONG BankingType;
379 ULONG PlanarHCBankingType;
380 ULONG BitmapWidthInBytes;
381 ULONG BitmapSize;
382 ULONG Granularity;
383 ULONG PlanarHCGranularity;
384 ULONG CodeOffset;
385 ULONG PlanarHCBankCodeOffset;
386 ULONG PlanarHCEnableCodeOffset;
387 ULONG PlanarHCDisableCodeOffset;
388 } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
389
390 typedef struct _VIDEO_LOAD_FONT_INFORMATION {
391 USHORT WidthInPixels;
392 USHORT HeightInPixels;
393 ULONG FontSize;
394 UCHAR Font[1];
395 } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
396
397 /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
398 #define VIDEO_DEVICE_COLOR 0x00000001
399 #define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
400
401 typedef struct _VIDEO_COLOR_CAPABILITIES {
402 ULONG Length;
403 ULONG AttributeFlags;
404 LONG RedPhosphoreDecay;
405 LONG GreenPhosphoreDecay;
406 LONG BluePhosphoreDecay;
407 LONG WhiteChromaticity_x;
408 LONG WhiteChromaticity_y;
409 LONG WhiteChromaticity_Y;
410 LONG RedChromaticity_x;
411 LONG RedChromaticity_y;
412 LONG GreenChromaticity_x;
413 LONG GreenChromaticity_y;
414 LONG BlueChromaticity_x;
415 LONG BlueChromaticity_y;
416 LONG WhiteGamma;
417 LONG RedGamma;
418 LONG GreenGamma;
419 LONG BlueGamma;
420 } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
421
422 typedef struct _VIDEO_CURSOR_ATTRIBUTES {
423 USHORT Width;
424 USHORT Height;
425 SHORT Column;
426 SHORT Row;
427 UCHAR Rate;
428 UCHAR Enable;
429 } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
430
431 typedef struct _VIDEO_CURSOR_POSITION {
432 SHORT Column;
433 SHORT Row;
434 } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
435
436 typedef struct _VIDEO_POINTER_ATTRIBUTES {
437 ULONG Flags;
438 ULONG Width;
439 ULONG Height;
440 ULONG WidthInBytes;
441 ULONG Enable;
442 SHORT Column;
443 SHORT Row;
444 UCHAR Pixels[1];
445 } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
446
447 /* VIDEO_POINTER_CAPABILITIES.Flags */
448 #define VIDEO_MODE_ASYNC_POINTER 0x01
449 #define VIDEO_MODE_MONO_POINTER 0x02
450 #define VIDEO_MODE_COLOR_POINTER 0x04
451 #define VIDEO_MODE_ANIMATE_START 0x08
452 #define VIDEO_MODE_ANIMATE_UPDATE 0x10
453
454 typedef struct _VIDEO_POINTER_CAPABILITIES {
455 ULONG Flags;
456 ULONG MaxWidth;
457 ULONG MaxHeight;
458 ULONG HWPtrBitmapStart;
459 ULONG HWPtrBitmapEnd;
460 } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
461
462 typedef struct _VIDEO_POINTER_POSITION {
463 SHORT Column;
464 SHORT Row;
465 } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
466
467
468 /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
469 #define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
470 #define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
471 #define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
472
473 typedef struct _VIDEO_HARDWARE_STATE_HEADER {
474 ULONG Length;
475 UCHAR PortValue[0x30];
476 ULONG AttribIndexDataState;
477 ULONG BasicSequencerOffset;
478 ULONG BasicCrtContOffset;
479 ULONG BasicGraphContOffset;
480 ULONG BasicAttribContOffset;
481 ULONG BasicDacOffset;
482 ULONG BasicLatchesOffset;
483 ULONG ExtendedSequencerOffset;
484 ULONG ExtendedCrtContOffset;
485 ULONG ExtendedGraphContOffset;
486 ULONG ExtendedAttribContOffset;
487 ULONG ExtendedDacOffset;
488 ULONG ExtendedValidatorStateOffset;
489 ULONG ExtendedMiscDataOffset;
490 ULONG PlaneLength;
491 ULONG Plane1Offset;
492 ULONG Plane2Offset;
493 ULONG Plane3Offset;
494 ULONG Plane4Offset;
495 ULONG VGAStateFlags;
496 ULONG DIBOffset;
497 ULONG DIBBitsPerPixel;
498 ULONG DIBXResolution;
499 ULONG DIBYResolution;
500 ULONG DIBXlatOffset;
501 ULONG DIBXlatLength;
502 ULONG VesaInfoOffset;
503 PVOID FrameBufferData;
504 } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
505
506 typedef struct _VIDEO_CLUTDATA {
507 UCHAR Red;
508 UCHAR Green;
509 UCHAR Blue;
510 UCHAR Unused;
511 } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
512
513 typedef struct {
514 USHORT NumEntries;
515 USHORT FirstEntry;
516 union {
517 VIDEO_CLUTDATA RgbArray;
518 ULONG RgbLong;
519 } LookupTable[1];
520 } VIDEO_CLUT, *PVIDEO_CLUT;
521
522 typedef struct _VIDEO_PALETTE_DATA {
523 USHORT NumEntries;
524 USHORT FirstEntry;
525 USHORT Colors[1];
526 } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
527
528 typedef struct _VIDEO_HARDWARE_STATE {
529 PVIDEO_HARDWARE_STATE_HEADER StateHeader;
530 ULONG StateLength;
531 } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
532
533 #define VIDEO_CHILD_ACTIVE 0x00000001
534 #define VIDEO_CHILD_DETACHED 0x00000002
535 #define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
536 #define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
537
538 #define VIDEO_DUALVIEW_REMOVABLE 0x00000001
539 #define VIDEO_DUALVIEW_PRIMARY 0x80000000
540 #define VIDEO_DUALVIEW_SECONDARY 0x40000000
541
542 #ifndef _WINDDI_
543 typedef struct _ENG_EVENT *PEVENT;
544 #endif
545
546 typedef struct _ENG_EVENT
547 {
548 PVOID pKEvent;
549 ULONG fFlags;
550 } ENG_EVENT, *PENG_EVENT;
551
552 typedef struct _DISPLAY_BRIGHTNESS {
553 UCHAR ucDisplayPolicy;
554 UCHAR ucACBrightness;
555 UCHAR ucDCBrightness;
556 } DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;
557
558 #define DISPLAYPOLICY_AC 0x00000001
559 #define DISPLAYPOLICY_DC 0x00000002
560 #define DISPLAYPOLICY_BOTH 0x00000003
561
562 #ifdef __cplusplus
563 }
564 #endif
565
566 #endif /* GUID_DEFS_ONLY */