Embed:
(wiki syntax)
Show/hide line numbers
ntddvdeo.h
00001 /* 00002 * ntddvdeo.h 00003 * 00004 * Definitions for video devices 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __NTDDVDEO_H 00024 #define __NTDDVDEO_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 00036 00037 #define VIDEO_DEVICE_NAME "DISPLAY%d" 00038 #define WVIDEO_DEVICE_NAME L"DISPLAY%d" 00039 00040 #define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo" 00041 00042 DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \ 00043 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99); 00044 00045 00046 #define IOCTL_VIDEO_DISABLE_CURSOR \ 00047 CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS) 00048 00049 #define IOCTL_VIDEO_DISABLE_POINTER \ 00050 CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS) 00051 00052 #define IOCTL_VIDEO_ENABLE_CURSOR \ 00053 CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS) 00054 00055 #define IOCTL_VIDEO_ENABLE_POINTER \ 00056 CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS) 00057 00058 #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \ 00059 CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS) 00060 00061 #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \ 00062 CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS) 00063 00064 #define IOCTL_VIDEO_GET_CHILD_STATE \ 00065 CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS) 00066 00067 #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \ 00068 CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS) 00069 00070 #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \ 00071 CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS) 00072 00073 #define IOCTL_VIDEO_LOAD_AND_SET_FONT \ 00074 CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS) 00075 00076 #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \ 00077 CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS) 00078 00079 #define IOCTL_VIDEO_QUERY_AVAIL_MODES \ 00080 CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS) 00081 00082 #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \ 00083 CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS) 00084 00085 #define IOCTL_VIDEO_QUERY_CURRENT_MODE \ 00086 CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS) 00087 00088 #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \ 00089 CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS) 00090 00091 #define IOCTL_VIDEO_QUERY_CURSOR_POSITION \ 00092 CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS) 00093 00094 #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \ 00095 CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS) 00096 00097 #define IOCTL_VIDEO_QUERY_POINTER_ATTR \ 00098 CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS) 00099 00100 #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \ 00101 CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS) 00102 00103 #define IOCTL_VIDEO_QUERY_POINTER_POSITION \ 00104 CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS) 00105 00106 #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \ 00107 CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS) 00108 00109 #define IOCTL_VIDEO_RESET_DEVICE \ 00110 CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS) 00111 00112 #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \ 00113 CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS) 00114 00115 #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \ 00116 CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS) 00117 00118 #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \ 00119 CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS) 00120 00121 #define IOCTL_VIDEO_SET_COLOR_REGISTERS \ 00122 CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS) 00123 00124 #define IOCTL_VIDEO_SET_CURRENT_MODE \ 00125 CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS) 00126 00127 #define IOCTL_VIDEO_SET_CURSOR_ATTR \ 00128 CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS) 00129 00130 #define IOCTL_VIDEO_SET_CURSOR_POSITION \ 00131 CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS) 00132 00133 #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \ 00134 CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS) 00135 00136 #define IOCTL_VIDEO_SET_POINTER_ATTR \ 00137 CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS) 00138 00139 #define IOCTL_VIDEO_SET_POINTER_POSITION \ 00140 CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS) 00141 00142 #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \ 00143 CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS) 00144 00145 #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \ 00146 CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS) 00147 00148 #define IOCTL_VIDEO_SWITCH_DUALVIEW \ 00149 CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS) 00150 00151 #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \ 00152 CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS) 00153 00154 #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \ 00155 CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS) 00156 00157 #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \ 00158 CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS) 00159 00160 00161 00162 typedef struct _VIDEO_MEMORY { 00163 PVOID RequestedVirtualAddress; 00164 } VIDEO_MEMORY, *PVIDEO_MEMORY; 00165 00166 typedef struct _VIDEO_MEMORY_INFORMATION { 00167 PVOID VideoRamBase; 00168 ULONG VideoRamLength; 00169 PVOID FrameBufferBase; 00170 ULONG FrameBufferLength; 00171 } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION; 00172 00173 /* VIDEO_MODE.RequestedMode */ 00174 #define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000 00175 #define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000 00176 00177 typedef struct _VIDEO_MODE { 00178 ULONG RequestedMode; 00179 } VIDEO_MODE, *PVIDEO_MODE; 00180 00181 /* VIDEO_MODE_INFORMATION.AttributeFlags */ 00182 #define VIDEO_MODE_COLOR 0x0001 00183 #define VIDEO_MODE_GRAPHICS 0x0002 00184 #define VIDEO_MODE_PALETTE_DRIVEN 0x0004 00185 #define VIDEO_MODE_MANAGED_PALETTE 0x0008 00186 #define VIDEO_MODE_INTERLACED 0x0010 00187 #define VIDEO_MODE_NO_OFF_SCREEN 0x0020 00188 #define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040 00189 #define VIDEO_MODE_BANKED 0x0080 00190 #define VIDEO_MODE_LINEAR 0x0100 00191 00192 typedef struct _VIDEO_MODE_INFORMATION { 00193 ULONG Length; 00194 ULONG ModeIndex; 00195 ULONG VisScreenWidth; 00196 ULONG VisScreenHeight; 00197 ULONG ScreenStride; 00198 ULONG NumberOfPlanes; 00199 ULONG BitsPerPlane; 00200 ULONG Frequency; 00201 ULONG XMillimeter; 00202 ULONG YMillimeter; 00203 ULONG NumberRedBits; 00204 ULONG NumberGreenBits; 00205 ULONG NumberBlueBits; 00206 ULONG RedMask; 00207 ULONG GreenMask; 00208 ULONG BlueMask; 00209 ULONG AttributeFlags; 00210 ULONG VideoMemoryBitmapWidth; 00211 ULONG VideoMemoryBitmapHeight; 00212 ULONG DriverSpecificAttributeFlags; 00213 } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION; 00214 00215 typedef struct _VIDEO_NUM_MODES { 00216 ULONG NumModes; 00217 ULONG ModeInformationLength; 00218 } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES; 00219 00220 typedef enum _VIDEO_POWER_STATE { 00221 VideoPowerUnspecified = 0, 00222 VideoPowerOn = 1, 00223 VideoPowerStandBy, 00224 VideoPowerSuspend, 00225 VideoPowerOff, 00226 VideoPowerHibernate, 00227 VideoPowerShutdown, 00228 VideoPowerMaximum 00229 } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE; 00230 00231 typedef struct _VIDEO_POWER_MANAGEMENT { 00232 ULONG Length; 00233 ULONG DPMSVersion; 00234 ULONG PowerState; 00235 } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT; 00236 00237 typedef struct _VIDEO_PUBLIC_ACCESS_RANGES { 00238 ULONG InIoSpace; 00239 ULONG MappedInIoSpace; 00240 PVOID VirtualAddress; 00241 } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES; 00242 00243 typedef struct _VIDEO_SHARE_MEMORY { 00244 HANDLE ProcessHandle; 00245 ULONG ViewOffset; 00246 ULONG ViewSize; 00247 PVOID RequestedVirtualAddress; 00248 } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY; 00249 00250 typedef struct _VIDEO_SHARE_MEMORY_INFORMATION { 00251 ULONG SharedViewOffset; 00252 ULONG SharedViewSize; 00253 PVOID VirtualAddress; 00254 } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION; 00255 00256 /* VIDEO_BANK_SELECT.BankingFlags constants */ 00257 #define PLANAR_HC 0x00000001 00258 00259 /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */ 00260 typedef enum _VIDEO_BANK_TYPE { 00261 VideoNotBanked = 0, 00262 VideoBanked1RW, 00263 VideoBanked1R1W, 00264 VideoBanked2RW, 00265 NumVideoBankTypes 00266 } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE; 00267 00268 typedef struct _VIDEO_BANK_SELECT { 00269 ULONG Length; 00270 ULONG Size; 00271 ULONG BankingFlags; 00272 ULONG BankingType; 00273 ULONG PlanarHCBankingType; 00274 ULONG BitmapWidthInBytes; 00275 ULONG BitmapSize; 00276 ULONG Granularity; 00277 ULONG PlanarHCGranularity; 00278 ULONG CodeOffset; 00279 ULONG PlanarHCBankCodeOffset; 00280 ULONG PlanarHCEnableCodeOffset; 00281 ULONG PlanarHCDisableCodeOffset; 00282 } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT; 00283 00284 typedef struct _VIDEO_LOAD_FONT_INFORMATION { 00285 USHORT WidthInPixels; 00286 USHORT HeightInPixels; 00287 ULONG FontSize; 00288 UCHAR Font[1]; 00289 } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION; 00290 00291 /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */ 00292 #define VIDEO_DEVICE_COLOR 0x00000001 00293 #define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002 00294 00295 typedef struct _VIDEO_COLOR_CAPABILITIES { 00296 ULONG Length; 00297 ULONG AttributeFlags; 00298 LONG RedPhosphoreDecay; 00299 LONG GreenPhosphoreDecay; 00300 LONG BluePhosphoreDecay; 00301 LONG WhiteChromaticity_x; 00302 LONG WhiteChromaticity_y; 00303 LONG WhiteChromaticity_Y; 00304 LONG RedChromaticity_x; 00305 LONG RedChromaticity_y; 00306 LONG GreenChromaticity_x; 00307 LONG GreenChromaticity_y; 00308 LONG BlueChromaticity_x; 00309 LONG BlueChromaticity_y; 00310 LONG WhiteGamma; 00311 LONG RedGamma; 00312 LONG GreenGamma; 00313 LONG BlueGamma; 00314 } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES; 00315 00316 typedef struct _VIDEO_CURSOR_ATTRIBUTES { 00317 USHORT Width; 00318 USHORT Height; 00319 SHORT Column; 00320 SHORT Row; 00321 UCHAR Rate; 00322 UCHAR Enable; 00323 } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES; 00324 00325 typedef struct _VIDEO_CURSOR_POSITION { 00326 SHORT Column; 00327 SHORT Row; 00328 } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION; 00329 00330 typedef struct _VIDEO_POINTER_ATTRIBUTES { 00331 ULONG Flags; 00332 ULONG Width; 00333 ULONG Height; 00334 ULONG WidthInBytes; 00335 ULONG Enable; 00336 SHORT Column; 00337 SHORT Row; 00338 UCHAR Pixels[1]; 00339 } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES; 00340 00341 /* VIDEO_POINTER_CAPABILITIES.Flags */ 00342 #define VIDEO_MODE_ASYNC_POINTER 0x01 00343 #define VIDEO_MODE_MONO_POINTER 0x02 00344 #define VIDEO_MODE_COLOR_POINTER 0x04 00345 #define VIDEO_MODE_ANIMATE_START 0x08 00346 #define VIDEO_MODE_ANIMATE_UPDATE 0x10 00347 00348 typedef struct _VIDEO_POINTER_CAPABILITIES { 00349 ULONG Flags; 00350 ULONG MaxWidth; 00351 ULONG MaxHeight; 00352 ULONG HWPtrBitmapStart; 00353 ULONG HWPtrBitmapEnd; 00354 } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES; 00355 00356 typedef struct _VIDEO_POINTER_POSITION { 00357 SHORT Column; 00358 SHORT Row; 00359 } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION; 00360 00361 00362 /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */ 00363 #define VIDEO_STATE_NON_STANDARD_VGA 0x00000001 00364 #define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002 00365 #define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004 00366 00367 typedef struct _VIDEO_HARDWARE_STATE_HEADER { 00368 ULONG Length; 00369 UCHAR PortValue[0x30]; 00370 ULONG AttribIndexDataState; 00371 ULONG BasicSequencerOffset; 00372 ULONG BasicCrtContOffset; 00373 ULONG BasicGraphContOffset; 00374 ULONG BasicAttribContOffset; 00375 ULONG BasicDacOffset; 00376 ULONG BasicLatchesOffset; 00377 ULONG ExtendedSequencerOffset; 00378 ULONG ExtendedCrtContOffset; 00379 ULONG ExtendedGraphContOffset; 00380 ULONG ExtendedAttribContOffset; 00381 ULONG ExtendedDacOffset; 00382 ULONG ExtendedValidatorStateOffset; 00383 ULONG ExtendedMiscDataOffset; 00384 ULONG PlaneLength; 00385 ULONG Plane1Offset; 00386 ULONG Plane2Offset; 00387 ULONG Plane3Offset; 00388 ULONG Plane4Offset; 00389 ULONG VGAStateFlags; 00390 ULONG DIBOffset; 00391 ULONG DIBBitsPerPixel; 00392 ULONG DIBXResolution; 00393 ULONG DIBYResolution; 00394 ULONG DIBXlatOffset; 00395 ULONG DIBXlatLength; 00396 ULONG VesaInfoOffset; 00397 PVOID FrameBufferData; 00398 } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER; 00399 00400 typedef struct _VIDEO_CLUTDATA { 00401 UCHAR Red; 00402 UCHAR Green; 00403 UCHAR Blue; 00404 UCHAR Unused; 00405 } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA; 00406 00407 typedef struct { 00408 USHORT NumEntries; 00409 USHORT FirstEntry; 00410 union { 00411 VIDEO_CLUTDATA RgbArray; 00412 ULONG RgbLong; 00413 } LookupTable[1]; 00414 } VIDEO_CLUT, *PVIDEO_CLUT; 00415 00416 typedef struct _VIDEO_PALETTE_DATA { 00417 USHORT NumEntries; 00418 USHORT FirstEntry; 00419 USHORT Colors[1]; 00420 } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA; 00421 00422 typedef struct _VIDEO_HARDWARE_STATE { 00423 PVIDEO_HARDWARE_STATE_HEADER StateHeader; 00424 ULONG StateLength; 00425 } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE; 00426 00427 #define VIDEO_CHILD_ACTIVE 0x00000001 00428 #define VIDEO_CHILD_DETACHED 0x00000002 00429 #define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000 00430 #define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000 00431 00432 #define VIDEO_DUALVIEW_REMOVABLE 0x00000001 00433 #define VIDEO_DUALVIEW_PRIMARY 0x80000000 00434 #define VIDEO_DUALVIEW_SECONDARY 0x40000000 00435 00436 #ifdef __cplusplus 00437 } 00438 #endif 00439 00440 #endif /* __NTDDVDEO_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2