4 * Definitions for video devices
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
30 #define VIDEO_DEVICE_NAME "DISPLAY%d"
31 #define WVIDEO_DEVICE_NAME L"DISPLAY%d"
33 #define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo"
35 DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER
, \
36 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
39 #define IOCTL_VIDEO_DISABLE_CURSOR \
40 CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
42 #define IOCTL_VIDEO_DISABLE_POINTER \
43 CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
45 #define IOCTL_VIDEO_ENABLE_CURSOR \
46 CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
48 #define IOCTL_VIDEO_ENABLE_POINTER \
49 CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
51 #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
52 CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
54 #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
55 CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
57 #define IOCTL_VIDEO_GET_CHILD_STATE \
58 CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
60 #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
61 CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
63 #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
64 CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
66 #define IOCTL_VIDEO_LOAD_AND_SET_FONT \
67 CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
69 #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
70 CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
72 #define IOCTL_VIDEO_QUERY_AVAIL_MODES \
73 CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
75 #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
76 CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
78 #define IOCTL_VIDEO_QUERY_CURRENT_MODE \
79 CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
81 #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
82 CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
84 #define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
85 CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
87 #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
88 CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
90 #define IOCTL_VIDEO_QUERY_POINTER_ATTR \
91 CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
93 #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
94 CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
96 #define IOCTL_VIDEO_QUERY_POINTER_POSITION \
97 CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
99 #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
100 CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
102 #define IOCTL_VIDEO_RESET_DEVICE \
103 CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
105 #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
106 CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
108 #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
109 CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
111 #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
112 CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
114 #define IOCTL_VIDEO_SET_COLOR_REGISTERS \
115 CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
117 #define IOCTL_VIDEO_SET_CURRENT_MODE \
118 CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
120 #define IOCTL_VIDEO_SET_CURSOR_ATTR \
121 CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
123 #define IOCTL_VIDEO_SET_CURSOR_POSITION \
124 CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
126 #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
127 CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
129 #define IOCTL_VIDEO_SET_POINTER_ATTR \
130 CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
132 #define IOCTL_VIDEO_SET_POINTER_POSITION \
133 CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
135 #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
136 CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
138 #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
139 CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
141 #define IOCTL_VIDEO_SWITCH_DUALVIEW \
142 CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
144 #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
145 CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
147 #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
148 CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
150 #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
151 CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
155 typedef struct _VIDEO_MEMORY
{
156 PVOID RequestedVirtualAddress
;
157 } VIDEO_MEMORY
, *PVIDEO_MEMORY
;
159 typedef struct _VIDEO_MEMORY_INFORMATION
{
161 ULONG VideoRamLength
;
162 PVOID FrameBufferBase
;
163 ULONG FrameBufferLength
;
164 } VIDEO_MEMORY_INFORMATION
, *PVIDEO_MEMORY_INFORMATION
;
166 /* VIDEO_MODE.RequestedMode */
167 #define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
168 #define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
170 typedef struct _VIDEO_MODE
{
172 } VIDEO_MODE
, *PVIDEO_MODE
;
174 /* VIDEO_MODE_INFORMATION.AttributeFlags */
175 #define VIDEO_MODE_COLOR 0x0001
176 #define VIDEO_MODE_GRAPHICS 0x0002
177 #define VIDEO_MODE_PALETTE_DRIVEN 0x0004
178 #define VIDEO_MODE_MANAGED_PALETTE 0x0008
179 #define VIDEO_MODE_INTERLACED 0x0010
180 #define VIDEO_MODE_NO_OFF_SCREEN 0x0020
181 #define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
182 #define VIDEO_MODE_BANKED 0x0080
183 #define VIDEO_MODE_LINEAR 0x0100
185 typedef struct _VIDEO_MODE_INFORMATION
{
188 ULONG VisScreenWidth
;
189 ULONG VisScreenHeight
;
191 ULONG NumberOfPlanes
;
197 ULONG NumberGreenBits
;
198 ULONG NumberBlueBits
;
202 ULONG AttributeFlags
;
203 ULONG VideoMemoryBitmapWidth
;
204 ULONG VideoMemoryBitmapHeight
;
205 ULONG DriverSpecificAttributeFlags
;
206 } VIDEO_MODE_INFORMATION
, *PVIDEO_MODE_INFORMATION
;
208 typedef struct _VIDEO_NUM_MODES
{
210 ULONG ModeInformationLength
;
211 } VIDEO_NUM_MODES
, *PVIDEO_NUM_MODES
;
213 typedef enum _VIDEO_POWER_STATE
{
214 VideoPowerUnspecified
= 0,
222 } VIDEO_POWER_STATE
, *PVIDEO_POWER_STATE
;
224 typedef struct _VIDEO_POWER_MANAGEMENT
{
228 } VIDEO_POWER_MANAGEMENT
, *PVIDEO_POWER_MANAGEMENT
;
230 typedef struct _VIDEO_PUBLIC_ACCESS_RANGES
{
232 ULONG MappedInIoSpace
;
233 PVOID VirtualAddress
;
234 } VIDEO_PUBLIC_ACCESS_RANGES
, *PVIDEO_PUBLIC_ACCESS_RANGES
;
236 typedef struct _VIDEO_SHARE_MEMORY
{
237 HANDLE ProcessHandle
;
240 PVOID RequestedVirtualAddress
;
241 } VIDEO_SHARE_MEMORY
, *PVIDEO_SHARE_MEMORY
;
243 typedef struct _VIDEO_SHARE_MEMORY_INFORMATION
{
244 ULONG SharedViewOffset
;
245 ULONG SharedViewSize
;
246 PVOID VirtualAddress
;
247 } VIDEO_SHARE_MEMORY_INFORMATION
, *PVIDEO_SHARE_MEMORY_INFORMATION
;
249 /* VIDEO_BANK_SELECT.BankingFlags constants */
250 #define PLANAR_HC 0x00000001
252 /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
253 typedef enum _VIDEO_BANK_TYPE
{
259 } VIDEO_BANK_TYPE
, *PVIDEO_BANK_TYPE
;
261 typedef struct _VIDEO_BANK_SELECT
{
266 ULONG PlanarHCBankingType
;
267 ULONG BitmapWidthInBytes
;
270 ULONG PlanarHCGranularity
;
272 ULONG PlanarHCBankCodeOffset
;
273 ULONG PlanarHCEnableCodeOffset
;
274 ULONG PlanarHCDisableCodeOffset
;
275 } VIDEO_BANK_SELECT
, *PVIDEO_BANK_SELECT
;
277 typedef struct _VIDEO_LOAD_FONT_INFORMATION
{
278 USHORT WidthInPixels
;
279 USHORT HeightInPixels
;
282 } VIDEO_LOAD_FONT_INFORMATION
, *PVIDEO_LOAD_FONT_INFORMATION
;
284 /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
285 #define VIDEO_DEVICE_COLOR 0x00000001
286 #define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
288 typedef struct _VIDEO_COLOR_CAPABILITIES
{
290 ULONG AttributeFlags
;
291 LONG RedPhosphoreDecay
;
292 LONG GreenPhosphoreDecay
;
293 LONG BluePhosphoreDecay
;
294 LONG WhiteChromaticity_x
;
295 LONG WhiteChromaticity_y
;
296 LONG WhiteChromaticity_Y
;
297 LONG RedChromaticity_x
;
298 LONG RedChromaticity_y
;
299 LONG GreenChromaticity_x
;
300 LONG GreenChromaticity_y
;
301 LONG BlueChromaticity_x
;
302 LONG BlueChromaticity_y
;
307 } VIDEO_COLOR_CAPABILITIES
, *PVIDEO_COLOR_CAPABILITIES
;
309 typedef struct _VIDEO_CURSOR_ATTRIBUTES
{
316 } VIDEO_CURSOR_ATTRIBUTES
, *PVIDEO_CURSOR_ATTRIBUTES
;
318 typedef struct _VIDEO_CURSOR_POSITION
{
321 } VIDEO_CURSOR_POSITION
, *PVIDEO_CURSOR_POSITION
;
323 typedef struct _VIDEO_POINTER_ATTRIBUTES
{
332 } VIDEO_POINTER_ATTRIBUTES
, *PVIDEO_POINTER_ATTRIBUTES
;
334 /* VIDEO_POINTER_CAPABILITIES.Flags */
335 #define VIDEO_MODE_ASYNC_POINTER 0x01
336 #define VIDEO_MODE_MONO_POINTER 0x02
337 #define VIDEO_MODE_COLOR_POINTER 0x04
338 #define VIDEO_MODE_ANIMATE_START 0x08
339 #define VIDEO_MODE_ANIMATE_UPDATE 0x10
341 typedef struct _VIDEO_POINTER_CAPABILITIES
{
345 ULONG HWPtrBitmapStart
;
346 ULONG HWPtrBitmapEnd
;
347 } VIDEO_POINTER_CAPABILITIES
, *PVIDEO_POINTER_CAPABILITIES
;
349 typedef struct _VIDEO_POINTER_POSITION
{
352 } VIDEO_POINTER_POSITION
, *PVIDEO_POINTER_POSITION
;
355 /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
356 #define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
357 #define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
358 #define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
360 typedef struct _VIDEO_HARDWARE_STATE_HEADER
{
362 UCHAR PortValue
[0x30];
363 ULONG AttribIndexDataState
;
364 ULONG BasicSequencerOffset
;
365 ULONG BasicCrtContOffset
;
366 ULONG BasicGraphContOffset
;
367 ULONG BasicAttribContOffset
;
368 ULONG BasicDacOffset
;
369 ULONG BasicLatchesOffset
;
370 ULONG ExtendedSequencerOffset
;
371 ULONG ExtendedCrtContOffset
;
372 ULONG ExtendedGraphContOffset
;
373 ULONG ExtendedAttribContOffset
;
374 ULONG ExtendedDacOffset
;
375 ULONG ExtendedValidatorStateOffset
;
376 ULONG ExtendedMiscDataOffset
;
384 ULONG DIBBitsPerPixel
;
385 ULONG DIBXResolution
;
386 ULONG DIBYResolution
;
389 ULONG VesaInfoOffset
;
390 PVOID FrameBufferData
;
391 } VIDEO_HARDWARE_STATE_HEADER
, *PVIDEO_HARDWARE_STATE_HEADER
;
393 typedef struct _VIDEO_CLUTDATA
{
398 } VIDEO_CLUTDATA
, *PVIDEO_CLUTDATA
;
404 VIDEO_CLUTDATA RgbArray
;
407 } VIDEO_CLUT
, *PVIDEO_CLUT
;
409 typedef struct _VIDEO_PALETTE_DATA
{
413 } VIDEO_PALETTE_DATA
, *PVIDEO_PALETTE_DATA
;
415 typedef struct _VIDEO_HARDWARE_STATE
{
416 PVIDEO_HARDWARE_STATE_HEADER StateHeader
;
418 } VIDEO_HARDWARE_STATE
, *PVIDEO_HARDWARE_STATE
;
420 #define VIDEO_CHILD_ACTIVE 0x00000001
421 #define VIDEO_CHILD_DETACHED 0x00000002
422 #define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
423 #define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
425 #define VIDEO_DUALVIEW_REMOVABLE 0x00000001
426 #define VIDEO_DUALVIEW_PRIMARY 0x80000000
427 #define VIDEO_DUALVIEW_SECONDARY 0x40000000
430 typedef struct _ENG_EVENT
*PEVENT
;
433 typedef struct _ENG_EVENT
437 } ENG_EVENT
, *PENG_EVENT
;
444 #endif /* __NTDDVDEO_H */