Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
