ntddvdeo.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  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. #ifndef _NTDDVDEO_
  23. #define _NTDDVDEO_
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. #define VIDEO_DEVICE_NAME "DISPLAY%d"
  28. #define WVIDEO_DEVICE_NAME L"DISPLAY%d"
  29. #define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo"
  30. DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
  31. 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
  32. #define IOCTL_VIDEO_ENABLE_VDM \
  33. CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
  34. #define IOCTL_VIDEO_DISABLE_VDM \
  35. CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
  36. #define IOCTL_VIDEO_REGISTER_VDM \
  37. CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
  38. #define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE \
  39. CTL_CODE(FILE_DEVICE_VIDEO, 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
  40. #define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE \
  41. CTL_CODE(FILE_DEVICE_VIDEO, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
  42. #define IOCTL_VIDEO_MONITOR_DEVICE \
  43. CTL_CODE(FILE_DEVICE_VIDEO, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
  44. #define IOCTL_VIDEO_ENUM_MONITOR_PDO \
  45. CTL_CODE(FILE_DEVICE_VIDEO, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
  46. #define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS \
  47. CTL_CODE(FILE_DEVICE_VIDEO, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
  48. #define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
  49. CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
  50. #define IOCTL_VIDEO_IS_VGA_DEVICE \
  51. CTL_CODE(FILE_DEVICE_VIDEO, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
  52. #define IOCTL_VIDEO_USE_DEVICE_IN_SESSION \
  53. CTL_CODE(FILE_DEVICE_VIDEO, 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
  54. #define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY \
  55. CTL_CODE(FILE_DEVICE_VIDEO, 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
  56. #define IOCTL_VIDEO_DISABLE_CURSOR \
  57. CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
  58. #define IOCTL_VIDEO_DISABLE_POINTER \
  59. CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
  60. #define IOCTL_VIDEO_ENABLE_CURSOR \
  61. CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
  62. #define IOCTL_VIDEO_ENABLE_POINTER \
  63. CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
  64. #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
  65. CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
  66. #define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
  67. CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
  68. #define IOCTL_VIDEO_GET_CHILD_STATE \
  69. CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
  70. #define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
  71. CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
  72. #define IOCTL_VIDEO_LOAD_AND_SET_FONT \
  73. CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
  74. #define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
  75. CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
  76. #define IOCTL_VIDEO_QUERY_AVAIL_MODES \
  77. CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
  78. #define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
  79. CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
  80. #define IOCTL_VIDEO_QUERY_CURRENT_MODE \
  81. CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
  82. #define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
  83. 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)
  86. #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
  87. CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
  88. #define IOCTL_VIDEO_QUERY_POINTER_ATTR \
  89. CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
  90. #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
  91. CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
  92. #define IOCTL_VIDEO_QUERY_POINTER_POSITION \
  93. CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
  94. #define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
  95. CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
  96. #define IOCTL_VIDEO_RESET_DEVICE \
  97. CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
  98. #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
  99. CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
  100. #define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
  101. CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
  102. #define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
  103. CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
  104. #define IOCTL_VIDEO_SET_COLOR_REGISTERS \
  105. CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
  106. #define IOCTL_VIDEO_SET_CURRENT_MODE \
  107. CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
  108. #define IOCTL_VIDEO_SET_CURSOR_ATTR \
  109. CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
  110. #define IOCTL_VIDEO_SET_CURSOR_POSITION \
  111. CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
  112. #define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
  113. CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
  114. #define IOCTL_VIDEO_SET_POINTER_ATTR \
  115. CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
  116. #define IOCTL_VIDEO_SET_POINTER_POSITION \
  117. CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
  118. #define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
  119. CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
  120. #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
  121. CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
  122. #define IOCTL_VIDEO_SWITCH_DUALVIEW \
  123. CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
  124. #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
  125. CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
  126. #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
  127. CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
  128. #define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
  129. CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
  130. #define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
  131. CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)
  132. #define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
  133. CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)
  134. #define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
  135. CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)
  136. typedef struct _VIDEO_MEMORY {
  137. PVOID RequestedVirtualAddress;
  138. } VIDEO_MEMORY, *PVIDEO_MEMORY;
  139. typedef struct _VIDEO_MEMORY_INFORMATION {
  140. PVOID VideoRamBase;
  141. ULONG VideoRamLength;
  142. PVOID FrameBufferBase;
  143. ULONG FrameBufferLength;
  144. } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
  145. /* VIDEO_MODE.RequestedMode */
  146. #define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
  147. #define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
  148. typedef struct _VIDEO_MODE {
  149. ULONG RequestedMode;
  150. } VIDEO_MODE, *PVIDEO_MODE;
  151. /* VIDEO_MODE_INFORMATION.AttributeFlags */
  152. #define VIDEO_MODE_COLOR 0x0001
  153. #define VIDEO_MODE_GRAPHICS 0x0002
  154. #define VIDEO_MODE_PALETTE_DRIVEN 0x0004
  155. #define VIDEO_MODE_MANAGED_PALETTE 0x0008
  156. #define VIDEO_MODE_INTERLACED 0x0010
  157. #define VIDEO_MODE_NO_OFF_SCREEN 0x0020
  158. #define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
  159. #define VIDEO_MODE_BANKED 0x0080
  160. #define VIDEO_MODE_LINEAR 0x0100
  161. typedef struct _VIDEO_MODE_INFORMATION {
  162. ULONG Length;
  163. ULONG ModeIndex;
  164. ULONG VisScreenWidth;
  165. ULONG VisScreenHeight;
  166. ULONG ScreenStride;
  167. ULONG NumberOfPlanes;
  168. ULONG BitsPerPlane;
  169. ULONG Frequency;
  170. ULONG XMillimeter;
  171. ULONG YMillimeter;
  172. ULONG NumberRedBits;
  173. ULONG NumberGreenBits;
  174. ULONG NumberBlueBits;
  175. ULONG RedMask;
  176. ULONG GreenMask;
  177. ULONG BlueMask;
  178. ULONG AttributeFlags;
  179. ULONG VideoMemoryBitmapWidth;
  180. ULONG VideoMemoryBitmapHeight;
  181. ULONG DriverSpecificAttributeFlags;
  182. } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
  183. typedef struct _VIDEO_NUM_MODES {
  184. ULONG NumModes;
  185. ULONG ModeInformationLength;
  186. } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
  187. typedef enum _VIDEO_POWER_STATE {
  188. VideoPowerUnspecified = 0,
  189. VideoPowerOn = 1,
  190. VideoPowerStandBy,
  191. VideoPowerSuspend,
  192. VideoPowerOff,
  193. VideoPowerHibernate,
  194. VideoPowerShutdown,
  195. VideoPowerMaximum
  196. } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
  197. typedef struct _VIDEO_POWER_MANAGEMENT {
  198. ULONG Length;
  199. ULONG DPMSVersion;
  200. ULONG PowerState;
  201. } VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
  202. typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
  203. ULONG InIoSpace;
  204. ULONG MappedInIoSpace;
  205. PVOID VirtualAddress;
  206. } VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
  207. typedef struct _VIDEO_SHARE_MEMORY {
  208. HANDLE ProcessHandle;
  209. ULONG ViewOffset;
  210. ULONG ViewSize;
  211. PVOID RequestedVirtualAddress;
  212. } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
  213. typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
  214. ULONG SharedViewOffset;
  215. ULONG SharedViewSize;
  216. PVOID VirtualAddress;
  217. } VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
  218. /* VIDEO_BANK_SELECT.BankingFlags constants */
  219. #define PLANAR_HC 0x00000001
  220. /* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
  221. typedef enum _VIDEO_BANK_TYPE {
  222. VideoNotBanked = 0,
  223. VideoBanked1RW,
  224. VideoBanked1R1W,
  225. VideoBanked2RW,
  226. NumVideoBankTypes
  227. } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
  228. typedef struct _VIDEO_BANK_SELECT {
  229. ULONG Length;
  230. ULONG Size;
  231. ULONG BankingFlags;
  232. ULONG BankingType;
  233. ULONG PlanarHCBankingType;
  234. ULONG BitmapWidthInBytes;
  235. ULONG BitmapSize;
  236. ULONG Granularity;
  237. ULONG PlanarHCGranularity;
  238. ULONG CodeOffset;
  239. ULONG PlanarHCBankCodeOffset;
  240. ULONG PlanarHCEnableCodeOffset;
  241. ULONG PlanarHCDisableCodeOffset;
  242. } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
  243. typedef struct _VIDEO_LOAD_FONT_INFORMATION {
  244. USHORT WidthInPixels;
  245. USHORT HeightInPixels;
  246. ULONG FontSize;
  247. UCHAR Font[1];
  248. } VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
  249. /* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
  250. #define VIDEO_DEVICE_COLOR 0x00000001
  251. #define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
  252. typedef struct _VIDEO_COLOR_CAPABILITIES {
  253. ULONG Length;
  254. ULONG AttributeFlags;
  255. LONG RedPhosphoreDecay;
  256. LONG GreenPhosphoreDecay;
  257. LONG BluePhosphoreDecay;
  258. LONG WhiteChromaticity_x;
  259. LONG WhiteChromaticity_y;
  260. LONG WhiteChromaticity_Y;
  261. LONG RedChromaticity_x;
  262. LONG RedChromaticity_y;
  263. LONG GreenChromaticity_x;
  264. LONG GreenChromaticity_y;
  265. LONG BlueChromaticity_x;
  266. LONG BlueChromaticity_y;
  267. LONG WhiteGamma;
  268. LONG RedGamma;
  269. LONG GreenGamma;
  270. LONG BlueGamma;
  271. } VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
  272. typedef struct _VIDEO_CURSOR_ATTRIBUTES {
  273. USHORT Width;
  274. USHORT Height;
  275. SHORT Column;
  276. SHORT Row;
  277. UCHAR Rate;
  278. UCHAR Enable;
  279. } VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
  280. typedef struct _VIDEO_CURSOR_POSITION {
  281. SHORT Column;
  282. SHORT Row;
  283. } VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
  284. typedef struct _VIDEO_POINTER_ATTRIBUTES {
  285. ULONG Flags;
  286. ULONG Width;
  287. ULONG Height;
  288. ULONG WidthInBytes;
  289. ULONG Enable;
  290. SHORT Column;
  291. SHORT Row;
  292. UCHAR Pixels[1];
  293. } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
  294. /* VIDEO_POINTER_CAPABILITIES.Flags */
  295. #define VIDEO_MODE_ASYNC_POINTER 0x01
  296. #define VIDEO_MODE_MONO_POINTER 0x02
  297. #define VIDEO_MODE_COLOR_POINTER 0x04
  298. #define VIDEO_MODE_ANIMATE_START 0x08
  299. #define VIDEO_MODE_ANIMATE_UPDATE 0x10
  300. typedef struct _VIDEO_POINTER_CAPABILITIES {
  301. ULONG Flags;
  302. ULONG MaxWidth;
  303. ULONG MaxHeight;
  304. ULONG HWPtrBitmapStart;
  305. ULONG HWPtrBitmapEnd;
  306. } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
  307. typedef struct _VIDEO_POINTER_POSITION {
  308. SHORT Column;
  309. SHORT Row;
  310. } VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
  311. /* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
  312. #define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
  313. #define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
  314. #define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
  315. typedef struct _VIDEO_HARDWARE_STATE_HEADER {
  316. ULONG Length;
  317. UCHAR PortValue[0x30];
  318. ULONG AttribIndexDataState;
  319. ULONG BasicSequencerOffset;
  320. ULONG BasicCrtContOffset;
  321. ULONG BasicGraphContOffset;
  322. ULONG BasicAttribContOffset;
  323. ULONG BasicDacOffset;
  324. ULONG BasicLatchesOffset;
  325. ULONG ExtendedSequencerOffset;
  326. ULONG ExtendedCrtContOffset;
  327. ULONG ExtendedGraphContOffset;
  328. ULONG ExtendedAttribContOffset;
  329. ULONG ExtendedDacOffset;
  330. ULONG ExtendedValidatorStateOffset;
  331. ULONG ExtendedMiscDataOffset;
  332. ULONG PlaneLength;
  333. ULONG Plane1Offset;
  334. ULONG Plane2Offset;
  335. ULONG Plane3Offset;
  336. ULONG Plane4Offset;
  337. ULONG VGAStateFlags;
  338. ULONG DIBOffset;
  339. ULONG DIBBitsPerPixel;
  340. ULONG DIBXResolution;
  341. ULONG DIBYResolution;
  342. ULONG DIBXlatOffset;
  343. ULONG DIBXlatLength;
  344. ULONG VesaInfoOffset;
  345. PVOID FrameBufferData;
  346. } VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
  347. typedef struct _VIDEO_CLUTDATA {
  348. UCHAR Red;
  349. UCHAR Green;
  350. UCHAR Blue;
  351. UCHAR Unused;
  352. } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
  353. typedef struct {
  354. USHORT NumEntries;
  355. USHORT FirstEntry;
  356. union {
  357. VIDEO_CLUTDATA RgbArray;
  358. ULONG RgbLong;
  359. } LookupTable[1];
  360. } VIDEO_CLUT, *PVIDEO_CLUT;
  361. typedef struct _VIDEO_PALETTE_DATA {
  362. USHORT NumEntries;
  363. USHORT FirstEntry;
  364. USHORT Colors[1];
  365. } VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
  366. typedef struct _VIDEO_HARDWARE_STATE {
  367. PVIDEO_HARDWARE_STATE_HEADER StateHeader;
  368. ULONG StateLength;
  369. } VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
  370. #define VIDEO_CHILD_ACTIVE 0x00000001
  371. #define VIDEO_CHILD_DETACHED 0x00000002
  372. #define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
  373. #define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
  374. #define VIDEO_DUALVIEW_REMOVABLE 0x00000001
  375. #define VIDEO_DUALVIEW_PRIMARY 0x80000000
  376. #define VIDEO_DUALVIEW_SECONDARY 0x40000000
  377. #ifndef _WINDDI_
  378. typedef struct _ENG_EVENT *PEVENT;
  379. #endif
  380. typedef struct _ENG_EVENT {
  381. PVOID pKEvent;
  382. ULONG fFlags;
  383. } ENG_EVENT, *PENG_EVENT;
  384. typedef struct _DISPLAY_BRIGHTNESS {
  385. UCHAR ucDisplayPolicy;
  386. UCHAR ucACBrightness;
  387. UCHAR ucDCBrightness;
  388. } DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;
  389. #define DISPLAYPOLICY_AC 0x00000001
  390. #define DISPLAYPOLICY_DC 0x00000002
  391. #define DISPLAYPOLICY_BOTH 0x00000003
  392. #ifdef __cplusplus
  393. }
  394. #endif
  395. #endif /* _NTDDVDEO_ */