Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ntddvdeo.h Source File

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 */