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