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