Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
video.h
00001 /* 00002 * video.h 00003 * 00004 * Video port and miniport driver interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __VIDEO_H 00024 #define __VIDEO_H 00025 00026 00027 #if __GNUC__ >=3 00028 #pragma GCC system_header 00029 #endif 00030 00031 #ifdef __WINDDI_H 00032 #error winddi.h cannot be included with video.h 00033 #else 00034 00035 #ifdef __cplusplus 00036 extern "C" { 00037 #endif 00038 00039 #include "ntddk.h" 00040 00041 #if defined(_VIDEOPORT_) 00042 #define VPAPI DECLSPEC_EXPORT 00043 #else 00044 #define VPAPI DECLSPEC_IMPORT 00045 #endif 00046 00047 #include "videoagp.h" 00048 #include "ntddvdeo.h" 00049 00050 00051 typedef LONG VP_STATUS; 00052 typedef VP_STATUS *PVP_STATUS; 00053 typedef struct __DMA_PARAMETERS * PDMA; 00054 typedef struct _VIDEO_PORT_EVENT *PEVENT; 00055 typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; 00056 typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; 00057 00058 #define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF 00059 00060 #define EVENT_TYPE_MASK 1 00061 #define SYNCHRONIZATION_EVENT 0 00062 #define NOTIFICATION_EVENT 1 00063 00064 #define INITIAL_EVENT_STATE_MASK 2 00065 #define INITIAL_EVENT_NOT_SIGNALED 0 00066 #define INITIAL_EVENT_SIGNALED 2 00067 00068 typedef enum VIDEO_DEBUG_LEVEL { 00069 Error = 0, 00070 Warn, 00071 Trace, 00072 Info 00073 } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; 00074 00075 typedef enum { 00076 VideoPortUnlockAfterDma = 1, 00077 VideoPortKeepPagesLocked, 00078 VideoPortDmaInitOnly 00079 } DMA_FLAGS; 00080 00081 typedef enum _HW_DMA_RETURN { 00082 DmaAsyncReturn, 00083 DmaSyncReturn 00084 } HW_DMA_RETURN, *PHW_DMA_RETURN; 00085 00086 typedef HW_DMA_RETURN 00087 (*PVIDEO_HW_START_DMA)( 00088 PVOID HwDeviceExtension, 00089 PDMA pDma); 00090 00091 00092 #ifdef DBG 00093 00094 #define PAGED_CODE() \ 00095 if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) \ 00096 { \ 00097 VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \ 00098 ASSERT(FALSE); \ 00099 } 00100 00101 #else 00102 00103 #define PAGED_CODE() 00104 00105 #endif 00106 00107 typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { 00108 INTERFACE_TYPE InterfaceType; 00109 ULONG BusNumber; 00110 USHORT Version; 00111 USHORT Revision; 00112 USHORT Irql; 00113 USHORT Vector; 00114 ULONG ControlBase; 00115 ULONG ControlSize; 00116 ULONG CursorBase; 00117 ULONG CursorSize; 00118 ULONG FrameBase; 00119 ULONG FrameSize; 00120 } VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA; 00121 00122 #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO 0x42 00123 #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28 00124 #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50 00125 00126 typedef enum _VIDEO_DEVICE_DATA_TYPE { 00127 VpMachineData = 0, 00128 VpCmosData, 00129 VpBusData, 00130 VpControllerData, 00131 VpMonitorData 00132 } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; 00133 00134 00135 00136 /* Video miniport driver functions */ 00137 00138 typedef struct _VP_SCATTER_GATHER_ELEMENT { 00139 PHYSICAL_ADDRESS Address; 00140 ULONG Length; 00141 ULONG_PTR Reserved; 00142 } VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT; 00143 00144 typedef struct _VP_SCATTER_GATHER_LIST { 00145 ULONG NumberOfElements; 00146 ULONG_PTR Reserved; 00147 VP_SCATTER_GATHER_ELEMENT Elements[0]; 00148 } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; 00149 00150 typedef VOID DDKAPI 00151 (*PEXECUTE_DMA)( 00152 /*IN*/ PVOID HwDeviceExtension, 00153 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, 00154 /*IN*/ PVP_SCATTER_GATHER_LIST SGList, 00155 /*IN*/ PVOID Context); 00156 00157 typedef PVOID DDKAPI 00158 (*PVIDEO_PORT_GET_PROC_ADDRESS)( 00159 /*IN*/ PVOID HwDeviceExtension, 00160 /*IN*/ PUCHAR FunctionName); 00161 00162 typedef struct _VIDEO_PORT_CONFIG_INFO { 00163 ULONG Length; 00164 ULONG SystemIoBusNumber; 00165 INTERFACE_TYPE AdapterInterfaceType; 00166 ULONG BusInterruptLevel; 00167 ULONG BusInterruptVector; 00168 KINTERRUPT_MODE InterruptMode; 00169 ULONG NumEmulatorAccessEntries; 00170 PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries; 00171 ULONG_PTR EmulatorAccessEntriesContext; 00172 PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress; 00173 ULONG VdmPhysicalVideoMemoryLength; 00174 ULONG HardwareStateSize; 00175 ULONG DmaChannel; 00176 ULONG DmaPort; 00177 UCHAR DmaShareable; 00178 UCHAR InterruptShareable; 00179 BOOLEAN Master; 00180 DMA_WIDTH DmaWidth; 00181 DMA_SPEED DmaSpeed; 00182 BOOLEAN bMapBuffers; 00183 BOOLEAN NeedPhysicalAddresses; 00184 BOOLEAN DemandMode; 00185 ULONG MaximumTransferLength; 00186 ULONG NumberOfPhysicalBreaks; 00187 BOOLEAN ScatterGather; 00188 ULONG MaximumScatterGatherChunkSize; 00189 PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress; 00190 PWSTR DriverRegistryPath; 00191 ULONGLONG SystemMemorySize; 00192 } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; 00193 00194 typedef VP_STATUS DDKAPI 00195 (*PVIDEO_HW_FIND_ADAPTER)( 00196 /*IN*/ PVOID HwDeviceExtension, 00197 /*IN*/ PVOID HwContext, 00198 /*IN*/ PWSTR ArgumentString, 00199 /*IN OUT*/ PVIDEO_PORT_CONFIG_INFO ConfigInfo, 00200 /*OUT*/ PUCHAR Again); 00201 00202 typedef VP_STATUS DDKAPI 00203 (*PVIDEO_HW_POWER_GET)( 00204 /*IN*/ PVOID HwDeviceExtension, 00205 /*IN*/ ULONG HwId, 00206 /*IN OUT*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl); 00207 00208 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */ 00209 #define VIDEO_ENUM_MORE_DEVICES ERROR_CONTINUE 00210 #define VIDEO_ENUM_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES 00211 #define VIDEO_ENUM_INVALID_DEVICE ERROR_INVALID_NAME 00212 00213 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */ 00214 typedef struct _VIDEO_CHILD_ENUM_INFO { 00215 ULONG Size; 00216 ULONG ChildDescriptorSize; 00217 ULONG ChildIndex; 00218 ULONG ACPIHwId; 00219 PVOID ChildHwDeviceExtension; 00220 } VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO; 00221 00222 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */ 00223 typedef enum _VIDEO_CHILD_TYPE { 00224 Monitor = 1, 00225 NonPrimaryChip, 00226 VideoChip, 00227 Other 00228 } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; 00229 00230 typedef VP_STATUS DDKAPI 00231 (*PVIDEO_HW_GET_CHILD_DESCRIPTOR)( 00232 /*IN*/ PVOID HwDeviceExtension, 00233 /*IN*/ PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, 00234 /*OUT*/ PVIDEO_CHILD_TYPE VideoChildType, 00235 /*OUT*/ PUCHAR pChildDescriptor, 00236 /*OUT*/ PULONG UId, 00237 /*OUT*/ PULONG pUnused); 00238 00239 typedef BOOLEAN DDKAPI 00240 (*PVIDEO_HW_INITIALIZE)( 00241 /*IN*/ PVOID HwDeviceExtension); 00242 00243 typedef BOOLEAN DDKAPI 00244 (*PVIDEO_HW_INTERRUPT)( 00245 /*IN*/ PVOID HwDeviceExtension); 00246 00247 /* VIDEO_ACCESS_RANGE.RangePassive */ 00248 #define VIDEO_RANGE_PASSIVE_DECODE 1 00249 #define VIDEO_RANGE_10_BIT_DECODE 2 00250 00251 #ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */ 00252 #define VIDEO_ACCESS_RANGE_DEFINED 00253 typedef struct _VIDEO_ACCESS_RANGE { 00254 PHYSICAL_ADDRESS RangeStart; 00255 ULONG RangeLength; 00256 UCHAR RangeInIoSpace; 00257 UCHAR RangeVisible; 00258 UCHAR RangeShareable; 00259 UCHAR RangePassive; 00260 } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; 00261 #endif 00262 00263 typedef VOID DDKAPI 00264 (*PVIDEO_HW_LEGACYRESOURCES)( 00265 /*IN*/ ULONG VendorId, 00266 /*IN*/ ULONG DeviceId, 00267 /*IN OUT*/ PVIDEO_ACCESS_RANGE *LegacyResourceList, 00268 /*IN OUT*/ PULONG LegacyResourceCount); 00269 00270 typedef VP_STATUS DDKAPI 00271 (*PMINIPORT_QUERY_DEVICE_ROUTINE)( 00272 /*IN*/ PVOID HwDeviceExtension, 00273 /*IN*/ PVOID Context, 00274 /*IN*/ VIDEO_DEVICE_DATA_TYPE DeviceDataType, 00275 /*IN*/ PVOID Identifier, 00276 /*IN*/ ULONG IdentifierLength, 00277 /*IN*/ PVOID ConfigurationData, 00278 /*IN*/ ULONG ConfigurationDataLength, 00279 /*IN OUT*/ PVOID ComponentInformation, 00280 /*IN*/ ULONG ComponentInformationLength); 00281 00282 typedef struct _QUERY_INTERFACE { 00283 CONST GUID *InterfaceType; 00284 USHORT Size; 00285 USHORT Version; 00286 PINTERFACE Interface; 00287 PVOID InterfaceSpecificData; 00288 } QUERY_INTERFACE, *PQUERY_INTERFACE; 00289 00290 typedef VP_STATUS DDKAPI 00291 (*PVIDEO_HW_QUERY_INTERFACE)( 00292 /*IN*/ PVOID HwDeviceExtension, 00293 /*IN OUT*/ PQUERY_INTERFACE QueryInterface); 00294 00295 typedef VP_STATUS DDKAPI 00296 (*PMINIPORT_GET_REGISTRY_ROUTINE)( 00297 /*IN*/ PVOID HwDeviceExtension, 00298 /*IN*/ PVOID Context, 00299 /*IN OUT*/ PWSTR ValueName, 00300 /*IN OUT*/ PVOID ValueData, 00301 /*IN*/ ULONG ValueLength); 00302 00303 typedef BOOLEAN DDKAPI 00304 (*PVIDEO_HW_RESET_HW)( 00305 /*IN*/ PVOID HwDeviceExtension, 00306 /*IN*/ ULONG Columns, 00307 /*IN*/ ULONG Rows); 00308 00309 typedef VP_STATUS DDKAPI 00310 (*PVIDEO_HW_POWER_SET)( 00311 /*IN*/ PVOID HwDeviceExtension, 00312 /*IN*/ ULONG HwId, 00313 /*IN*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl); 00314 00315 typedef struct _STATUS_BLOCK { 00316 _ANONYMOUS_UNION union { 00317 VP_STATUS Status; 00318 PVOID Pointer; 00319 } DUMMYUNIONNAME; 00320 ULONG_PTR Information; 00321 } STATUS_BLOCK, *PSTATUS_BLOCK; 00322 00323 typedef struct _VIDEO_REQUEST_PACKET { 00324 ULONG IoControlCode; 00325 PSTATUS_BLOCK StatusBlock; 00326 PVOID InputBuffer; 00327 ULONG InputBufferLength; 00328 PVOID OutputBuffer; 00329 ULONG OutputBufferLength; 00330 } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; 00331 00332 typedef BOOLEAN DDKAPI 00333 (*PVIDEO_HW_START_IO)( 00334 /*IN*/ PVOID HwDeviceExtension, 00335 /*IN*/ PVIDEO_REQUEST_PACKET RequestPacket); 00336 00337 typedef BOOLEAN DDKAPI 00338 (*PMINIPORT_SYNCHRONIZE_ROUTINE)( 00339 /*IN*/ PVOID Context); 00340 00341 typedef VOID DDKAPI 00342 (*PVIDEO_HW_TIMER)( 00343 /*IN*/ PVOID HwDeviceExtension); 00344 00345 typedef VOID DDKAPI 00346 (*PMINIPORT_DPC_ROUTINE)( 00347 /*IN*/ PVOID HwDeviceExtension, 00348 /*IN*/ PVOID Context); 00349 00350 typedef VP_STATUS DDKAPI 00351 (*PDRIVER_IO_PORT_UCHAR)( 00352 /*IN*/ ULONG_PTR Context, 00353 /*IN*/ ULONG Port, 00354 /*IN*/ UCHAR AccessMode, 00355 /*IN*/ PUCHAR Data); 00356 00357 typedef VP_STATUS DDKAPI 00358 (*PDRIVER_IO_PORT_UCHAR_STRING)( 00359 /*IN*/ ULONG_PTR Context, 00360 /*IN*/ ULONG Port, 00361 /*IN*/ UCHAR AccessMode, 00362 /*IN*/ PUCHAR Data, 00363 /*IN*/ ULONG DataLength); 00364 00365 typedef VP_STATUS DDKAPI 00366 (*PDRIVER_IO_PORT_ULONG)( 00367 /*IN*/ ULONG_PTR Context, 00368 /*IN*/ ULONG Port, 00369 /*IN*/ UCHAR AccessMode, 00370 /*IN*/ PULONG Data); 00371 00372 typedef VP_STATUS DDKAPI 00373 (*PDRIVER_IO_PORT_ULONG_STRING)( 00374 /*IN*/ ULONG_PTR Context, 00375 /*IN*/ ULONG Port, 00376 /*IN*/ UCHAR AccessMode, 00377 /*IN*/ PULONG Data, 00378 /*IN*/ ULONG DataLength); 00379 00380 typedef VP_STATUS DDKAPI 00381 (*PDRIVER_IO_PORT_USHORT)( 00382 /*IN*/ ULONG_PTR Context, 00383 /*IN*/ ULONG Port, 00384 /*IN*/ UCHAR AccessMode, 00385 /*IN*/ PUSHORT Data); 00386 00387 typedef VP_STATUS DDKAPI 00388 (*PDRIVER_IO_PORT_USHORT_STRING)( 00389 /*IN*/ ULONG_PTR Context, 00390 /*IN*/ ULONG Port, 00391 /*IN*/ UCHAR AccessMode, 00392 /*IN*/ PUSHORT Data, 00393 /*IN*/ ULONG DataLength); 00394 00395 00396 00397 typedef struct _INT10_BIOS_ARGUMENTS { 00398 ULONG Eax; 00399 ULONG Ebx; 00400 ULONG Ecx; 00401 ULONG Edx; 00402 ULONG Esi; 00403 ULONG Edi; 00404 ULONG Ebp; 00405 USHORT SegDs; 00406 USHORT SegEs; 00407 } INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS; 00408 00409 typedef struct _VIDEO_CHILD_STATE { 00410 ULONG Id; 00411 ULONG State; 00412 } VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE; 00413 00414 typedef struct _VIDEO_CHILD_STATE_CONFIGURATION { 00415 ULONG Count; 00416 VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY]; 00417 } VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION; 00418 00419 typedef struct _VIDEO_HW_INITIALIZATION_DATA { 00420 ULONG HwInitDataSize; 00421 INTERFACE_TYPE AdapterInterfaceType; 00422 PVIDEO_HW_FIND_ADAPTER HwFindAdapter; 00423 PVIDEO_HW_INITIALIZE HwInitialize; 00424 PVIDEO_HW_INTERRUPT HwInterrupt; 00425 PVIDEO_HW_START_IO HwStartIO; 00426 ULONG HwDeviceExtensionSize; 00427 ULONG StartingDeviceNumber; 00428 PVIDEO_HW_RESET_HW HwResetHw; 00429 PVIDEO_HW_TIMER HwTimer; 00430 PVIDEO_HW_START_DMA HwStartDma; 00431 PVIDEO_HW_POWER_SET HwSetPowerState; 00432 PVIDEO_HW_POWER_GET HwGetPowerState; 00433 PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor; 00434 PVIDEO_HW_QUERY_INTERFACE HwQueryInterface; 00435 ULONG HwChildDeviceExtensionSize; 00436 PVIDEO_ACCESS_RANGE HwLegacyResourceList; 00437 ULONG HwLegacyResourceCount; 00438 PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources; 00439 BOOLEAN AllowEarlyEnumeration; 00440 ULONG Reserved; 00441 } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA; 00442 00443 /* VIDEO_PORT_AGP_INTERFACE.Version contants */ 00444 #define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 00445 00446 typedef struct _VIDEO_PORT_AGP_INTERFACE { 00447 SHORT Size; 00448 SHORT Version; 00449 PVOID Context; 00450 PINTERFACE_REFERENCE InterfaceReference; 00451 PINTERFACE_DEREFERENCE InterfaceDereference; 00452 PAGP_RESERVE_PHYSICAL AgpReservePhysical; 00453 PAGP_RELEASE_PHYSICAL AgpReleasePhysical; 00454 PAGP_COMMIT_PHYSICAL AgpCommitPhysical; 00455 PAGP_FREE_PHYSICAL AgpFreePhysical; 00456 PAGP_RESERVE_VIRTUAL AgpReserveVirtual; 00457 PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; 00458 PAGP_COMMIT_VIRTUAL AgpCommitVirtual; 00459 PAGP_FREE_VIRTUAL AgpFreeVirtual; 00460 ULONGLONG AgpAllocationLimit; 00461 } VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE; 00462 00463 /* VIDEO_PORT_AGP_INTERFACE_2.Version constants */ 00464 #define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 00465 00466 typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { 00467 /*IN*/ USHORT Size; 00468 /*IN*/ USHORT Version; 00469 /*OUT*/ PVOID Context; 00470 /*OUT*/ PINTERFACE_REFERENCE InterfaceReference; 00471 /*OUT*/ PINTERFACE_DEREFERENCE InterfaceDereference; 00472 /*OUT*/ PAGP_RESERVE_PHYSICAL AgpReservePhysical; 00473 /*OUT*/ PAGP_RELEASE_PHYSICAL AgpReleasePhysical; 00474 /*OUT*/ PAGP_COMMIT_PHYSICAL AgpCommitPhysical; 00475 /*OUT*/ PAGP_FREE_PHYSICAL AgpFreePhysical; 00476 /*OUT*/ PAGP_RESERVE_VIRTUAL AgpReserveVirtual; 00477 /*OUT*/ PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; 00478 /*OUT*/ PAGP_COMMIT_VIRTUAL AgpCommitVirtual; 00479 /*OUT*/ PAGP_FREE_VIRTUAL AgpFreeVirtual; 00480 /*OUT*/ ULONGLONG AgpAllocationLimit; 00481 /*OUT*/ PAGP_SET_RATE AgpSetRate; 00482 } VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2; 00483 00484 #define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 00485 00486 typedef VOID DDKAPI 00487 (*PVIDEO_WRITE_CLOCK_LINE)( 00488 PVOID HwDeviceExtension, 00489 UCHAR Data); 00490 00491 typedef VOID DDKAPI 00492 (*PVIDEO_WRITE_DATA_LINE)( 00493 PVOID HwDeviceExtension, 00494 UCHAR Data); 00495 00496 typedef BOOLEAN DDKAPI 00497 (*PVIDEO_READ_CLOCK_LINE)( 00498 PVOID HwDeviceExtension); 00499 00500 typedef BOOLEAN DDKAPI 00501 (*PVIDEO_READ_DATA_LINE)( 00502 PVOID HwDeviceExtension); 00503 00504 typedef struct _I2C_CALLBACKS 00505 { 00506 /*IN*/ PVIDEO_WRITE_CLOCK_LINE WriteClockLine; 00507 /*IN*/ PVIDEO_WRITE_DATA_LINE WriteDataLine; 00508 /*IN*/ PVIDEO_READ_CLOCK_LINE ReadClockLine; 00509 /*IN*/ PVIDEO_READ_DATA_LINE ReadDataLine; 00510 } I2C_CALLBACKS, *PI2C_CALLBACKS; 00511 00512 typedef BOOLEAN DDKAPI 00513 (*PI2C_START)( 00514 /*IN*/ PVOID HwDeviceExtension, 00515 /*IN*/ PI2C_CALLBACKS I2CCallbacks); 00516 00517 typedef BOOLEAN DDKAPI 00518 (*PI2C_STOP)( 00519 /*IN*/ PVOID HwDeviceExtension, 00520 /*IN*/ PI2C_CALLBACKS I2CCallbacks); 00521 00522 typedef BOOLEAN DDKAPI 00523 (*PI2C_WRITE)( 00524 /*IN*/ PVOID HwDeviceExtension, 00525 /*IN*/ PI2C_CALLBACKS I2CCallbacks, 00526 /*IN*/ PUCHAR Buffer, 00527 /*IN*/ ULONG Length); 00528 00529 typedef BOOLEAN DDKAPI 00530 (*PI2C_READ)( 00531 /*IN*/ PVOID HwDeviceExtension, 00532 /*IN*/ PI2C_CALLBACKS I2CCallbacks, 00533 /*OUT*/ PUCHAR Buffer, 00534 /*IN*/ ULONG Length); 00535 00536 typedef struct _VIDEO_PORT_I2C_INTERFACE { 00537 USHORT Size; 00538 USHORT Version; 00539 PVOID Context; 00540 PINTERFACE_REFERENCE InterfaceReference; 00541 PINTERFACE_DEREFERENCE InterfaceDereference; 00542 PI2C_START I2CStart; 00543 PI2C_STOP I2CStop; 00544 PI2C_WRITE I2CWrite; 00545 PI2C_READ I2CRead; 00546 } VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE; 00547 00548 /* VIDEO_PORT_INT10_INTERFACE.Version constants */ 00549 #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 00550 00551 typedef VP_STATUS DDKAPI 00552 (*PINT10_ALLOCATE_BUFFER)( 00553 /*IN*/ PVOID Context, 00554 /*OUT*/ PUSHORT Seg, 00555 /*OUT*/ PUSHORT Off, 00556 /*IN OUT*/ PULONG Length); 00557 00558 typedef VP_STATUS DDKAPI 00559 (*PINT10_CALL_BIOS)( 00560 /*IN*/ PVOID Context, 00561 /*IN OUT*/ PINT10_BIOS_ARGUMENTS BiosArguments); 00562 00563 typedef VP_STATUS DDKAPI 00564 (*PINT10_FREE_BUFFER)( 00565 /*IN*/ PVOID Context, 00566 /*IN*/ USHORT Seg, 00567 /*IN*/ USHORT Off); 00568 00569 typedef VP_STATUS DDKAPI 00570 (*PINT10_READ_MEMORY)( 00571 /*IN*/ PVOID Context, 00572 /*IN*/ USHORT Seg, 00573 /*IN*/ USHORT Off, 00574 /*OUT*/ PVOID Buffer, 00575 /*IN*/ ULONG Length); 00576 00577 typedef VP_STATUS DDKAPI 00578 (*PINT10_WRITE_MEMORY)( 00579 /*IN*/ PVOID Context, 00580 /*IN*/ USHORT Seg, 00581 /*IN*/ USHORT Off, 00582 /*IN*/ PVOID Buffer, 00583 /*IN*/ ULONG Length); 00584 00585 typedef struct _VIDEO_PORT_INT10_INTERFACE { 00586 /*IN*/ USHORT Size; 00587 /*IN*/ USHORT Version; 00588 /*OUT*/ PVOID Context; 00589 /*OUT*/ PINTERFACE_REFERENCE InterfaceReference; 00590 /*OUT*/ PINTERFACE_DEREFERENCE InterfaceDereference; 00591 /*OUT*/ PINT10_ALLOCATE_BUFFER Int10AllocateBuffer; 00592 /*OUT*/ PINT10_FREE_BUFFER Int10FreeBuffer; 00593 /*OUT*/ PINT10_READ_MEMORY Int10ReadMemory; 00594 /*OUT*/ PINT10_WRITE_MEMORY Int10WriteMemory; 00595 /*OUT*/ PINT10_CALL_BIOS Int10CallBios; 00596 } VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE; 00597 00598 /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */ 00599 #define VIDEO_MEMORY_SPACE_MEMORY 0x00 00600 #define VIDEO_MEMORY_SPACE_IO 0x01 00601 #define VIDEO_MEMORY_SPACE_USER_MODE 0x02 00602 #define VIDEO_MEMORY_SPACE_DENSE 0x04 00603 #define VIDEO_MEMORY_SPACE_P6CACHE 0x08 00604 00605 typedef struct _VIDEO_X86_BIOS_ARGUMENTS { 00606 ULONG Eax; 00607 ULONG Ebx; 00608 ULONG Ecx; 00609 ULONG Edx; 00610 ULONG Esi; 00611 ULONG Edi; 00612 ULONG Ebp; 00613 } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS; 00614 00615 typedef struct _VP_DEVICE_DESCRIPTION { 00616 BOOLEAN ScatterGather; 00617 BOOLEAN Dma32BitAddresses; 00618 BOOLEAN Dma64BitAddresses; 00619 ULONG MaximumLength; 00620 } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; 00621 00622 typedef struct _VPOSVERSIONINFO { 00623 /*IN*/ ULONG Size; 00624 /*OUT*/ ULONG MajorVersion; 00625 /*OUT*/ ULONG MinorVersion; 00626 /*OUT*/ ULONG BuildNumber; 00627 /*OUT*/ USHORT ServicePackMajor; 00628 /*OUT*/ USHORT ServicePackMinor; 00629 } VPOSVERSIONINFO, *PVPOSVERSIONINFO; 00630 00631 00632 00633 /* Video port functions for miniports */ 00634 00635 VPAPI 00636 VOID 00637 DDKAPI 00638 VideoDebugPrint( 00639 /*IN*/ ULONG DebugPrintLevel, 00640 /*IN*/ PCHAR DebugMessage, 00641 /*IN*/ ...); 00642 00643 VPAPI 00644 VOID 00645 DDKAPI 00646 VideoPortAcquireDeviceLock( 00647 /*IN*/ PVOID HwDeviceExtension); 00648 00649 VPAPI 00650 VOID 00651 DDKAPI 00652 VideoPortAcquireSpinLock( 00653 /*IN*/ PVOID HwDeviceExtension, 00654 /*IN*/ PSPIN_LOCK SpinLock, 00655 /*OUT*/ PUCHAR OldIrql); 00656 00657 VPAPI 00658 VOID 00659 DDKAPI 00660 VideoPortAcquireSpinLockAtDpcLevel( 00661 /*IN*/ PVOID HwDeviceExtension, 00662 /*IN*/ PSPIN_LOCK SpinLock); 00663 00664 VPAPI 00665 VP_STATUS 00666 DDKAPI 00667 VideoPortAllocateBuffer( 00668 /*IN*/ PVOID HwDeviceExtension, 00669 /*IN*/ ULONG Size, 00670 /*OUT*/ PVOID *Buffer); 00671 00672 VPAPI 00673 PVOID 00674 DDKAPI 00675 VideoPortAllocateCommonBuffer( 00676 /*IN*/ PVOID HwDeviceExtension, 00677 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, 00678 /*IN*/ ULONG DesiredLength, 00679 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, 00680 /*IN*/ BOOLEAN CacheEnabled, 00681 PVOID Reserved); 00682 00683 VPAPI 00684 PVOID 00685 DDKAPI 00686 VideoPortAllocateContiguousMemory( 00687 /*IN*/ PVOID HwDeviceExtension, 00688 /*IN*/ ULONG NumberOfBytes, 00689 /*IN*/ PHYSICAL_ADDRESS HighestAcceptableAddress); 00690 00691 /* VideoPortAllocatePool.PoolType constants */ 00692 typedef enum _VP_POOL_TYPE { 00693 VpNonPagedPool = 0, 00694 VpPagedPool, 00695 VpNonPagedPoolCacheAligned = 4, 00696 VpPagedPoolCacheAligned 00697 } VP_POOL_TYPE, *PVP_POOL_TYPE; 00698 00699 VPAPI 00700 PVOID 00701 DDKAPI 00702 VideoPortAllocatePool( 00703 /*IN*/ PVOID HwDeviceExtension, 00704 /*IN*/ VP_POOL_TYPE PoolType, 00705 /*IN*/ SIZE_T NumberOfBytes, 00706 /*IN*/ ULONG Tag); 00707 00708 VPAPI 00709 PDMA 00710 DDKAPI 00711 VideoPortAssociateEventsWithDmaHandle( 00712 /*IN*/ PVOID HwDeviceExtension, 00713 /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp, 00714 /*IN*/ PVOID MappedUserEvent, 00715 /*IN*/ PVOID DisplayDriverEvent); 00716 00717 /* VideoPortCheckForDeviceExistence.Flags constants */ 00718 #define CDE_USE_SUBSYSTEM_IDS 0x00000001 00719 #define CDE_USE_REVISION 0x00000002 00720 00721 VPAPI 00722 BOOLEAN 00723 DDKAPI 00724 VideoPortCheckForDeviceExistence( 00725 /*IN*/ PVOID HwDeviceExtension, 00726 /*IN*/ USHORT VendorId, 00727 /*IN*/ USHORT DeviceId, 00728 /*IN*/ UCHAR RevisionId, 00729 /*IN*/ USHORT SubVendorId, 00730 /*IN*/ USHORT SubSystemId, 00731 /*IN*/ ULONG Flags); 00732 00733 VPAPI 00734 VOID 00735 DDKAPI 00736 VideoPortClearEvent( 00737 /*IN*/ PVOID HwDeviceExtension, 00738 /*IN*/ PEVENT pEvent); 00739 00740 VPAPI 00741 ULONG 00742 DDKAPI 00743 VideoPortCompareMemory( 00744 /*IN*/ PVOID Source1, 00745 /*IN*/ PVOID Source2, 00746 /*IN*/ ULONG Length); 00747 00748 VPAPI 00749 VP_STATUS 00750 DDKAPI 00751 VideoPortCompleteDma( 00752 /*IN*/ PVOID HwDeviceExtension, 00753 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, 00754 /*IN*/ PVP_SCATTER_GATHER_LIST VpScatterGather, 00755 /*IN*/ BOOLEAN WriteToDevice); 00756 00757 VPAPI 00758 VP_STATUS 00759 DDKAPI 00760 VideoPortCreateEvent( 00761 /*IN*/ PVOID HwDeviceExtension, 00762 /*IN*/ ULONG EventFlag, 00763 /*IN*/ PVOID Unused, 00764 /*OUT*/ PEVENT *ppEvent); 00765 00766 VPAPI 00767 VP_STATUS 00768 DDKAPI 00769 VideoPortCreateSecondaryDisplay( 00770 /*IN*/ PVOID HwDeviceExtension, 00771 /*IN OUT*/ PVOID *SecondaryDeviceExtension, 00772 /*IN*/ ULONG ulFlag); 00773 00774 VPAPI 00775 VP_STATUS 00776 DDKAPI 00777 VideoPortCreateSpinLock( 00778 /*IN*/ PVOID HwDeviceExtension, 00779 /*OUT*/ PSPIN_LOCK *SpinLock); 00780 00781 typedef struct _DDC_CONTROL { 00782 /*IN*/ ULONG Size; 00783 /*IN*/ I2C_CALLBACKS I2CCallbacks; 00784 /*IN*/ UCHAR EdidSegment; 00785 } DDC_CONTROL, *PDDC_CONTROL; 00786 00787 VPAPI 00788 BOOLEAN 00789 DDKAPI 00790 VideoPortDDCMonitorHelper( 00791 /*IN*/ PVOID HwDeviceExtension, 00792 /*IN*/ PVOID DDCControl, 00793 /*IN OUT*/ PUCHAR EdidBuffer, 00794 /*IN*/ ULONG EdidBufferSize); 00795 00796 VPAPI 00797 VOID 00798 DDKCDECLAPI 00799 VideoPortDebugPrint( 00800 /*IN*/ VIDEO_DEBUG_LEVEL DebugPrintLevel, 00801 /*IN*/ PCHAR DebugMessage, 00802 /*IN*/ ...); 00803 00804 VPAPI 00805 VP_STATUS 00806 DDKAPI 00807 VideoPortDeleteEvent( 00808 /*IN*/ PVOID HwDeviceExtension, 00809 /*IN*/ PEVENT pEvent); 00810 00811 VPAPI 00812 VP_STATUS 00813 DDKAPI 00814 VideoPortDeleteSpinLock( 00815 /*IN*/ PVOID HwDeviceExtension, 00816 /*IN*/ PSPIN_LOCK SpinLock); 00817 00818 VPAPI 00819 VP_STATUS 00820 DDKAPI 00821 VideoPortDisableInterrupt( 00822 /*IN*/ PVOID HwDeviceExtension); 00823 00824 VPAPI 00825 PDMA 00826 DDKAPI 00827 VideoPortDoDma( 00828 /*IN*/ PVOID HwDeviceExtension, 00829 /*IN*/ PDMA pDma, 00830 /*IN*/ DMA_FLAGS DmaFlags); 00831 00832 VPAPI 00833 VP_STATUS 00834 DDKAPI 00835 VideoPortEnableInterrupt( 00836 /*IN*/ PVOID HwDeviceExtension); 00837 00838 VPAPI 00839 VP_STATUS 00840 DDKAPI 00841 VideoPortEnumerateChildren( 00842 /*IN*/ PVOID HwDeviceExtension, 00843 /*IN*/ PVOID Reserved); 00844 00845 VPAPI 00846 VOID 00847 DDKAPI 00848 VideoPortFreeCommonBuffer( 00849 /*IN*/ PVOID HwDeviceExtension, 00850 /*IN*/ ULONG Length, 00851 /*IN*/ PVOID VirtualAddress, 00852 /*IN*/ PHYSICAL_ADDRESS LogicalAddress, 00853 /*IN*/ BOOLEAN CacheEnabled); 00854 00855 VPAPI 00856 VOID 00857 DDKAPI 00858 VideoPortFreeDeviceBase( 00859 /*IN*/ PVOID HwDeviceExtension, 00860 /*IN*/ PVOID MappedAddress); 00861 00862 VPAPI 00863 VOID 00864 DDKAPI 00865 VideoPortFreePool( 00866 /*IN*/ PVOID HwDeviceExtension, 00867 /*IN*/ PVOID Ptr); 00868 00869 VPAPI 00870 VP_STATUS 00871 DDKAPI 00872 VideoPortGetAccessRanges( 00873 /*IN*/ PVOID HwDeviceExtension, 00874 /*IN*/ ULONG NumRequestedResources, 00875 /*IN*/ PIO_RESOURCE_DESCRIPTOR RequestedResources /*OPTIONAL*/, 00876 /*IN*/ ULONG NumAccessRanges, 00877 /*OUT*/ PVIDEO_ACCESS_RANGE AccessRanges, 00878 /*IN*/ PVOID VendorId, 00879 /*IN*/ PVOID DeviceId, 00880 /*OUT*/ PULONG Slot); 00881 00882 VPAPI 00883 PVOID 00884 DDKAPI 00885 VideoPortGetAssociatedDeviceExtension( 00886 /*IN*/ PVOID DeviceObject); 00887 00888 VPAPI 00889 ULONG 00890 DDKAPI 00891 VideoPortGetAssociatedDeviceID( 00892 /*IN*/ PVOID DeviceObject); 00893 00894 VPAPI 00895 ULONG 00896 DDKAPI 00897 VideoPortGetBusData( 00898 /*IN*/ PVOID HwDeviceExtension, 00899 /*IN*/ BUS_DATA_TYPE BusDataType, 00900 /*IN*/ ULONG SlotNumber, 00901 /*IN OUT*/ PVOID Buffer, 00902 /*IN*/ ULONG Offset, 00903 /*IN*/ ULONG Length); 00904 00905 VPAPI 00906 ULONG 00907 DDKAPI 00908 VideoPortGetBytesUsed( 00909 /*IN*/ PVOID HwDeviceExtension, 00910 /*IN*/ PDMA pDma); 00911 00912 VPAPI 00913 PVOID 00914 DDKAPI 00915 VideoPortGetCommonBuffer( 00916 /*IN*/ PVOID HwDeviceExtension, 00917 /*IN*/ ULONG DesiredLength, 00918 /*IN*/ ULONG Alignment, 00919 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, 00920 /*OUT*/ PULONG pActualLength, 00921 /*IN*/ BOOLEAN CacheEnabled); 00922 00923 VPAPI 00924 UCHAR 00925 DDKAPI 00926 VideoPortGetCurrentIrql( 00927 VOID); 00928 00929 VPAPI 00930 PVOID 00931 DDKAPI 00932 VideoPortGetDeviceBase( 00933 /*IN*/ PVOID HwDeviceExtension, 00934 /*IN*/ PHYSICAL_ADDRESS IoAddress, 00935 /*IN*/ ULONG NumberOfUchars, 00936 /*IN*/ UCHAR InIoSpace); 00937 00938 VPAPI 00939 VP_STATUS 00940 DDKAPI 00941 VideoPortGetDeviceData( 00942 /*IN*/ PVOID HwDeviceExtension, 00943 /*IN*/ VIDEO_DEVICE_DATA_TYPE DeviceDataType, 00944 /*IN*/ PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, 00945 /*IN*/ PVOID Context); 00946 00947 VPAPI 00948 PVP_DMA_ADAPTER 00949 DDKAPI 00950 VideoPortGetDmaAdapter( 00951 /*IN*/ PVOID HwDeviceExtension, 00952 /*IN*/ PVP_DEVICE_DESCRIPTION VpDeviceDescription); 00953 00954 VPAPI 00955 PVOID 00956 DDKAPI 00957 VideoPortGetDmaContext( 00958 /*IN*/ PVOID HwDeviceExtension, 00959 /*IN*/ PDMA pDma); 00960 00961 VPAPI 00962 PVOID 00963 DDKAPI 00964 VideoPortGetMdl( 00965 /*IN*/ PVOID HwDeviceExtension, 00966 /*IN*/ PDMA pDma); 00967 00968 VPAPI 00969 VP_STATUS 00970 DDKAPI 00971 VideoPortGetRegistryParameters( 00972 /*IN*/ PVOID HwDeviceExtension, 00973 /*IN*/ PWSTR ParameterName, 00974 /*IN*/ UCHAR IsParameterFileName, 00975 /*IN*/ PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, 00976 /*IN*/ PVOID Context); 00977 00978 VPAPI 00979 PVOID 00980 DDKAPI 00981 VideoPortGetRomImage( 00982 /*IN*/ PVOID HwDeviceExtension, 00983 /*IN*/ PVOID Unused1, 00984 /*IN*/ ULONG Unused2, 00985 /*IN*/ ULONG Length); 00986 00987 VPAPI 00988 VP_STATUS 00989 DDKAPI 00990 VideoPortGetVersion( 00991 /*IN*/ PVOID HwDeviceExtension, 00992 /*IN OUT*/ PVPOSVERSIONINFO pVpOsVersionInfo); 00993 00994 VPAPI 00995 VP_STATUS 00996 DDKAPI 00997 VideoPortGetVgaStatus( 00998 /*IN*/ PVOID HwDeviceExtension, 00999 /*OUT*/ PULONG VgaStatus); 01000 01001 VPAPI 01002 ULONG 01003 DDKAPI 01004 VideoPortInitialize( 01005 /*IN*/ PVOID Argument1, 01006 /*IN*/ PVOID Argument2, 01007 /*IN*/ PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, 01008 /*IN*/ PVOID HwContext); 01009 01010 VPAPI 01011 VP_STATUS 01012 DDKAPI 01013 VideoPortInt10( 01014 /*IN*/ PVOID HwDeviceExtension, 01015 /*IN*/ PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); 01016 01017 VPAPI 01018 LONG 01019 DDKFASTAPI 01020 VideoPortInterlockedDecrement( 01021 /*IN*/ PLONG Addend); 01022 01023 VPAPI 01024 LONG 01025 DDKFASTAPI 01026 VideoPortInterlockedExchange( 01027 /*IN OUT*/ PLONG Target, 01028 /*IN*/ LONG Value); 01029 01030 VPAPI 01031 LONG 01032 DDKFASTAPI 01033 VideoPortInterlockedIncrement( 01034 /*IN*/ PLONG Addend); 01035 01036 typedef enum _VP_LOCK_OPERATION { 01037 VpReadAccess = 0, 01038 VpWriteAccess, 01039 VpModifyAccess 01040 } VP_LOCK_OPERATION; 01041 01042 VPAPI 01043 PVOID 01044 DDKAPI 01045 VideoPortLockBuffer( 01046 /*IN*/ PVOID HwDeviceExtension, 01047 /*IN*/ PVOID BaseAddress, 01048 /*IN*/ ULONG Length, 01049 /*IN*/ VP_LOCK_OPERATION Operation); 01050 01051 VPAPI 01052 BOOLEAN 01053 DDKAPI 01054 VideoPortLockPages( 01055 /*IN*/ PVOID HwDeviceExtension, 01056 /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp, 01057 /*IN OUT*/ PEVENT pUEvent, 01058 /*IN*/ PEVENT pDisplayEvent, 01059 /*IN*/ DMA_FLAGS DmaFlags); 01060 01061 VPAPI 01062 VOID 01063 DDKAPI 01064 VideoPortLogError( 01065 /*IN*/ PVOID HwDeviceExtension, 01066 /*IN*/ PVIDEO_REQUEST_PACKET Vrp /*OPTIONAL*/, 01067 /*IN*/ VP_STATUS ErrorCode, 01068 /*IN*/ ULONG UniqueId); 01069 01070 VPAPI 01071 VP_STATUS 01072 DDKAPI 01073 VideoPortMapBankedMemory( 01074 /*IN*/ PVOID HwDeviceExtension, 01075 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress, 01076 /*IN OUT*/ PULONG Length, 01077 PULONG InIoSpace, 01078 PVOID *VirtualAddress, 01079 ULONG BankLength, 01080 UCHAR ReadWriteBank, 01081 PBANKED_SECTION_ROUTINE BankRoutine, 01082 PVOID Context); 01083 01084 VPAPI 01085 PDMA 01086 DDKAPI 01087 VideoPortMapDmaMemory( 01088 /*IN*/ PVOID HwDeviceExtension, 01089 /*IN*/ PVIDEO_REQUEST_PACKET pVrp, 01090 /*IN*/ PHYSICAL_ADDRESS BoardAddress, 01091 /*IN*/ PULONG Length, 01092 /*IN*/ PULONG InIoSpace, 01093 /*IN*/ PVOID MappedUserEvent, 01094 /*IN*/ PVOID DisplayDriverEvent, 01095 /*IN OUT*/ PVOID *VirtualAddress); 01096 01097 VPAPI 01098 VP_STATUS 01099 DDKAPI 01100 VideoPortMapMemory( 01101 /*IN*/ PVOID HwDeviceExtension, 01102 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress, 01103 /*IN OUT*/ PULONG Length, 01104 /*IN*/ PULONG InIoSpace, 01105 /*IN OUT*/ PVOID *VirtualAddress); 01106 01107 VPAPI 01108 VOID 01109 DDKAPI 01110 VideoPortMoveMemory( 01111 /*IN*/ PVOID Destination, 01112 /*IN*/ PVOID Source, 01113 /*IN*/ ULONG Length); 01114 01115 VPAPI 01116 VOID 01117 DDKAPI 01118 VideoPortPutDmaAdapter( 01119 /*IN*/ PVOID HwDeviceExtension, 01120 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter); 01121 01122 VPAPI 01123 LONGLONG 01124 DDKAPI 01125 VideoPortQueryPerformanceCounter( 01126 /*IN*/ PVOID HwDeviceExtension, 01127 /*OUT*/ PLONGLONG PerformanceFrequency /*OPTIONAL*/); 01128 01129 /* VideoPortQueryServices.ServicesType constants */ 01130 typedef enum _VIDEO_PORT_SERVICES { 01131 VideoPortServicesAGP = 1, 01132 VideoPortServicesI2C, 01133 VideoPortServicesHeadless, 01134 VideoPortServicesInt10 01135 } VIDEO_PORT_SERVICES; 01136 01137 VPAPI 01138 VP_STATUS 01139 DDKAPI 01140 VideoPortQueryServices( 01141 /*IN*/ PVOID HwDeviceExtension, 01142 /*IN*/ VIDEO_PORT_SERVICES ServicesType, 01143 /*IN OUT*/ PINTERFACE Interface); 01144 01145 VPAPI 01146 VOID 01147 DDKAPI 01148 VideoPortQuerySystemTime( 01149 /*OUT*/ PLARGE_INTEGER CurrentTime); 01150 01151 VPAPI 01152 BOOLEAN 01153 DDKAPI 01154 VideoPortQueueDpc( 01155 /*IN*/ PVOID HwDeviceExtension, 01156 /*IN*/ PMINIPORT_DPC_ROUTINE CallbackRoutine, 01157 /*IN*/ PVOID Context); 01158 01159 VPAPI 01160 VOID 01161 DDKAPI 01162 VideoPortReadPortBufferUchar( 01163 /*IN*/ PUCHAR Port, 01164 /*OUT*/ PUCHAR Buffer, 01165 /*IN*/ ULONG Count); 01166 01167 VPAPI 01168 VOID 01169 DDKAPI 01170 VideoPortReadPortBufferUlong( 01171 /*IN*/ PULONG Port, 01172 /*OUT*/ PULONG Buffer, 01173 /*IN*/ ULONG Count); 01174 01175 VPAPI 01176 VOID 01177 DDKAPI 01178 VideoPortReadPortBufferUshort( 01179 /*IN*/ PUSHORT Port, 01180 /*OUT*/ PUSHORT Buffer, 01181 /*IN*/ ULONG Count); 01182 01183 VPAPI 01184 UCHAR 01185 DDKAPI 01186 VideoPortReadPortUchar( 01187 /*IN*/ PUCHAR Port); 01188 01189 VPAPI 01190 ULONG 01191 DDKAPI 01192 VideoPortReadPortUlong( 01193 /*IN*/ PULONG Port); 01194 01195 VPAPI 01196 USHORT 01197 DDKAPI 01198 VideoPortReadPortUshort( 01199 /*IN*/ PUSHORT Port); 01200 01201 VPAPI 01202 VOID 01203 DDKAPI 01204 VideoPortReadRegisterBufferUchar( 01205 /*IN*/ PUCHAR Register, 01206 /*OUT*/ PUCHAR Buffer, 01207 /*IN*/ ULONG Count); 01208 01209 VPAPI 01210 VOID 01211 DDKAPI 01212 VideoPortReadRegisterBufferUlong( 01213 /*IN*/ PULONG Register, 01214 /*OUT*/ PULONG Buffer, 01215 /*IN*/ ULONG Count); 01216 01217 VPAPI 01218 VOID 01219 DDKAPI 01220 VideoPortReadRegisterBufferUshort( 01221 /*IN*/ PUSHORT Register, 01222 /*OUT*/ PUSHORT Buffer, 01223 /*IN*/ ULONG Count); 01224 01225 VPAPI 01226 UCHAR 01227 DDKAPI 01228 VideoPortReadRegisterUchar( 01229 /*IN*/ PUCHAR Register); 01230 01231 VPAPI 01232 ULONG 01233 DDKAPI 01234 VideoPortReadRegisterUlong( 01235 /*IN*/ PULONG Register); 01236 01237 VPAPI 01238 USHORT 01239 DDKAPI 01240 VideoPortReadRegisterUshort( 01241 /*IN*/ PUSHORT Register); 01242 01243 VPAPI 01244 LONG 01245 DDKAPI 01246 VideoPortReadStateEvent( 01247 /*IN*/ PVOID HwDeviceExtension, 01248 /*IN*/ PEVENT pEvent); 01249 01250 VPAPI 01251 VOID 01252 DDKAPI 01253 VideoPortReleaseBuffer( 01254 /*IN*/ PVOID HwDeviceExtension, 01255 /*IN*/ PVOID Buffer); 01256 01257 VPAPI 01258 VOID 01259 DDKAPI 01260 VideoPortReleaseCommonBuffer( 01261 /*IN*/ PVOID HwDeviceExtension, 01262 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, 01263 /*IN*/ ULONG Length, 01264 /*IN*/ PHYSICAL_ADDRESS LogicalAddress, 01265 /*IN*/ PVOID VirtualAddress, 01266 /*IN*/ BOOLEAN CacheEnabled); 01267 01268 VPAPI 01269 VOID 01270 DDKAPI 01271 VideoPortReleaseDeviceLock( 01272 /*IN*/ PVOID HwDeviceExtension); 01273 01274 VPAPI 01275 VOID 01276 DDKAPI 01277 VideoPortReleaseSpinLock( 01278 /*IN*/ PVOID HwDeviceExtension, 01279 /*IN*/ PSPIN_LOCK SpinLock, 01280 /*IN*/ UCHAR NewIrql); 01281 01282 VPAPI 01283 VOID 01284 DDKAPI 01285 VideoPortReleaseSpinLockFromDpcLevel( 01286 /*IN*/ PVOID HwDeviceExtension, 01287 /*IN*/ PSPIN_LOCK SpinLock); 01288 01289 VPAPI 01290 BOOLEAN 01291 DDKAPI 01292 VideoPortScanRom( 01293 PVOID HwDeviceExtension, 01294 PUCHAR RomBase, 01295 ULONG RomLength, 01296 PUCHAR String); 01297 01298 VPAPI 01299 ULONG 01300 DDKAPI 01301 VideoPortSetBusData( 01302 /*IN*/ PVOID HwDeviceExtension, 01303 /*IN*/ BUS_DATA_TYPE BusDataType, 01304 /*IN*/ ULONG SlotNumber, 01305 /*IN*/ PVOID Buffer, 01306 /*IN*/ ULONG Offset, 01307 /*IN*/ ULONG Length); 01308 01309 VPAPI 01310 VOID 01311 DDKAPI 01312 VideoPortSetBytesUsed( 01313 /*IN*/ PVOID HwDeviceExtension, 01314 /*IN OUT*/ PDMA pDma, 01315 /*IN*/ ULONG BytesUsed); 01316 01317 VPAPI 01318 VOID 01319 DDKAPI 01320 VideoPortSetDmaContext( 01321 /*IN*/ PVOID HwDeviceExtension, 01322 /*OUT*/ PDMA pDma, 01323 /*IN*/ PVOID InstanceContext); 01324 01325 VPAPI 01326 LONG 01327 DDKAPI 01328 VideoPortSetEvent( 01329 /*IN*/ PVOID HwDeviceExtension, 01330 /*IN*/ PEVENT pEvent); 01331 01332 VPAPI 01333 VP_STATUS 01334 DDKAPI 01335 VideoPortSetRegistryParameters( 01336 /*IN*/ PVOID HwDeviceExtension, 01337 /*IN*/ PWSTR ValueName, 01338 /*IN*/ PVOID ValueData, 01339 /*IN*/ ULONG ValueLength); 01340 01341 VPAPI 01342 VP_STATUS 01343 DDKAPI 01344 VideoPortSetTrappedEmulatorPorts( 01345 /*IN*/ PVOID HwDeviceExtension, 01346 /*IN*/ ULONG NumAccessRanges, 01347 /*IN*/ PVIDEO_ACCESS_RANGE AccessRange); 01348 01349 VPAPI 01350 BOOLEAN 01351 DDKAPI 01352 VideoPortSignalDmaComplete( 01353 /*IN*/ PVOID HwDeviceExtension, 01354 /*IN*/ PVOID pDmaHandle); 01355 01356 VPAPI 01357 VOID 01358 DDKAPI 01359 VideoPortStallExecution( 01360 /*IN*/ ULONG Microseconds); 01361 01362 VPAPI 01363 VP_STATUS 01364 DDKAPI 01365 VideoPortStartDma( 01366 /*IN*/ PVOID HwDeviceExtension, 01367 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, 01368 /*IN*/ PVOID Mdl, 01369 /*IN*/ ULONG Offset, 01370 /*IN OUT*/ PULONG pLength, 01371 /*IN*/ PEXECUTE_DMA ExecuteDmaRoutine, 01372 /*IN*/ PVOID Context, 01373 /*IN*/ BOOLEAN WriteToDevice); 01374 01375 VPAPI 01376 VOID 01377 DDKAPI 01378 VideoPortStartTimer( 01379 /*IN*/ PVOID HwDeviceExtension); 01380 01381 VPAPI 01382 VOID 01383 DDKAPI 01384 VideoPortStopTimer( 01385 /*IN*/ PVOID HwDeviceExtension); 01386 01387 /* VideoPortSynchronizeExecution.Priority constants */ 01388 typedef enum VIDEO_SYNCHRONIZE_PRIORITY { 01389 VpLowPriority = 0, 01390 VpMediumPriority, 01391 VpHighPriority 01392 } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; 01393 01394 VPAPI 01395 BOOLEAN 01396 DDKAPI 01397 VideoPortSynchronizeExecution( 01398 /*IN*/ PVOID HwDeviceExtension, 01399 /*IN*/ VIDEO_SYNCHRONIZE_PRIORITY Priority, 01400 /*IN*/ PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, 01401 /*IN*/ PVOID Context); 01402 01403 VPAPI 01404 VOID 01405 DDKAPI 01406 VideoPortUnLockBuffer( 01407 /*IN*/ PVOID HwDeviceExtension, 01408 /*IN*/ PVOID Mdl); 01409 01410 VPAPI 01411 BOOLEAN 01412 DDKAPI 01413 VideoPortUnlockPages( 01414 /*IN*/ PVOID hwDeviceExtension, 01415 /*IN OUT*/ PDMA pDma); 01416 01417 VPAPI 01418 BOOLEAN 01419 DDKAPI 01420 VideoPortUnmapDmaMemory( 01421 /*IN*/ PVOID HwDeviceExtension, 01422 /*IN*/ PVOID VirtualAddress, 01423 /*IN*/ HANDLE ProcessHandle, 01424 /*IN*/ PDMA BoardMemoryHandle); 01425 01426 VPAPI 01427 VP_STATUS 01428 DDKAPI 01429 VideoPortUnmapMemory( 01430 /*IN*/ PVOID HwDeviceExtension, 01431 /*IN OUT*/ PVOID VirtualAddress, 01432 /*IN*/ HANDLE ProcessHandle); 01433 01434 VPAPI 01435 VP_STATUS 01436 DDKAPI 01437 VideoPortVerifyAccessRanges( 01438 /*IN*/ PVOID HwDeviceExtension, 01439 /*IN*/ ULONG NumAccessRanges, 01440 /*IN*/ PVIDEO_ACCESS_RANGE AccessRanges); 01441 01442 VPAPI 01443 VP_STATUS 01444 DDKAPI 01445 VideoPortWaitForSingleObject( 01446 /*IN*/ PVOID HwDeviceExtension, 01447 /*IN*/ PVOID Object, 01448 /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL*/); 01449 01450 VPAPI 01451 VOID 01452 DDKAPI 01453 VideoPortWritePortBufferUchar( 01454 /*IN*/ PUCHAR Port, 01455 /*IN*/ PUCHAR Buffer, 01456 /*IN*/ ULONG Count); 01457 01458 VPAPI 01459 VOID 01460 DDKAPI 01461 VideoPortWritePortBufferUlong( 01462 /*IN*/ PULONG Port, 01463 /*IN*/ PULONG Buffer, 01464 /*IN*/ ULONG Count); 01465 01466 VPAPI 01467 VOID 01468 DDKAPI 01469 VideoPortWritePortBufferUshort( 01470 /*IN*/ PUSHORT Port, 01471 /*IN*/ PUSHORT Buffer, 01472 /*IN*/ ULONG Count); 01473 01474 VPAPI 01475 VOID 01476 DDKAPI 01477 VideoPortWritePortUchar( 01478 /*IN*/ PUCHAR Port, 01479 /*IN*/ UCHAR Value); 01480 01481 VPAPI 01482 VOID 01483 DDKAPI 01484 VideoPortWritePortUlong( 01485 /*IN*/ PULONG Port, 01486 /*IN*/ ULONG Value); 01487 01488 VPAPI 01489 VOID 01490 DDKAPI 01491 VideoPortWritePortUshort( 01492 /*IN*/ PUSHORT Port, 01493 /*IN*/ USHORT Value); 01494 01495 VPAPI 01496 VOID 01497 DDKAPI 01498 VideoPortWriteRegisterBufferUchar( 01499 /*IN*/ PUCHAR Register, 01500 /*IN*/ PUCHAR Buffer, 01501 /*IN*/ ULONG Count); 01502 01503 VPAPI 01504 VOID 01505 DDKAPI 01506 VideoPortWriteRegisterBufferUlong( 01507 /*IN*/ PULONG Register, 01508 /*IN*/ PULONG Buffer, 01509 /*IN*/ ULONG Count); 01510 01511 VPAPI 01512 VOID 01513 DDKAPI 01514 VideoPortWriteRegisterBufferUshort( 01515 /*IN*/ PUSHORT Register, 01516 /*IN*/ PUSHORT Buffer, 01517 /*IN*/ ULONG Count); 01518 01519 VPAPI 01520 VOID 01521 DDKAPI 01522 VideoPortWriteRegisterUchar( 01523 /*IN*/ PUCHAR Register, 01524 /*IN*/ UCHAR Value); 01525 01526 VPAPI 01527 VOID 01528 DDKAPI 01529 VideoPortWriteRegisterUlong( 01530 /*IN*/ PULONG Register, 01531 /*IN*/ ULONG Value); 01532 01533 VPAPI 01534 VOID 01535 DDKAPI 01536 VideoPortWriteRegisterUshort( 01537 /*IN*/ PUSHORT Register, 01538 /*IN*/ USHORT Value); 01539 01540 VPAPI 01541 VOID 01542 DDKAPI 01543 VideoPortZeroDeviceMemory( 01544 /*IN*/ PVOID Destination, 01545 /*IN*/ ULONG Length); 01546 01547 VPAPI 01548 VOID 01549 DDKAPI 01550 VideoPortZeroMemory( 01551 /*IN*/ PVOID Destination, 01552 /*2IN*/ ULONG Length); 01553 01554 #ifdef DBG 01555 #define VideoDebugPrint(x) VideoPortDebugPrint x 01556 #else 01557 #define VideoDebugPrint(x) 01558 #endif 01559 01560 #ifdef __cplusplus 01561 } 01562 #endif 01563 01564 #endif /* defined __WINDDI_H */ 01565 01566 #endif /* __VIDEO_H */
Generated on Tue Jul 12 2022 19:59:55 by
