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