8fcd361f502fd7e49457381d8d633c824a90650a
[reactos.git] / sdk / 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_DEVICE_SESSION_STATUS {
269 ULONG bEnable;
270 ULONG bSuccess;
271 } VIDEO_DEVICE_SESSION_STATUS, *PVIDEO_DEVICE_SESSION_STATUS;
272
273 typedef struct _VIDEO_MEMORY {
274 PVOID RequestedVirtualAddress;
275 } VIDEO_MEMORY, *PVIDEO_MEMORY;
276
277 typedef struct _VIDEO_MEMORY_INFORMATION {
278 PVOID VideoRamBase;
279 ULONG VideoRamLength;
280 PVOID FrameBufferBase;
281 ULONG FrameBufferLength;
282 } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
283
284 /* VIDEO_MODE.RequestedMode */
285 #define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
286 #define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
287
288 typedef struct _VIDEO_MODE {
289 ULONG RequestedMode;
290 } VIDEO_MODE, *PVIDEO_MODE;
291
292 /* VIDEO_MODE_INFORMATION.AttributeFlags */
293 #define VIDEO_MODE_COLOR 0x0001
294 #define VIDEO_MODE_GRAPHICS 0x0002
295 #define VIDEO_MODE_PALETTE_DRIVEN 0x0004
296 #define VIDEO_MODE_MANAGED_PALETTE 0x0008
297 #define VIDEO_MODE_INTERLACED 0x0010
298 #define VIDEO_MODE_NO_OFF_SCREEN 0x0020
299 #define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
300 #define VIDEO_MODE_BANKED 0x0080
301 #define VIDEO_MODE_LINEAR 0x0100
302
303 typedef struct _VIDEO_MODE_INFORMATION {
304 ULONG Length;
305 ULONG ModeIndex;
306 ULONG VisScreenWidth;
307 ULONG VisScreenHeight;
308 ULONG ScreenStride;
309 ULONG NumberOfPlanes;
310 ULONG BitsPerPlane;
311 ULONG Frequency;
312 ULONG XMillimeter;
313 ULONG YMillimeter;
314 ULONG NumberRedBits;
315 ULONG NumberGreenBits;
316 ULONG NumberBlueBits;
317 ULONG RedMask;
318 ULONG GreenMask;
319 ULONG BlueMask;
320 ULONG AttributeFlags;
321 ULONG VideoMemoryBitmapWidth;
322 ULONG VideoMemoryBitmapHeight;
323 ULONG DriverSpecificAttributeFlags;
324 } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
325
326 typedef struct _VIDEO_NUM_MODES {
327 ULONG NumModes;
328 ULONG ModeInformationLength;
329 } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
330
331 typedef enum _VIDEO_POWER_STATE {
332 VideoPowerUnspecified = 0,
333 VideoPowerOn = 1,
334 VideoPowerStandBy,
335 VideoPowerSuspend,
336 VideoPowerOff,
337 VideoPowerHibernate,
338 VideoPowerShutdown,
339 VideoPowerMaximum
340 } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
341
342 typedef struct _VIDEO_POWER_MANAGEMENT {
343 ULONG Length;
344 ULONG DPMSVersion;
345 ULONG PowerState;
346 } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
347
348 typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
349 ULONG InIoSpace;
350 ULONG MappedInIoSpace;
351 PVOID VirtualAddress;
352 } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
353
354 typedef struct _VIDEO_SHARE_MEMORY {
355 HANDLE ProcessHandle;
356 ULONG ViewOffset;
357 ULONG ViewSize;
358 PVOID RequestedVirtualAddress;
359 } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
360
361 typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
362 ULONG SharedViewOffset;
363 ULONG SharedViewSize;
364 PVOID VirtualAddress;
365 } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
366
367 /* VIDEO_BANK_SELECT.BankingFlags constants */
368 #define PLANAR_HC 0x00000001
369
370 /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
371 typedef enum _VIDEO_BANK_TYPE {
372 VideoNotBanked = 0,
373 VideoBanked1RW,
374 VideoBanked1R1W,
375 VideoBanked2RW,
376 NumVideoBankTypes
377 } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
378
379 typedef struct _VIDEO_BANK_SELECT {
380 ULONG Length;
381 ULONG Size;
382 ULONG BankingFlags;
383 ULONG BankingType;
384 ULONG PlanarHCBankingType;
385 ULONG BitmapWidthInBytes;
386 ULONG BitmapSize;
387 ULONG Granularity;
388 ULONG PlanarHCGranularity;
389 ULONG CodeOffset;
390 ULONG PlanarHCBankCodeOffset;
391 ULONG PlanarHCEnableCodeOffset;
392 ULONG PlanarHCDisableCodeOffset;
393 } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
394
395 typedef struct _VIDEO_LOAD_FONT_INFORMATION {
396 USHORT WidthInPixels;
397 USHORT HeightInPixels;
398 ULONG FontSize;
399 UCHAR Font[1];
400 } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
401
402 /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
403 #define VIDEO_DEVICE_COLOR 0x00000001
404 #define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
405
406 typedef struct _VIDEO_COLOR_CAPABILITIES {
407 ULONG Length;
408 ULONG AttributeFlags;
409 LONG RedPhosphoreDecay;
410 LONG GreenPhosphoreDecay;
411 LONG BluePhosphoreDecay;
412 LONG WhiteChromaticity_x;
413 LONG WhiteChromaticity_y;
414 LONG WhiteChromaticity_Y;
415 LONG RedChromaticity_x;
416 LONG RedChromaticity_y;
417 LONG GreenChromaticity_x;
418 LONG GreenChromaticity_y;
419 LONG BlueChromaticity_x;
420 LONG BlueChromaticity_y;
421 LONG WhiteGamma;
422 LONG RedGamma;
423 LONG GreenGamma;
424 LONG BlueGamma;
425 } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
426
427 typedef struct _VIDEO_CURSOR_ATTRIBUTES {
428 USHORT Width;
429 USHORT Height;
430 SHORT Column;
431 SHORT Row;
432 UCHAR Rate;
433 UCHAR Enable;
434 } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
435
436 typedef struct _VIDEO_CURSOR_POSITION {
437 SHORT Column;
438 SHORT Row;
439 } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
440
441 typedef struct _VIDEO_POINTER_ATTRIBUTES {
442 ULONG Flags;
443 ULONG Width;
444 ULONG Height;
445 ULONG WidthInBytes;
446 ULONG Enable;
447 SHORT Column;
448 SHORT Row;
449 UCHAR Pixels[1];
450 } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
451
452 /* VIDEO_POINTER_CAPABILITIES.Flags */
453 #define VIDEO_MODE_ASYNC_POINTER 0x01
454 #define VIDEO_MODE_MONO_POINTER 0x02
455 #define VIDEO_MODE_COLOR_POINTER 0x04
456 #define VIDEO_MODE_ANIMATE_START 0x08
457 #define VIDEO_MODE_ANIMATE_UPDATE 0x10
458
459 typedef struct _VIDEO_POINTER_CAPABILITIES {
460 ULONG Flags;
461 ULONG MaxWidth;
462 ULONG MaxHeight;
463 ULONG HWPtrBitmapStart;
464 ULONG HWPtrBitmapEnd;
465 } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
466
467 typedef struct _VIDEO_POINTER_POSITION {
468 SHORT Column;
469 SHORT Row;
470 } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
471
472
473 /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
474 #define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
475 #define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
476 #define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
477
478 typedef struct _VIDEO_HARDWARE_STATE_HEADER {
479 ULONG Length;
480 UCHAR PortValue[0x30];
481 ULONG AttribIndexDataState;
482 ULONG BasicSequencerOffset;
483 ULONG BasicCrtContOffset;
484 ULONG BasicGraphContOffset;
485 ULONG BasicAttribContOffset;
486 ULONG BasicDacOffset;
487 ULONG BasicLatchesOffset;
488 ULONG ExtendedSequencerOffset;
489 ULONG ExtendedCrtContOffset;
490 ULONG ExtendedGraphContOffset;
491 ULONG ExtendedAttribContOffset;
492 ULONG ExtendedDacOffset;
493 ULONG ExtendedValidatorStateOffset;
494 ULONG ExtendedMiscDataOffset;
495 ULONG PlaneLength;
496 ULONG Plane1Offset;
497 ULONG Plane2Offset;
498 ULONG Plane3Offset;
499 ULONG Plane4Offset;
500 ULONG VGAStateFlags;
501 ULONG DIBOffset;
502 ULONG DIBBitsPerPixel;
503 ULONG DIBXResolution;
504 ULONG DIBYResolution;
505 ULONG DIBXlatOffset;
506 ULONG DIBXlatLength;
507 ULONG VesaInfoOffset;
508 PVOID FrameBufferData;
509 } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
510
511 typedef struct _VIDEO_CLUTDATA {
512 UCHAR Red;
513 UCHAR Green;
514 UCHAR Blue;
515 UCHAR Unused;
516 } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
517
518 typedef struct {
519 USHORT NumEntries;
520 USHORT FirstEntry;
521 union {
522 VIDEO_CLUTDATA RgbArray;
523 ULONG RgbLong;
524 } LookupTable[1];
525 } VIDEO_CLUT, *PVIDEO_CLUT;
526
527 typedef struct _VIDEO_PALETTE_DATA {
528 USHORT NumEntries;
529 USHORT FirstEntry;
530 USHORT Colors[1];
531 } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
532
533 typedef struct _VIDEO_HARDWARE_STATE {
534 PVIDEO_HARDWARE_STATE_HEADER StateHeader;
535 ULONG StateLength;
536 } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
537
538 #define VIDEO_CHILD_ACTIVE 0x00000001
539 #define VIDEO_CHILD_DETACHED 0x00000002
540 #define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
541 #define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
542
543 #define VIDEO_DUALVIEW_REMOVABLE 0x00000001
544 #define VIDEO_DUALVIEW_PRIMARY 0x80000000
545 #define VIDEO_DUALVIEW_SECONDARY 0x40000000
546
547 #ifndef _WINDDI_
548 typedef struct _ENG_EVENT *PEVENT;
549 #endif
550
551 typedef struct _ENG_EVENT
552 {
553 PVOID pKEvent;
554 ULONG fFlags;
555 } ENG_EVENT, *PENG_EVENT;
556
557 typedef struct _DISPLAY_BRIGHTNESS {
558 UCHAR ucDisplayPolicy;
559 UCHAR ucACBrightness;
560 UCHAR ucDCBrightness;
561 } DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;
562
563 #define DISPLAYPOLICY_AC 0x00000001
564 #define DISPLAYPOLICY_DC 0x00000002
565 #define DISPLAYPOLICY_BOTH 0x00000003
566
567
568 #ifdef __cplusplus
569 }
570 #endif
571
572 #endif /* GUID_DEFS_ONLY */