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