Reactos
at listview 1757 lines 37 kB view raw
1/* 2 * video.h 3 * 4 * Video port and miniport driver interface 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 25#define __VIDEO_H__ 26 27#include "ntddvdeo.h" 28#include "videoagp.h" 29 30#ifdef __cplusplus 31extern "C" { 32#endif 33 34#ifndef _NTOSDEF_ 35 36#ifdef PAGED_CODE 37#undef PAGED_CODE 38#endif 39 40#if defined(_MSC_VER) 41#define ALLOC_PRAGMA 1 42#endif 43 44#if defined(_VIDEOPORT_) 45#define VPAPI 46#else 47#define VPAPI DECLSPEC_IMPORT 48#endif 49 50#if DBG 51#define PAGED_CODE() \ 52 if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) { \ 53 VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \ 54 ASSERT(FALSE); \ 55 } 56#else 57#define PAGED_CODE() 58#endif /* DBG */ 59 60ULONG 61NTAPI 62DriverEntry( 63 PVOID Context1, 64 PVOID Context2); 65 66#else 67 68#define VPAPI 69 70#endif /* _NTOSDEF_ */ 71 72#if DBG 73#define VideoDebugPrint(x) VideoPortDebugPrint x 74#else 75#define VideoDebugPrint(x) 76#endif 77 78#define GET_VIDEO_PHYSICAL_ADDRESS(scatterList, \ 79 VirtualAddress, \ 80 InputBuffer, \ 81 pLength, \ 82 Address) \ 83 do { \ 84 ULONG_PTR byteOffset; \ 85 \ 86 byteOffset = (PCHAR) VirtualAddress - (PCHAR)InputBuffer; \ 87 while (byteOffset >= scatterList->Length) { \ 88 byteOffset -= scatterList->Length; \ 89 scatterList++; \ 90 } \ 91 *pLength = scatterList->Length - byteOffset; \ 92 Address = (ULONG_PTR) (scatterList->PhysicalAddress + byteOffset); \ 93 } while (0) 94 95#define GET_VIDEO_SCATTERGATHER(ppDma) (**(PVRB_SG **)ppDma) 96 97/* VIDEO_ACCESS_RANGE.RangePassive */ 98#define VIDEO_RANGE_PASSIVE_DECODE 1 99#define VIDEO_RANGE_10_BIT_DECODE 2 100 101#define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO FIELD_OFFSET(VIDEO_PORT_CONFIG_INFO, Master) 102#define SIZE_OF_WXP_VIDEO_PORT_CONFIG_INFO sizeof(VIDEO_PORT_CONFIG_INFO) 103 104#define SET_USER_EVENT 0x01 105#define SET_DISPLAY_EVENT 0x02 106 107#define EVENT_TYPE_MASK 1 108#define SYNCHRONIZATION_EVENT 0 109#define NOTIFICATION_EVENT 1 110 111#define INITIAL_EVENT_STATE_MASK 2 112#define INITIAL_EVENT_NOT_SIGNALED 0 113#define INITIAL_EVENT_SIGNALED 2 114 115#define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF 116 117#define VIDEO_INVALID_CHILD_ID 0xFFFFFFFF 118 119#define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, HwStartDma) 120#define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, Reserved) 121#define SIZE_OF_WXP_VIDEO_HW_INITIALIZATION_DATA (SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA + sizeof(ULONG)) 122 123#define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 124#define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 125#define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 126#define VIDEO_PORT_I2C_INTERFACE_VERSION_2 2 127#define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 128#define VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE_VERSION_1 1 129#define VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1 1 130 131/* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */ 132#define VIDEO_MEMORY_SPACE_MEMORY 0x00 133#define VIDEO_MEMORY_SPACE_IO 0x01 134#define VIDEO_MEMORY_SPACE_USER_MODE 0x02 135#define VIDEO_MEMORY_SPACE_DENSE 0x04 136#define VIDEO_MEMORY_SPACE_P6CACHE 0x08 137 138/* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */ 139#define VIDEO_ENUM_MORE_DEVICES ERROR_CONTINUE 140#define VIDEO_ENUM_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES 141#define VIDEO_ENUM_INVALID_DEVICE ERROR_INVALID_NAME 142 143#define DEVICE_VGA_ENABLED 1 144 145/* VideoPortCheckForDeviceExistence.Flags constants */ 146#define CDE_USE_SUBSYSTEM_IDS 0x00000001 147#define CDE_USE_REVISION 0x00000002 148 149#define BUGCHECK_DATA_SIZE_RESERVED 48 150 151#define VIDEO_DEBUG_REPORT_MAX_SIZE 0x8000 152 153typedef LONG VP_STATUS, *PVP_STATUS; 154typedef ULONG DMA_EVENT_FLAGS; 155 156typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; 157typedef struct _VIDEO_DEBUG_REPORT *PVIDEO_DEBUG_REPORT; 158typedef struct __DMA_PARAMETERS *PDMA; 159typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; 160 161typedef PVOID 162(NTAPI *PVIDEO_PORT_GET_PROC_ADDRESS)( 163 IN PVOID HwDeviceExtension, 164 IN PUCHAR FunctionName); 165 166typedef struct _VIDEO_PORT_CONFIG_INFO { 167 ULONG Length; 168 ULONG SystemIoBusNumber; 169 INTERFACE_TYPE AdapterInterfaceType; 170 ULONG BusInterruptLevel; 171 ULONG BusInterruptVector; 172 KINTERRUPT_MODE InterruptMode; 173 ULONG NumEmulatorAccessEntries; 174 PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries; 175 ULONG_PTR EmulatorAccessEntriesContext; 176 PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress; 177 ULONG VdmPhysicalVideoMemoryLength; 178 ULONG HardwareStateSize; 179 ULONG DmaChannel; 180 ULONG DmaPort; 181 UCHAR DmaShareable; 182 UCHAR InterruptShareable; 183 BOOLEAN Master; 184 DMA_WIDTH DmaWidth; 185 DMA_SPEED DmaSpeed; 186 BOOLEAN bMapBuffers; 187 BOOLEAN NeedPhysicalAddresses; 188 BOOLEAN DemandMode; 189 ULONG MaximumTransferLength; 190 ULONG NumberOfPhysicalBreaks; 191 BOOLEAN ScatterGather; 192 ULONG MaximumScatterGatherChunkSize; 193 PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress; 194 PWSTR DriverRegistryPath; 195 ULONGLONG SystemMemorySize; 196} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; 197 198typedef VP_STATUS 199(NTAPI *PVIDEO_HW_FIND_ADAPTER)( 200 IN PVOID HwDeviceExtension, 201 IN PVOID HwContext, 202 IN PWSTR ArgumentString, 203 IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo, 204 OUT PUCHAR Again); 205 206typedef BOOLEAN 207(NTAPI *PVIDEO_HW_INITIALIZE)( 208 IN PVOID HwDeviceExtension); 209 210typedef BOOLEAN 211(NTAPI *PVIDEO_HW_INTERRUPT)( 212 IN PVOID HwDeviceExtension); 213 214typedef struct _VIDEO_ACCESS_RANGE { 215 PHYSICAL_ADDRESS RangeStart; 216 ULONG RangeLength; 217 UCHAR RangeInIoSpace; 218 UCHAR RangeVisible; 219 UCHAR RangeShareable; 220 UCHAR RangePassive; 221} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; 222 223typedef VOID 224(NTAPI *PVIDEO_HW_LEGACYRESOURCES)( 225 IN ULONG VendorId, 226 IN ULONG DeviceId, 227 IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, 228 IN OUT PULONG LegacyResourceCount); 229 230typedef enum _HW_DMA_RETURN { 231 DmaAsyncReturn, 232 DmaSyncReturn 233} HW_DMA_RETURN, *PHW_DMA_RETURN; 234 235typedef HW_DMA_RETURN 236(NTAPI *PVIDEO_HW_START_DMA)( 237 PVOID HwDeviceExtension, 238 PDMA pDma); 239 240typedef struct _VP_SCATTER_GATHER_ELEMENT { 241 PHYSICAL_ADDRESS Address; 242 ULONG Length; 243 ULONG_PTR Reserved; 244} VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT; 245 246typedef struct _VP_SCATTER_GATHER_LIST { 247 ULONG NumberOfElements; 248 ULONG_PTR Reserved; 249 VP_SCATTER_GATHER_ELEMENT Elements[0]; 250} VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; 251 252typedef VOID 253(NTAPI *PEXECUTE_DMA)( 254 IN PVOID HwDeviceExtension, 255 IN PVP_DMA_ADAPTER VpDmaAdapter, 256 IN PVP_SCATTER_GATHER_LIST SGList, 257 IN PVOID Context); 258 259/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */ 260typedef struct _VIDEO_CHILD_ENUM_INFO { 261 ULONG Size; 262 ULONG ChildDescriptorSize; 263 ULONG ChildIndex; 264 ULONG ACPIHwId; 265 PVOID ChildHwDeviceExtension; 266} VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO; 267 268/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */ 269typedef enum _VIDEO_CHILD_TYPE { 270 Monitor = 1, 271 NonPrimaryChip, 272 VideoChip, 273 Other 274} VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; 275 276typedef VP_STATUS 277(NTAPI *PVIDEO_HW_GET_CHILD_DESCRIPTOR)( 278 IN PVOID HwDeviceExtension, 279 IN PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, 280 OUT PVIDEO_CHILD_TYPE VideoChildType, 281 OUT PUCHAR pChildDescriptor, 282 OUT PULONG UId, 283 OUT PULONG pUnused); 284 285typedef VP_STATUS 286(NTAPI *PVIDEO_HW_POWER_SET)( 287 IN PVOID HwDeviceExtension, 288 IN ULONG HwId, 289 IN PVIDEO_POWER_MANAGEMENT VideoPowerControl); 290 291typedef VP_STATUS 292(NTAPI *PVIDEO_HW_POWER_GET)( 293 IN PVOID HwDeviceExtension, 294 IN ULONG HwId, 295 IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl); 296 297typedef struct _QUERY_INTERFACE { 298 CONST GUID *InterfaceType; 299 USHORT Size; 300 USHORT Version; 301 PINTERFACE Interface; 302 PVOID InterfaceSpecificData; 303} QUERY_INTERFACE, *PQUERY_INTERFACE; 304 305typedef VP_STATUS 306(NTAPI *PVIDEO_HW_QUERY_INTERFACE)( 307 IN PVOID HwDeviceExtension, 308 IN OUT PQUERY_INTERFACE QueryInterface); 309 310typedef VP_STATUS 311(NTAPI *PVIDEO_HW_CHILD_CALLBACK)( 312 PVOID HwDeviceExtension, 313 PVOID ChildDeviceExtension); 314 315typedef BOOLEAN 316(NTAPI *PVIDEO_HW_RESET_HW)( 317 IN PVOID HwDeviceExtension, 318 IN ULONG Columns, 319 IN ULONG Rows); 320 321typedef struct _STATUS_BLOCK { 322 _ANONYMOUS_UNION union { 323 VP_STATUS Status; 324 PVOID Pointer; 325 } DUMMYUNIONNAME; 326 ULONG_PTR Information; 327} STATUS_BLOCK, *PSTATUS_BLOCK; 328 329typedef struct _VIDEO_REQUEST_PACKET { 330 ULONG IoControlCode; 331 PSTATUS_BLOCK StatusBlock; 332 PVOID InputBuffer; 333 ULONG InputBufferLength; 334 PVOID OutputBuffer; 335 ULONG OutputBufferLength; 336} VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; 337 338typedef BOOLEAN 339(NTAPI *PVIDEO_HW_START_IO)( 340 IN PVOID HwDeviceExtension, 341 IN PVIDEO_REQUEST_PACKET RequestPacket); 342 343typedef VOID 344(NTAPI *PVIDEO_HW_TIMER)( 345 IN PVOID HwDeviceExtension); 346 347typedef VOID 348(NTAPI *PVIDEO_WRITE_CLOCK_LINE)( 349 PVOID HwDeviceExtension, 350 UCHAR Data); 351 352typedef VOID 353(NTAPI *PVIDEO_WRITE_DATA_LINE)( 354 PVOID HwDeviceExtension, 355 UCHAR Data); 356 357typedef BOOLEAN 358(NTAPI *PVIDEO_READ_CLOCK_LINE)( 359 PVOID HwDeviceExtension); 360 361typedef BOOLEAN 362(NTAPI *PVIDEO_READ_DATA_LINE)( 363 PVOID HwDeviceExtension); 364 365typedef VOID 366(NTAPI *PVIDEO_WAIT_VSYNC_ACTIVE)( 367 PVOID HwDeviceExtension); 368 369typedef struct _I2C_CALLBACKS { 370 IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; 371 IN PVIDEO_WRITE_DATA_LINE WriteDataLine; 372 IN PVIDEO_READ_CLOCK_LINE ReadClockLine; 373 IN PVIDEO_READ_DATA_LINE ReadDataLine; 374} I2C_CALLBACKS, *PI2C_CALLBACKS; 375 376typedef BOOLEAN 377(NTAPI *PI2C_START)( 378 IN PVOID HwDeviceExtension, 379 IN PI2C_CALLBACKS I2CCallbacks); 380 381typedef BOOLEAN 382(NTAPI *PI2C_STOP)( 383 IN PVOID HwDeviceExtension, 384 IN PI2C_CALLBACKS I2CCallbacks); 385 386typedef BOOLEAN 387(NTAPI *PI2C_WRITE)( 388 IN PVOID HwDeviceExtension, 389 IN PI2C_CALLBACKS I2CCallbacks, 390 IN PUCHAR Buffer, 391 IN ULONG Length); 392 393typedef BOOLEAN 394(NTAPI *PI2C_READ)( 395 IN PVOID HwDeviceExtension, 396 IN PI2C_CALLBACKS I2CCallbacks, 397 OUT PUCHAR Buffer, 398 IN ULONG Length); 399 400typedef struct _VIDEO_I2C_CONTROL { 401 IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; 402 IN PVIDEO_WRITE_DATA_LINE WriteDataLine; 403 IN PVIDEO_READ_CLOCK_LINE ReadClockLine; 404 IN PVIDEO_READ_DATA_LINE ReadDataLine; 405 IN ULONG I2CDelay; 406} VIDEO_I2C_CONTROL, *PVIDEO_I2C_CONTROL; 407 408typedef BOOLEAN 409(NTAPI *PI2C_START_2)( 410 IN PVOID HwDeviceExtension, 411 IN PVIDEO_I2C_CONTROL I2CControl); 412 413typedef BOOLEAN 414(NTAPI *PI2C_STOP_2)( 415 IN PVOID HwDeviceExtension, 416 IN PVIDEO_I2C_CONTROL I2CControl); 417 418typedef BOOLEAN 419(NTAPI *PI2C_WRITE_2)( 420 IN PVOID HwDeviceExtension, 421 IN PVIDEO_I2C_CONTROL I2CControl, 422 IN PUCHAR Buffer, 423 IN ULONG Length); 424 425typedef BOOLEAN 426(NTAPI *PI2C_READ_2)( 427 IN PVOID HwDeviceExtension, 428 IN PVIDEO_I2C_CONTROL I2CControl, 429 OUT PUCHAR Buffer, 430 IN ULONG Length, 431 IN BOOLEAN EndOfRead); 432 433typedef struct _INT10_BIOS_ARGUMENTS { 434 ULONG Eax; 435 ULONG Ebx; 436 ULONG Ecx; 437 ULONG Edx; 438 ULONG Esi; 439 ULONG Edi; 440 ULONG Ebp; 441 USHORT SegDs; 442 USHORT SegEs; 443} INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS; 444 445typedef VP_STATUS 446(NTAPI *PINT10_CALL_BIOS)( 447 IN PVOID Context, 448 IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); 449 450typedef VP_STATUS 451(NTAPI *PINT10_ALLOCATE_BUFFER)( 452 IN PVOID Context, 453 OUT PUSHORT Seg, 454 OUT PUSHORT Off, 455 IN OUT PULONG Length); 456 457typedef VP_STATUS 458(NTAPI *PINT10_FREE_BUFFER)( 459 IN PVOID Context, 460 IN USHORT Seg, 461 IN USHORT Off); 462 463typedef VP_STATUS 464(NTAPI *PINT10_READ_MEMORY)( 465 IN PVOID Context, 466 IN USHORT Seg, 467 IN USHORT Off, 468 OUT PVOID Buffer, 469 IN ULONG Length); 470 471typedef VP_STATUS 472(NTAPI *PINT10_WRITE_MEMORY)( 473 IN PVOID Context, 474 IN USHORT Seg, 475 IN USHORT Off, 476 IN PVOID Buffer, 477 IN ULONG Length); 478 479typedef VP_STATUS 480(NTAPI *PROTECT_WC_MEMORY)( 481 IN PVOID Context, 482 IN PVOID HwDeviceExtension); 483 484typedef VP_STATUS 485(NTAPI *RESTORE_WC_MEMORY)( 486 IN PVOID Context, 487 IN PVOID HwDeviceExtension); 488 489typedef enum _VIDEO_DEVICE_DATA_TYPE { 490 VpMachineData = 0, 491 VpCmosData, 492 VpBusData, 493 VpControllerData, 494 VpMonitorData 495} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; 496 497typedef VP_STATUS 498(NTAPI *PMINIPORT_QUERY_DEVICE_ROUTINE)( 499 IN PVOID HwDeviceExtension, 500 IN PVOID Context, 501 IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, 502 IN PVOID Identifier, 503 IN ULONG IdentifierLength, 504 IN PVOID ConfigurationData, 505 IN ULONG ConfigurationDataLength, 506 IN OUT PVOID ComponentInformation, 507 IN ULONG ComponentInformationLength); 508 509typedef VP_STATUS 510(NTAPI *PMINIPORT_GET_REGISTRY_ROUTINE)( 511 IN PVOID HwDeviceExtension, 512 IN PVOID Context, 513 IN OUT PWSTR ValueName, 514 IN OUT PVOID ValueData, 515 IN ULONG ValueLength); 516 517typedef VOID 518(NTAPI *PMINIPORT_DPC_ROUTINE)( 519 IN PVOID HwDeviceExtension, 520 IN PVOID Context); 521 522typedef BOOLEAN 523(NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( 524 IN PVOID Context); 525 526typedef VOID 527(NTAPI *PVIDEO_BUGCHECK_CALLBACK)( 528 IN PVOID HwDeviceExtension, 529 IN ULONG BugcheckCode, 530 IN PUCHAR Buffer, 531 IN ULONG BufferSize); 532 533/* VideoPortSynchronizeExecution.Priority constants */ 534typedef enum VIDEO_SYNCHRONIZE_PRIORITY { 535 VpLowPriority = 0, 536 VpMediumPriority, 537 VpHighPriority 538} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; 539 540/* VideoPortAllocatePool.PoolType constants */ 541typedef enum _VP_POOL_TYPE { 542 VpNonPagedPool = 0, 543 VpPagedPool, 544 VpNonPagedPoolCacheAligned = 4, 545 VpPagedPoolCacheAligned 546} VP_POOL_TYPE, *PVP_POOL_TYPE; 547 548typedef enum _DMA_FLAGS { 549 VideoPortUnlockAfterDma = 1, 550 VideoPortKeepPagesLocked, 551 VideoPortDmaInitOnly 552} DMA_FLAGS; 553 554/* 555 * Data returned with VpControllerData. 556 * 557 * The first two fields, InterfaceType and BusNumber, are common 558 * with the CM_FULL_RESOURCE_DESCRIPTOR header. 559 * The other fields are of legacy layout, instead of the newer 560 * CM_PARTIAL_RESOURCE_LIST one. 561 */ 562typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { 563 INTERFACE_TYPE InterfaceType; 564 ULONG BusNumber; 565 USHORT Version; 566 USHORT Revision; 567 USHORT Irql; 568 USHORT Vector; 569 ULONG ControlBase; 570 ULONG ControlSize; 571 ULONG CursorBase; 572 ULONG CursorSize; 573 ULONG FrameBase; 574 ULONG FrameSize; 575} VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA; 576 577typedef struct _VIDEO_X86_BIOS_ARGUMENTS { 578 ULONG Eax; 579 ULONG Ebx; 580 ULONG Ecx; 581 ULONG Edx; 582 ULONG Esi; 583 ULONG Edi; 584 ULONG Ebp; 585} VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS; 586 587typedef enum VIDEO_DEBUG_LEVEL { 588 Error = 0, 589 Warn, 590 Trace, 591 Info 592} VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; 593 594#ifndef _NTOS_ 595 596typedef VP_STATUS 597(NTAPI *PDRIVER_IO_PORT_UCHAR)( 598 IN ULONG_PTR Context, 599 IN ULONG Port, 600 IN UCHAR AccessMode, 601 IN PUCHAR Data); 602 603typedef VP_STATUS 604(NTAPI *PDRIVER_IO_PORT_UCHAR_STRING)( 605 IN ULONG_PTR Context, 606 IN ULONG Port, 607 IN UCHAR AccessMode, 608 IN PUCHAR Data, 609 IN ULONG DataLength); 610 611typedef VP_STATUS 612(NTAPI *PDRIVER_IO_PORT_ULONG)( 613 IN ULONG_PTR Context, 614 IN ULONG Port, 615 IN UCHAR AccessMode, 616 IN PULONG Data); 617 618typedef VP_STATUS 619(NTAPI *PDRIVER_IO_PORT_ULONG_STRING)( 620 IN ULONG_PTR Context, 621 IN ULONG Port, 622 IN UCHAR AccessMode, 623 IN PULONG Data, 624 IN ULONG DataLength); 625 626typedef VP_STATUS 627(NTAPI *PDRIVER_IO_PORT_USHORT)( 628 IN ULONG_PTR Context, 629 IN ULONG Port, 630 IN UCHAR AccessMode, 631 IN PUSHORT Data); 632 633typedef VP_STATUS 634(NTAPI *PDRIVER_IO_PORT_USHORT_STRING)( 635 IN ULONG_PTR Context, 636 IN ULONG Port, 637 IN UCHAR AccessMode, 638 IN PUSHORT Data, 639 IN ULONG DataLength); 640 641#endif /* _NTOS_ */ 642 643typedef struct __VRB_SG { 644 __int64 PhysicalAddress; 645 ULONG Length; 646} VRB_SG, *PVRB_SG; 647 648typedef enum _VP_LOCK_OPERATION { 649 VpReadAccess = 0, 650 VpWriteAccess, 651 VpModifyAccess 652} VP_LOCK_OPERATION; 653 654typedef struct _VP_DEVICE_DESCRIPTION { 655 BOOLEAN ScatterGather; 656 BOOLEAN Dma32BitAddresses; 657 BOOLEAN Dma64BitAddresses; 658 ULONG MaximumLength; 659} VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; 660 661typedef struct _VIDEO_CHILD_STATE { 662 ULONG Id; 663 ULONG State; 664} VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE; 665 666typedef struct _VIDEO_CHILD_STATE_CONFIGURATION { 667 ULONG Count; 668 VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY]; 669} VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION; 670 671typedef struct _VIDEO_HW_INITIALIZATION_DATA { 672 ULONG HwInitDataSize; 673 INTERFACE_TYPE AdapterInterfaceType; 674 PVIDEO_HW_FIND_ADAPTER HwFindAdapter; 675 PVIDEO_HW_INITIALIZE HwInitialize; 676 PVIDEO_HW_INTERRUPT HwInterrupt; 677 PVIDEO_HW_START_IO HwStartIO; 678 ULONG HwDeviceExtensionSize; 679 ULONG StartingDeviceNumber; 680 PVIDEO_HW_RESET_HW HwResetHw; 681 PVIDEO_HW_TIMER HwTimer; 682 PVIDEO_HW_START_DMA HwStartDma; 683 PVIDEO_HW_POWER_SET HwSetPowerState; 684 PVIDEO_HW_POWER_GET HwGetPowerState; 685 PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor; 686 PVIDEO_HW_QUERY_INTERFACE HwQueryInterface; 687 ULONG HwChildDeviceExtensionSize; 688 PVIDEO_ACCESS_RANGE HwLegacyResourceList; 689 ULONG HwLegacyResourceCount; 690 PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources; 691 BOOLEAN AllowEarlyEnumeration; 692 ULONG Reserved; 693} VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA; 694 695typedef struct _I2C_FNC_TABLE { 696 IN ULONG Size; 697 IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; 698 IN PVIDEO_WRITE_DATA_LINE WriteDataLine; 699 IN PVIDEO_READ_CLOCK_LINE ReadClockLine; 700 IN PVIDEO_READ_DATA_LINE ReadDataLine; 701 IN PVIDEO_WAIT_VSYNC_ACTIVE WaitVsync; 702 PVOID Reserved; 703} I2C_FNC_TABLE, *PI2C_FNC_TABLE; 704 705typedef struct _DDC_CONTROL { 706 IN ULONG Size; 707 IN I2C_CALLBACKS I2CCallbacks; 708 IN UCHAR EdidSegment; 709} DDC_CONTROL, *PDDC_CONTROL; 710 711/* VideoPortQueryServices.ServicesType constants */ 712typedef enum _VIDEO_PORT_SERVICES { 713 VideoPortServicesAGP = 1, 714 VideoPortServicesI2C, 715 VideoPortServicesHeadless, 716 VideoPortServicesInt10, 717 VideoPortServicesDebugReport, 718 VideoPortServicesWCMemoryProtection 719} VIDEO_PORT_SERVICES; 720 721typedef struct _VIDEO_PORT_AGP_INTERFACE { 722 SHORT Size; 723 SHORT Version; 724 PVOID Context; 725 PINTERFACE_REFERENCE InterfaceReference; 726 PINTERFACE_DEREFERENCE InterfaceDereference; 727 PAGP_RESERVE_PHYSICAL AgpReservePhysical; 728 PAGP_RELEASE_PHYSICAL AgpReleasePhysical; 729 PAGP_COMMIT_PHYSICAL AgpCommitPhysical; 730 PAGP_FREE_PHYSICAL AgpFreePhysical; 731 PAGP_RESERVE_VIRTUAL AgpReserveVirtual; 732 PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; 733 PAGP_COMMIT_VIRTUAL AgpCommitVirtual; 734 PAGP_FREE_VIRTUAL AgpFreeVirtual; 735 ULONGLONG AgpAllocationLimit; 736} VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE; 737 738typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { 739 IN USHORT Size; 740 IN USHORT Version; 741 OUT PVOID Context; 742 OUT PINTERFACE_REFERENCE InterfaceReference; 743 OUT PINTERFACE_DEREFERENCE InterfaceDereference; 744 OUT PAGP_RESERVE_PHYSICAL AgpReservePhysical; 745 OUT PAGP_RELEASE_PHYSICAL AgpReleasePhysical; 746 OUT PAGP_COMMIT_PHYSICAL AgpCommitPhysical; 747 OUT PAGP_FREE_PHYSICAL AgpFreePhysical; 748 OUT PAGP_RESERVE_VIRTUAL AgpReserveVirtual; 749 OUT PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; 750 OUT PAGP_COMMIT_VIRTUAL AgpCommitVirtual; 751 OUT PAGP_FREE_VIRTUAL AgpFreeVirtual; 752 OUT ULONGLONG AgpAllocationLimit; 753 OUT PAGP_SET_RATE AgpSetRate; 754} VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2; 755 756typedef struct _VIDEO_PORT_I2C_INTERFACE { 757 USHORT Size; 758 USHORT Version; 759 PVOID Context; 760 PINTERFACE_REFERENCE InterfaceReference; 761 PINTERFACE_DEREFERENCE InterfaceDereference; 762 PI2C_START I2CStart; 763 PI2C_STOP I2CStop; 764 PI2C_WRITE I2CWrite; 765 PI2C_READ I2CRead; 766} VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE; 767 768typedef struct _VIDEO_PORT_I2C_INTERFACE_2 { 769 IN USHORT Size; 770 IN USHORT Version; 771 OUT PVOID Context; 772 OUT PINTERFACE_REFERENCE InterfaceReference; 773 OUT PINTERFACE_DEREFERENCE InterfaceDereference; 774 OUT PI2C_START_2 I2CStart; 775 OUT PI2C_STOP_2 I2CStop; 776 OUT PI2C_WRITE_2 I2CWrite; 777 OUT PI2C_READ_2 I2CRead; 778} VIDEO_PORT_I2C_INTERFACE_2, *PVIDEO_PORT_I2C_INTERFACE_2; 779 780typedef struct _VIDEO_PORT_INT10_INTERFACE { 781 IN USHORT Size; 782 IN USHORT Version; 783 OUT PVOID Context; 784 OUT PINTERFACE_REFERENCE InterfaceReference; 785 OUT PINTERFACE_DEREFERENCE InterfaceDereference; 786 OUT PINT10_ALLOCATE_BUFFER Int10AllocateBuffer; 787 OUT PINT10_FREE_BUFFER Int10FreeBuffer; 788 OUT PINT10_READ_MEMORY Int10ReadMemory; 789 OUT PINT10_WRITE_MEMORY Int10WriteMemory; 790 OUT PINT10_CALL_BIOS Int10CallBios; 791} VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE; 792 793typedef struct _VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE { 794 IN USHORT Size; 795 IN USHORT Version; 796 OUT PVOID Context; 797 OUT PINTERFACE_REFERENCE InterfaceReference; 798 OUT PINTERFACE_DEREFERENCE InterfaceDereference; 799 OUT PROTECT_WC_MEMORY VideoPortProtectWCMemory; 800 OUT RESTORE_WC_MEMORY VideoPortRestoreWCMemory; 801} VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE, *PVIDEO_PORT_WCMEMORYPROTECTION_INTERFACE; 802 803typedef struct _VPOSVERSIONINFO { 804 IN ULONG Size; 805 OUT ULONG MajorVersion; 806 OUT ULONG MinorVersion; 807 OUT ULONG BuildNumber; 808 OUT USHORT ServicePackMajor; 809 OUT USHORT ServicePackMinor; 810} VPOSVERSIONINFO, *PVPOSVERSIONINFO; 811 812typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE { 813 IN USHORT Size; 814 IN USHORT Version; 815 OUT PVOID Context; 816 OUT PINTERFACE_REFERENCE InterfaceReference; 817 OUT PINTERFACE_DEREFERENCE InterfaceDereference; 818 OUT PVIDEO_DEBUG_REPORT (*DbgReportCreate)( 819 IN PVOID HwDeviceExtension, 820 IN ULONG ulCode, 821 IN ULONG_PTR ulpArg1, 822 IN ULONG_PTR ulpArg2, 823 IN ULONG_PTR ulpArg3, 824 IN ULONG_PTR ulpArg4 825 ); 826 OUT BOOLEAN (*DbgReportSecondaryData)( 827 IN OUT PVIDEO_DEBUG_REPORT pReport, 828 IN PVOID pvData, 829 IN ULONG ulDataSize 830 ); 831 OUT VOID (*DbgReportComplete)( 832 IN OUT PVIDEO_DEBUG_REPORT pReport 833 ); 834} VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE; 835 836/* Video port functions for miniports */ 837 838VPAPI 839VP_STATUS 840NTAPI 841VideoPortAllocateBuffer( 842 IN PVOID HwDeviceExtension, 843 IN ULONG Size, 844 OUT PVOID *Buffer); 845 846VPAPI 847VOID 848NTAPI 849VideoPortAcquireDeviceLock( 850 IN PVOID HwDeviceExtension); 851 852VPAPI 853ULONG 854NTAPI 855VideoPortCompareMemory( 856 IN PVOID Source1, 857 IN PVOID Source2, 858 IN SIZE_T Length); 859 860VPAPI 861BOOLEAN 862NTAPI 863VideoPortDDCMonitorHelper( 864 IN PVOID HwDeviceExtension, 865 IN PVOID DDCControl, 866 IN OUT PUCHAR EdidBuffer, 867 IN ULONG EdidBufferSize); 868 869VPAPI 870VOID 871__cdecl 872VideoPortDebugPrint( 873 IN VIDEO_DEBUG_LEVEL DebugPrintLevel, 874 IN PSTR DebugMessage, 875 IN ...); 876 877VPAPI 878VP_STATUS 879NTAPI 880VideoPortDisableInterrupt( 881 IN PVOID HwDeviceExtension); 882 883VPAPI 884VP_STATUS 885NTAPI 886VideoPortEnableInterrupt( 887 IN PVOID HwDeviceExtension); 888 889VPAPI 890VP_STATUS 891NTAPI 892VideoPortEnumerateChildren( 893 IN PVOID HwDeviceExtension, 894 IN PVOID Reserved); 895 896VPAPI 897VOID 898NTAPI 899VideoPortFreeDeviceBase( 900 IN PVOID HwDeviceExtension, 901 IN PVOID MappedAddress); 902 903VPAPI 904VP_STATUS 905NTAPI 906VideoPortGetAccessRanges( 907 _In_ PVOID HwDeviceExtension, 908 _In_opt_ ULONG NumRequestedResources, 909 _In_reads_opt_(NumRequestedResources) 910 PIO_RESOURCE_DESCRIPTOR RequestedResources, 911 _In_ ULONG NumAccessRanges, 912 _Out_writes_(NumAccessRanges) PVIDEO_ACCESS_RANGE AccessRanges, 913 _In_ PVOID VendorId, 914 _In_ PVOID DeviceId, 915 _Out_ PULONG Slot); 916 917VPAPI 918PVOID 919NTAPI 920VideoPortGetAssociatedDeviceExtension( 921 IN PVOID DeviceObject); 922 923VPAPI 924ULONG 925NTAPI 926VideoPortGetBusData( 927 IN PVOID HwDeviceExtension, 928 IN BUS_DATA_TYPE BusDataType, 929 IN ULONG SlotNumber, 930 IN OUT PVOID Buffer, 931 IN ULONG Offset, 932 IN ULONG Length); 933 934VPAPI 935UCHAR 936NTAPI 937VideoPortGetCurrentIrql(VOID); 938 939VPAPI 940PVOID 941NTAPI 942VideoPortGetDeviceBase( 943 IN PVOID HwDeviceExtension, 944 IN PHYSICAL_ADDRESS IoAddress, 945 IN ULONG NumberOfUchars, 946 IN UCHAR InIoSpace); 947 948VPAPI 949VP_STATUS 950NTAPI 951VideoPortGetDeviceData( 952 IN PVOID HwDeviceExtension, 953 IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, 954 IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, 955 IN PVOID Context); 956 957VPAPI 958VP_STATUS 959NTAPI 960VideoPortGetRegistryParameters( 961 IN PVOID HwDeviceExtension, 962 IN PWSTR ParameterName, 963 IN UCHAR IsParameterFileName, 964 IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, 965 IN PVOID Context); 966 967VPAPI 968PVOID 969NTAPI 970VideoPortGetRomImage( 971 IN PVOID HwDeviceExtension, 972 IN PVOID Unused1, 973 IN ULONG Unused2, 974 IN ULONG Length); 975 976VPAPI 977VP_STATUS 978NTAPI 979VideoPortGetVgaStatus( 980 IN PVOID HwDeviceExtension, 981 OUT PULONG VgaStatus); 982 983VPAPI 984LONG 985FASTCALL 986VideoPortInterlockedDecrement( 987 IN PLONG Addend); 988 989VPAPI 990LONG 991FASTCALL 992VideoPortInterlockedExchange( 993 IN OUT PLONG Target, 994 IN LONG Value); 995 996VPAPI 997LONG 998FASTCALL 999VideoPortInterlockedIncrement( 1000 IN PLONG Addend); 1001 1002VPAPI 1003ULONG 1004NTAPI 1005VideoPortInitialize( 1006 IN PVOID Argument1, 1007 IN PVOID Argument2, 1008 IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, 1009 IN PVOID HwContext); 1010 1011VPAPI 1012VP_STATUS 1013NTAPI 1014VideoPortInt10( 1015 IN PVOID HwDeviceExtension, 1016 IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); 1017 1018VPAPI 1019VOID 1020NTAPI 1021VideoPortLogError( 1022 IN PVOID HwDeviceExtension, 1023 IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, 1024 IN VP_STATUS ErrorCode, 1025 IN ULONG UniqueId); 1026 1027VPAPI 1028VP_STATUS 1029NTAPI 1030VideoPortMapBankedMemory( 1031 IN PVOID HwDeviceExtension, 1032 IN PHYSICAL_ADDRESS PhysicalAddress, 1033 IN OUT PULONG Length, 1034 PULONG InIoSpace, 1035 PVOID *VirtualAddress, 1036 ULONG BankLength, 1037 UCHAR ReadWriteBank, 1038 PBANKED_SECTION_ROUTINE BankRoutine, 1039 PVOID Context); 1040 1041VPAPI 1042VP_STATUS 1043NTAPI 1044VideoPortMapMemory( 1045 IN PVOID HwDeviceExtension, 1046 IN PHYSICAL_ADDRESS PhysicalAddress, 1047 IN OUT PULONG Length, 1048 IN PULONG InIoSpace, 1049 IN OUT PVOID *VirtualAddress); 1050 1051VPAPI 1052VOID 1053NTAPI 1054VideoPortMoveMemory( 1055 IN PVOID Destination, 1056 IN PVOID Source, 1057 IN ULONG Length); 1058 1059VPAPI 1060LONGLONG 1061NTAPI 1062VideoPortQueryPerformanceCounter( 1063 IN PVOID HwDeviceExtension, 1064 OUT PLONGLONG PerformanceFrequency OPTIONAL); 1065 1066VPAPI 1067VP_STATUS 1068NTAPI 1069VideoPortQueryServices( 1070 _In_ PVOID HwDeviceExtension, 1071 _In_ VIDEO_PORT_SERVICES ServicesType, 1072 _Inout_ PINTERFACE Interface); 1073 1074VPAPI 1075BOOLEAN 1076NTAPI 1077VideoPortQueueDpc( 1078 IN PVOID HwDeviceExtension, 1079 IN PMINIPORT_DPC_ROUTINE CallbackRoutine, 1080 IN PVOID Context); 1081 1082VPAPI 1083VOID 1084NTAPI 1085VideoPortReadPortBufferUchar( 1086 IN PUCHAR Port, 1087 OUT PUCHAR Buffer, 1088 IN ULONG Count); 1089 1090VPAPI 1091VOID 1092NTAPI 1093VideoPortReadPortBufferUlong( 1094 IN PULONG Port, 1095 OUT PULONG Buffer, 1096 IN ULONG Count); 1097 1098VPAPI 1099VOID 1100NTAPI 1101VideoPortReadPortBufferUshort( 1102 IN PUSHORT Port, 1103 OUT PUSHORT Buffer, 1104 IN ULONG Count); 1105 1106VPAPI 1107UCHAR 1108NTAPI 1109VideoPortReadPortUchar( 1110 IN PUCHAR Port); 1111 1112VPAPI 1113ULONG 1114NTAPI 1115VideoPortReadPortUlong( 1116 IN PULONG Port); 1117 1118VPAPI 1119USHORT 1120NTAPI 1121VideoPortReadPortUshort( 1122 IN PUSHORT Port); 1123 1124VPAPI 1125VOID 1126NTAPI 1127VideoPortReadRegisterBufferUchar( 1128 IN PUCHAR Register, 1129 OUT PUCHAR Buffer, 1130 IN ULONG Count); 1131 1132VPAPI 1133VOID 1134NTAPI 1135VideoPortReadRegisterBufferUlong( 1136 IN PULONG Register, 1137 OUT PULONG Buffer, 1138 IN ULONG Count); 1139 1140VPAPI 1141VOID 1142NTAPI 1143VideoPortReadRegisterBufferUshort( 1144 IN PUSHORT Register, 1145 OUT PUSHORT Buffer, 1146 IN ULONG Count); 1147 1148VPAPI 1149UCHAR 1150NTAPI 1151VideoPortReadRegisterUchar( 1152 IN PUCHAR Register); 1153 1154VPAPI 1155ULONG 1156NTAPI 1157VideoPortReadRegisterUlong( 1158 IN PULONG Register); 1159 1160VPAPI 1161USHORT 1162NTAPI 1163VideoPortReadRegisterUshort( 1164 IN PUSHORT Register); 1165 1166VPAPI 1167VOID 1168NTAPI 1169VideoPortReleaseBuffer( 1170 IN PVOID HwDeviceExtension, 1171 IN PVOID Buffer); 1172 1173VPAPI 1174VOID 1175NTAPI 1176VideoPortReleaseDeviceLock( 1177 IN PVOID HwDeviceExtension); 1178 1179VPAPI 1180BOOLEAN 1181NTAPI 1182VideoPortScanRom( 1183 PVOID HwDeviceExtension, 1184 PUCHAR RomBase, 1185 ULONG RomLength, 1186 PUCHAR String); 1187 1188VPAPI 1189ULONG 1190NTAPI 1191VideoPortSetBusData( 1192 IN PVOID HwDeviceExtension, 1193 IN BUS_DATA_TYPE BusDataType, 1194 IN ULONG SlotNumber, 1195 IN PVOID Buffer, 1196 IN ULONG Offset, 1197 IN ULONG Length); 1198 1199VPAPI 1200VP_STATUS 1201NTAPI 1202VideoPortSetRegistryParameters( 1203 IN PVOID HwDeviceExtension, 1204 IN PWSTR ValueName, 1205 IN PVOID ValueData, 1206 IN ULONG ValueLength); 1207 1208VPAPI 1209VP_STATUS 1210NTAPI 1211VideoPortSetTrappedEmulatorPorts( 1212 IN PVOID HwDeviceExtension, 1213 IN ULONG NumAccessRanges, 1214 IN PVIDEO_ACCESS_RANGE AccessRange); 1215 1216VPAPI 1217VOID 1218NTAPI 1219VideoPortStallExecution( 1220 IN ULONG Microseconds); 1221 1222VPAPI 1223VOID 1224NTAPI 1225VideoPortStartTimer( 1226 IN PVOID HwDeviceExtension); 1227 1228VPAPI 1229VOID 1230NTAPI 1231VideoPortStopTimer( 1232 IN PVOID HwDeviceExtension); 1233 1234VPAPI 1235BOOLEAN 1236NTAPI 1237VideoPortSynchronizeExecution( 1238 IN PVOID HwDeviceExtension, 1239 IN VIDEO_SYNCHRONIZE_PRIORITY Priority, 1240 IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, 1241 IN PVOID Context); 1242 1243VPAPI 1244VP_STATUS 1245NTAPI 1246VideoPortUnmapMemory( 1247 IN PVOID HwDeviceExtension, 1248 IN OUT PVOID VirtualAddress, 1249 IN HANDLE ProcessHandle); 1250 1251VPAPI 1252VP_STATUS 1253NTAPI 1254VideoPortVerifyAccessRanges( 1255 _In_ PVOID HwDeviceExtension, 1256 _In_opt_ ULONG NumAccessRanges, 1257 _In_reads_opt_(NumAccessRanges) PVIDEO_ACCESS_RANGE AccessRanges); 1258 1259VPAPI 1260VOID 1261NTAPI 1262VideoPortWritePortBufferUchar( 1263 IN PUCHAR Port, 1264 IN PUCHAR Buffer, 1265 IN ULONG Count); 1266 1267VPAPI 1268VOID 1269NTAPI 1270VideoPortWritePortBufferUlong( 1271 IN PULONG Port, 1272 IN PULONG Buffer, 1273 IN ULONG Count); 1274 1275VPAPI 1276VOID 1277NTAPI 1278VideoPortWritePortBufferUshort( 1279 IN PUSHORT Port, 1280 IN PUSHORT Buffer, 1281 IN ULONG Count); 1282 1283VPAPI 1284VOID 1285NTAPI 1286VideoPortWritePortUchar( 1287 IN PUCHAR Port, 1288 IN UCHAR Value); 1289 1290VPAPI 1291VOID 1292NTAPI 1293VideoPortWritePortUlong( 1294 IN PULONG Port, 1295 IN ULONG Value); 1296 1297VPAPI 1298VOID 1299NTAPI 1300VideoPortWritePortUshort( 1301 IN PUSHORT Port, 1302 IN USHORT Value); 1303 1304VPAPI 1305VOID 1306NTAPI 1307VideoPortWriteRegisterBufferUchar( 1308 IN PUCHAR Register, 1309 IN PUCHAR Buffer, 1310 IN ULONG Count); 1311 1312VPAPI 1313VOID 1314NTAPI 1315VideoPortWriteRegisterBufferUlong( 1316 IN PULONG Register, 1317 IN PULONG Buffer, 1318 IN ULONG Count); 1319 1320VPAPI 1321VOID 1322NTAPI 1323VideoPortWriteRegisterBufferUshort( 1324 IN PUSHORT Register, 1325 IN PUSHORT Buffer, 1326 IN ULONG Count); 1327 1328VPAPI 1329VOID 1330NTAPI 1331VideoPortWriteRegisterUchar( 1332 IN PUCHAR Register, 1333 IN UCHAR Value); 1334 1335VPAPI 1336VOID 1337NTAPI 1338VideoPortWriteRegisterUlong( 1339 IN PULONG Register, 1340 IN ULONG Value); 1341 1342VPAPI 1343VOID 1344NTAPI 1345VideoPortWriteRegisterUshort( 1346 IN PUSHORT Register, 1347 IN USHORT Value); 1348 1349VPAPI 1350VOID 1351NTAPI 1352VideoPortZeroDeviceMemory( 1353 IN PVOID Destination, 1354 IN ULONG Length); 1355 1356VPAPI 1357VOID 1358NTAPI 1359VideoPortZeroMemory( 1360 IN PVOID Destination, 1361 IN ULONG Length); 1362 1363VPAPI 1364PVOID 1365NTAPI 1366VideoPortAllocateContiguousMemory( 1367 IN PVOID HwDeviceExtension, 1368 IN ULONG NumberOfBytes, 1369 IN PHYSICAL_ADDRESS HighestAcceptableAddress); 1370 1371VPAPI 1372PVOID 1373NTAPI 1374VideoPortGetCommonBuffer( 1375 IN PVOID HwDeviceExtension, 1376 IN ULONG DesiredLength, 1377 IN ULONG Alignment, 1378 OUT PPHYSICAL_ADDRESS LogicalAddress, 1379 OUT PULONG pActualLength, 1380 IN BOOLEAN CacheEnabled); 1381 1382VPAPI 1383VOID 1384NTAPI 1385VideoPortFreeCommonBuffer( 1386 IN PVOID HwDeviceExtension, 1387 IN ULONG Length, 1388 IN PVOID VirtualAddress, 1389 IN PHYSICAL_ADDRESS LogicalAddress, 1390 IN BOOLEAN CacheEnabled); 1391 1392VPAPI 1393PDMA 1394NTAPI 1395VideoPortDoDma( 1396 IN PVOID HwDeviceExtension, 1397 IN PDMA pDma, 1398 IN DMA_FLAGS DmaFlags); 1399 1400VPAPI 1401BOOLEAN 1402NTAPI 1403VideoPortLockPages( 1404 IN PVOID HwDeviceExtension, 1405 IN OUT PVIDEO_REQUEST_PACKET pVrp, 1406 IN OUT PEVENT pUEvent, 1407 IN PEVENT pDisplayEvent, 1408 IN DMA_FLAGS DmaFlags); 1409 1410VPAPI 1411BOOLEAN 1412NTAPI 1413VideoPortUnlockPages( 1414 IN PVOID hwDeviceExtension, 1415 IN OUT PDMA pDma); 1416 1417VPAPI 1418BOOLEAN 1419NTAPI 1420VideoPortSignalDmaComplete( 1421 IN PVOID HwDeviceExtension, 1422 IN PDMA pDmaHandle); 1423 1424VPAPI 1425PVOID 1426NTAPI 1427VideoPortGetMdl( 1428 IN PVOID HwDeviceExtension, 1429 IN PDMA pDma); 1430 1431VPAPI 1432PVOID 1433NTAPI 1434VideoPortGetDmaContext( 1435 IN PVOID HwDeviceExtension, 1436 IN PDMA pDma); 1437 1438VPAPI 1439VOID 1440NTAPI 1441VideoPortSetDmaContext( 1442 IN PVOID HwDeviceExtension, 1443 OUT PDMA pDma, 1444 IN PVOID InstanceContext); 1445 1446VPAPI 1447ULONG 1448NTAPI 1449VideoPortGetBytesUsed( 1450 IN PVOID HwDeviceExtension, 1451 IN PDMA pDma); 1452 1453VPAPI 1454VOID 1455NTAPI 1456VideoPortSetBytesUsed( 1457 IN PVOID HwDeviceExtension, 1458 IN OUT PDMA pDma, 1459 IN ULONG BytesUsed); 1460 1461VPAPI 1462PDMA 1463NTAPI 1464VideoPortAssociateEventsWithDmaHandle( 1465 IN PVOID HwDeviceExtension, 1466 IN OUT PVIDEO_REQUEST_PACKET pVrp, 1467 IN PVOID MappedUserEvent, 1468 IN PVOID DisplayDriverEvent); 1469 1470VPAPI 1471PDMA 1472NTAPI 1473VideoPortMapDmaMemory( 1474 IN PVOID HwDeviceExtension, 1475 IN PVIDEO_REQUEST_PACKET pVrp, 1476 IN PHYSICAL_ADDRESS BoardAddress, 1477 IN PULONG Length, 1478 IN PULONG InIoSpace, 1479 IN PVOID MappedUserEvent, 1480 IN PVOID DisplayDriverEvent, 1481 IN OUT PVOID *VirtualAddress); 1482 1483VPAPI 1484BOOLEAN 1485NTAPI 1486VideoPortUnmapDmaMemory( 1487 IN PVOID HwDeviceExtension, 1488 IN PVOID VirtualAddress, 1489 IN HANDLE ProcessHandle, 1490 IN PDMA BoardMemoryHandle); 1491 1492VPAPI 1493VP_STATUS 1494NTAPI 1495VideoPortCreateSecondaryDisplay( 1496 IN PVOID HwDeviceExtension, 1497 IN OUT PVOID *SecondaryDeviceExtension, 1498 IN ULONG ulFlag); 1499 1500VPAPI 1501PVP_DMA_ADAPTER 1502NTAPI 1503VideoPortGetDmaAdapter( 1504 IN PVOID HwDeviceExtension, 1505 IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); 1506 1507VPAPI 1508VOID 1509NTAPI 1510VideoPortPutDmaAdapter( 1511 IN PVOID HwDeviceExtension, 1512 IN PVP_DMA_ADAPTER VpDmaAdapter); 1513 1514VPAPI 1515PVOID 1516NTAPI 1517VideoPortAllocateCommonBuffer( 1518 IN PVOID HwDeviceExtension, 1519 IN PVP_DMA_ADAPTER VpDmaAdapter, 1520 IN ULONG DesiredLength, 1521 OUT PPHYSICAL_ADDRESS LogicalAddress, 1522 IN BOOLEAN CacheEnabled, 1523 PVOID Reserved); 1524 1525VPAPI 1526VOID 1527NTAPI 1528VideoPortReleaseCommonBuffer( 1529 IN PVOID HwDeviceExtension, 1530 IN PVP_DMA_ADAPTER VpDmaAdapter, 1531 IN ULONG Length, 1532 IN PHYSICAL_ADDRESS LogicalAddress, 1533 IN PVOID VirtualAddress, 1534 IN BOOLEAN CacheEnabled); 1535 1536VPAPI 1537PVOID 1538NTAPI 1539VideoPortLockBuffer( 1540 IN PVOID HwDeviceExtension, 1541 IN PVOID BaseAddress, 1542 IN ULONG Length, 1543 IN VP_LOCK_OPERATION Operation); 1544 1545VPAPI 1546VOID 1547NTAPI 1548VideoPortUnlockBuffer( 1549 IN PVOID HwDeviceExtension, 1550 IN PVOID Mdl); 1551 1552VPAPI 1553VP_STATUS 1554NTAPI 1555VideoPortStartDma( 1556 IN PVOID HwDeviceExtension, 1557 IN PVP_DMA_ADAPTER VpDmaAdapter, 1558 IN PVOID Mdl, 1559 IN ULONG Offset, 1560 IN OUT PULONG pLength, 1561 IN PEXECUTE_DMA ExecuteDmaRoutine, 1562 IN PVOID Context, 1563 IN BOOLEAN WriteToDevice); 1564 1565VPAPI 1566VP_STATUS 1567NTAPI 1568VideoPortCompleteDma( 1569 IN PVOID HwDeviceExtension, 1570 IN PVP_DMA_ADAPTER VpDmaAdapter, 1571 IN PVP_SCATTER_GATHER_LIST VpScatterGather, 1572 IN BOOLEAN WriteToDevice); 1573 1574VPAPI 1575VP_STATUS 1576NTAPI 1577VideoPortCreateEvent( 1578 IN PVOID HwDeviceExtension, 1579 IN ULONG EventFlag, 1580 IN PVOID Unused, 1581 OUT PEVENT *ppEvent); 1582 1583VPAPI 1584VP_STATUS 1585NTAPI 1586VideoPortDeleteEvent( 1587 IN PVOID HwDeviceExtension, 1588 IN PEVENT pEvent); 1589 1590VPAPI 1591LONG 1592NTAPI 1593VideoPortSetEvent( 1594 IN PVOID HwDeviceExtension, 1595 IN PEVENT pEvent); 1596 1597VPAPI 1598VOID 1599NTAPI 1600VideoPortClearEvent( 1601 IN PVOID HwDeviceExtension, 1602 IN PEVENT pEvent); 1603 1604VPAPI 1605LONG 1606NTAPI 1607VideoPortReadStateEvent( 1608 IN PVOID HwDeviceExtension, 1609 IN PEVENT pEvent); 1610 1611VPAPI 1612VP_STATUS 1613NTAPI 1614VideoPortWaitForSingleObject( 1615 IN PVOID HwDeviceExtension, 1616 IN PVOID Object, 1617 IN PLARGE_INTEGER Timeout OPTIONAL); 1618 1619VPAPI 1620PVOID 1621NTAPI 1622VideoPortAllocatePool( 1623 IN PVOID HwDeviceExtension, 1624 IN VP_POOL_TYPE PoolType, 1625 IN SIZE_T NumberOfBytes, 1626 IN ULONG Tag); 1627 1628VPAPI 1629VOID 1630NTAPI 1631VideoPortFreePool( 1632 IN PVOID HwDeviceExtension, 1633 IN PVOID Ptr); 1634 1635VPAPI 1636VP_STATUS 1637NTAPI 1638VideoPortCreateSpinLock( 1639 IN PVOID HwDeviceExtension, 1640 OUT PSPIN_LOCK *SpinLock); 1641 1642VPAPI 1643VP_STATUS 1644NTAPI 1645VideoPortDeleteSpinLock( 1646 IN PVOID HwDeviceExtension, 1647 IN PSPIN_LOCK SpinLock); 1648 1649VPAPI 1650VOID 1651NTAPI 1652VideoPortAcquireSpinLock( 1653 IN PVOID HwDeviceExtension, 1654 IN PSPIN_LOCK SpinLock, 1655 OUT PUCHAR OldIrql); 1656 1657VPAPI 1658VOID 1659NTAPI 1660VideoPortAcquireSpinLockAtDpcLevel( 1661 IN PVOID HwDeviceExtension, 1662 IN PSPIN_LOCK SpinLock); 1663 1664VPAPI 1665VOID 1666NTAPI 1667VideoPortReleaseSpinLock( 1668 IN PVOID HwDeviceExtension, 1669 IN PSPIN_LOCK SpinLock, 1670 IN UCHAR NewIrql); 1671 1672VPAPI 1673VOID 1674NTAPI 1675VideoPortReleaseSpinLockFromDpcLevel( 1676 IN PVOID HwDeviceExtension, 1677 IN PSPIN_LOCK SpinLock); 1678 1679VPAPI 1680VOID 1681NTAPI 1682VideoPortQuerySystemTime( 1683 OUT PLARGE_INTEGER CurrentTime); 1684 1685VPAPI 1686BOOLEAN 1687NTAPI 1688VideoPortCheckForDeviceExistence( 1689 IN PVOID HwDeviceExtension, 1690 IN USHORT VendorId, 1691 IN USHORT DeviceId, 1692 IN UCHAR RevisionId, 1693 IN USHORT SubVendorId, 1694 IN USHORT SubSystemId, 1695 IN ULONG Flags); 1696 1697VPAPI 1698ULONG 1699NTAPI 1700VideoPortGetAssociatedDeviceID( 1701 IN PVOID DeviceObject); 1702 1703VPAPI 1704VP_STATUS 1705NTAPI 1706VideoPortFlushRegistry( 1707 PVOID HwDeviceExtension); 1708 1709VPAPI 1710VP_STATUS 1711NTAPI 1712VideoPortGetVersion( 1713 IN PVOID HwDeviceExtension, 1714 IN OUT PVPOSVERSIONINFO pVpOsVersionInfo); 1715 1716VPAPI 1717BOOLEAN 1718NTAPI 1719VideoPortIsNoVesa(VOID); 1720 1721VPAPI 1722VP_STATUS 1723NTAPI 1724VideoPortRegisterBugcheckCallback( 1725 IN PVOID HwDeviceExtension, 1726 IN ULONG BugcheckCode, 1727 IN PVIDEO_BUGCHECK_CALLBACK Callback, 1728 IN ULONG BugcheckDataSize); 1729 1730VPAPI 1731PVIDEO_DEBUG_REPORT 1732NTAPI 1733VideoPortDbgReportCreate( 1734 IN PVOID HwDeviceExtension, 1735 IN ULONG ulCode, 1736 IN ULONG_PTR ulpArg1, 1737 IN ULONG_PTR ulpArg2, 1738 IN ULONG_PTR ulpArg3, 1739 IN ULONG_PTR ulpArg4); 1740 1741VPAPI 1742BOOLEAN 1743NTAPI 1744VideoPortDbgReportSecondaryData( 1745 IN OUT PVIDEO_DEBUG_REPORT pReport, 1746 IN PVOID pvData, 1747 IN ULONG ulDataSize); 1748 1749VPAPI 1750VOID 1751NTAPI 1752VideoPortDbgReportComplete( 1753 IN OUT PVIDEO_DEBUG_REPORT pReport); 1754 1755#ifdef __cplusplus 1756} 1757#endif