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