| /* |
| * video.h |
| * |
| * Video port and miniport driver interface |
| * |
| * This file is part of the w32api package. |
| * |
| * Contributors: |
| * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #pragma once |
| |
| #define __VIDEO_H__ |
| |
| #include "ntddvdeo.h" |
| #include "videoagp.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef _NTOSDEF_ |
| |
| #ifdef PAGED_CODE |
| #undef PAGED_CODE |
| #endif |
| |
| #if defined(_MSC_VER) |
| #define ALLOC_PRAGMA 1 |
| #endif |
| |
| #if defined(_VIDEOPORT_) |
| #define VPAPI |
| #else |
| #define VPAPI DECLSPEC_IMPORT |
| #endif |
| |
| #if DBG |
| #define PAGED_CODE() \ |
| if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) { \ |
| VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \ |
| ASSERT(FALSE); \ |
| } |
| #else |
| #define PAGED_CODE() |
| #endif /* DBG */ |
| |
| ULONG |
| NTAPI |
| DriverEntry( |
| PVOID Context1, |
| PVOID Context2); |
| |
| #else |
| |
| #define VPAPI |
| |
| #endif /* _NTOSDEF_ */ |
| |
| #if DBG |
| #define VideoDebugPrint(x) VideoPortDebugPrint x |
| #else |
| #define VideoDebugPrint(x) |
| #endif |
| |
| #define GET_VIDEO_PHYSICAL_ADDRESS(scatterList, \ |
| VirtualAddress, \ |
| InputBuffer, \ |
| pLength, \ |
| Address) \ |
| do { \ |
| ULONG_PTR byteOffset; \ |
| \ |
| byteOffset = (PCHAR) VirtualAddress - (PCHAR)InputBuffer; \ |
| while (byteOffset >= scatterList->Length) { \ |
| byteOffset -= scatterList->Length; \ |
| scatterList++; \ |
| } \ |
| *pLength = scatterList->Length - byteOffset; \ |
| Address = (ULONG_PTR) (scatterList->PhysicalAddress + byteOffset); \ |
| } while (0) |
| |
| #define GET_VIDEO_SCATTERGATHER(ppDma) (**(PVRB_SG **)ppDma) |
| |
| /* VIDEO_ACCESS_RANGE.RangePassive */ |
| #define VIDEO_RANGE_PASSIVE_DECODE 1 |
| #define VIDEO_RANGE_10_BIT_DECODE 2 |
| |
| #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO FIELD_OFFSET(VIDEO_PORT_CONFIG_INFO, Master) |
| #define SIZE_OF_WXP_VIDEO_PORT_CONFIG_INFO sizeof(VIDEO_PORT_CONFIG_INFO) |
| |
| #define SET_USER_EVENT 0x01 |
| #define SET_DISPLAY_EVENT 0x02 |
| |
| #define EVENT_TYPE_MASK 1 |
| #define SYNCHRONIZATION_EVENT 0 |
| #define NOTIFICATION_EVENT 1 |
| |
| #define INITIAL_EVENT_STATE_MASK 2 |
| #define INITIAL_EVENT_NOT_SIGNALED 0 |
| #define INITIAL_EVENT_SIGNALED 2 |
| |
| #define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF |
| |
| #define VIDEO_INVALID_CHILD_ID 0xFFFFFFFF |
| |
| #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, HwStartDma) |
| #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, Reserved) |
| #define SIZE_OF_WXP_VIDEO_HW_INITIALIZATION_DATA (SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA + sizeof(ULONG)) |
| |
| #define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 |
| #define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 |
| #define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 |
| #define VIDEO_PORT_I2C_INTERFACE_VERSION_2 2 |
| #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 |
| #define VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE_VERSION_1 1 |
| #define VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1 1 |
| |
| /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */ |
| #define VIDEO_MEMORY_SPACE_MEMORY 0x00 |
| #define VIDEO_MEMORY_SPACE_IO 0x01 |
| #define VIDEO_MEMORY_SPACE_USER_MODE 0x02 |
| #define VIDEO_MEMORY_SPACE_DENSE 0x04 |
| #define VIDEO_MEMORY_SPACE_P6CACHE 0x08 |
| |
| /* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */ |
| #define VIDEO_ENUM_MORE_DEVICES ERROR_CONTINUE |
| #define VIDEO_ENUM_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES |
| #define VIDEO_ENUM_INVALID_DEVICE ERROR_INVALID_NAME |
| |
| #define DEVICE_VGA_ENABLED 1 |
| |
| /* VideoPortCheckForDeviceExistence.Flags constants */ |
| #define CDE_USE_SUBSYSTEM_IDS 0x00000001 |
| #define CDE_USE_REVISION 0x00000002 |
| |
| #define BUGCHECK_DATA_SIZE_RESERVED 48 |
| |
| #define VIDEO_DEBUG_REPORT_MAX_SIZE 0x8000 |
| |
| typedef LONG VP_STATUS, *PVP_STATUS; |
| typedef ULONG DMA_EVENT_FLAGS; |
| |
| typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; |
| typedef struct _VIDEO_DEBUG_REPORT *PVIDEO_DEBUG_REPORT; |
| typedef struct __DMA_PARAMETERS *PDMA; |
| typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; |
| |
| typedef PVOID |
| (NTAPI *PVIDEO_PORT_GET_PROC_ADDRESS)( |
| IN PVOID HwDeviceExtension, |
| IN PUCHAR FunctionName); |
| |
| typedef struct _VIDEO_PORT_CONFIG_INFO { |
| ULONG Length; |
| ULONG SystemIoBusNumber; |
| INTERFACE_TYPE AdapterInterfaceType; |
| ULONG BusInterruptLevel; |
| ULONG BusInterruptVector; |
| KINTERRUPT_MODE InterruptMode; |
| ULONG NumEmulatorAccessEntries; |
| PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries; |
| ULONG_PTR EmulatorAccessEntriesContext; |
| PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress; |
| ULONG VdmPhysicalVideoMemoryLength; |
| ULONG HardwareStateSize; |
| ULONG DmaChannel; |
| ULONG DmaPort; |
| UCHAR DmaShareable; |
| UCHAR InterruptShareable; |
| BOOLEAN Master; |
| DMA_WIDTH DmaWidth; |
| DMA_SPEED DmaSpeed; |
| BOOLEAN bMapBuffers; |
| BOOLEAN NeedPhysicalAddresses; |
| BOOLEAN DemandMode; |
| ULONG MaximumTransferLength; |
| ULONG NumberOfPhysicalBreaks; |
| BOOLEAN ScatterGather; |
| ULONG MaximumScatterGatherChunkSize; |
| PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress; |
| PWSTR DriverRegistryPath; |
| ULONGLONG SystemMemorySize; |
| } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_FIND_ADAPTER)( |
| IN PVOID HwDeviceExtension, |
| IN PVOID HwContext, |
| IN PWSTR ArgumentString, |
| IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo, |
| OUT PUCHAR Again); |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_HW_INITIALIZE)( |
| IN PVOID HwDeviceExtension); |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_HW_INTERRUPT)( |
| IN PVOID HwDeviceExtension); |
| |
| typedef struct _VIDEO_ACCESS_RANGE { |
| PHYSICAL_ADDRESS RangeStart; |
| ULONG RangeLength; |
| UCHAR RangeInIoSpace; |
| UCHAR RangeVisible; |
| UCHAR RangeShareable; |
| UCHAR RangePassive; |
| } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; |
| |
| typedef VOID |
| (NTAPI *PVIDEO_HW_LEGACYRESOURCES)( |
| IN ULONG VendorId, |
| IN ULONG DeviceId, |
| IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, |
| IN OUT PULONG LegacyResourceCount); |
| |
| typedef enum _HW_DMA_RETURN { |
| DmaAsyncReturn, |
| DmaSyncReturn |
| } HW_DMA_RETURN, *PHW_DMA_RETURN; |
| |
| typedef HW_DMA_RETURN |
| (NTAPI *PVIDEO_HW_START_DMA)( |
| PVOID HwDeviceExtension, |
| PDMA pDma); |
| |
| typedef struct _VP_SCATTER_GATHER_ELEMENT { |
| PHYSICAL_ADDRESS Address; |
| ULONG Length; |
| ULONG_PTR Reserved; |
| } VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT; |
| |
| typedef struct _VP_SCATTER_GATHER_LIST { |
| ULONG NumberOfElements; |
| ULONG_PTR Reserved; |
| VP_SCATTER_GATHER_ELEMENT Elements[0]; |
| } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; |
| |
| typedef VOID |
| (NTAPI *PEXECUTE_DMA)( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter, |
| IN PVP_SCATTER_GATHER_LIST SGList, |
| IN PVOID Context); |
| |
| /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */ |
| typedef struct _VIDEO_CHILD_ENUM_INFO { |
| ULONG Size; |
| ULONG ChildDescriptorSize; |
| ULONG ChildIndex; |
| ULONG ACPIHwId; |
| PVOID ChildHwDeviceExtension; |
| } VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO; |
| |
| /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */ |
| typedef enum _VIDEO_CHILD_TYPE { |
| Monitor = 1, |
| NonPrimaryChip, |
| VideoChip, |
| Other |
| } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_GET_CHILD_DESCRIPTOR)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, |
| OUT PVIDEO_CHILD_TYPE VideoChildType, |
| OUT PUCHAR pChildDescriptor, |
| OUT PULONG UId, |
| OUT PULONG pUnused); |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_POWER_SET)( |
| IN PVOID HwDeviceExtension, |
| IN ULONG HwId, |
| IN PVIDEO_POWER_MANAGEMENT VideoPowerControl); |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_POWER_GET)( |
| IN PVOID HwDeviceExtension, |
| IN ULONG HwId, |
| IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl); |
| |
| typedef struct _QUERY_INTERFACE { |
| CONST GUID *InterfaceType; |
| USHORT Size; |
| USHORT Version; |
| PINTERFACE Interface; |
| PVOID InterfaceSpecificData; |
| } QUERY_INTERFACE, *PQUERY_INTERFACE; |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_QUERY_INTERFACE)( |
| IN PVOID HwDeviceExtension, |
| IN OUT PQUERY_INTERFACE QueryInterface); |
| |
| typedef VP_STATUS |
| (NTAPI *PVIDEO_HW_CHILD_CALLBACK)( |
| PVOID HwDeviceExtension, |
| PVOID ChildDeviceExtension); |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_HW_RESET_HW)( |
| IN PVOID HwDeviceExtension, |
| IN ULONG Columns, |
| IN ULONG Rows); |
| |
| typedef struct _STATUS_BLOCK { |
| _ANONYMOUS_UNION union { |
| VP_STATUS Status; |
| PVOID Pointer; |
| } DUMMYUNIONNAME; |
| ULONG_PTR Information; |
| } STATUS_BLOCK, *PSTATUS_BLOCK; |
| |
| typedef struct _VIDEO_REQUEST_PACKET { |
| ULONG IoControlCode; |
| PSTATUS_BLOCK StatusBlock; |
| PVOID InputBuffer; |
| ULONG InputBufferLength; |
| PVOID OutputBuffer; |
| ULONG OutputBufferLength; |
| } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_HW_START_IO)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_REQUEST_PACKET RequestPacket); |
| |
| typedef VOID |
| (NTAPI *PVIDEO_HW_TIMER)( |
| IN PVOID HwDeviceExtension); |
| |
| typedef VOID |
| (NTAPI *PVIDEO_WRITE_CLOCK_LINE)( |
| PVOID HwDeviceExtension, |
| UCHAR Data); |
| |
| typedef VOID |
| (NTAPI *PVIDEO_WRITE_DATA_LINE)( |
| PVOID HwDeviceExtension, |
| UCHAR Data); |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_READ_CLOCK_LINE)( |
| PVOID HwDeviceExtension); |
| |
| typedef BOOLEAN |
| (NTAPI *PVIDEO_READ_DATA_LINE)( |
| PVOID HwDeviceExtension); |
| |
| typedef VOID |
| (NTAPI *PVIDEO_WAIT_VSYNC_ACTIVE)( |
| PVOID HwDeviceExtension); |
| |
| typedef struct _I2C_CALLBACKS { |
| IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; |
| IN PVIDEO_WRITE_DATA_LINE WriteDataLine; |
| IN PVIDEO_READ_CLOCK_LINE ReadClockLine; |
| IN PVIDEO_READ_DATA_LINE ReadDataLine; |
| } I2C_CALLBACKS, *PI2C_CALLBACKS; |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_START)( |
| IN PVOID HwDeviceExtension, |
| IN PI2C_CALLBACKS I2CCallbacks); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_STOP)( |
| IN PVOID HwDeviceExtension, |
| IN PI2C_CALLBACKS I2CCallbacks); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_WRITE)( |
| IN PVOID HwDeviceExtension, |
| IN PI2C_CALLBACKS I2CCallbacks, |
| IN PUCHAR Buffer, |
| IN ULONG Length); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_READ)( |
| IN PVOID HwDeviceExtension, |
| IN PI2C_CALLBACKS I2CCallbacks, |
| OUT PUCHAR Buffer, |
| IN ULONG Length); |
| |
| typedef struct _VIDEO_I2C_CONTROL { |
| IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; |
| IN PVIDEO_WRITE_DATA_LINE WriteDataLine; |
| IN PVIDEO_READ_CLOCK_LINE ReadClockLine; |
| IN PVIDEO_READ_DATA_LINE ReadDataLine; |
| IN ULONG I2CDelay; |
| } VIDEO_I2C_CONTROL, *PVIDEO_I2C_CONTROL; |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_START_2)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_I2C_CONTROL I2CControl); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_STOP_2)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_I2C_CONTROL I2CControl); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_WRITE_2)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_I2C_CONTROL I2CControl, |
| IN PUCHAR Buffer, |
| IN ULONG Length); |
| |
| typedef BOOLEAN |
| (NTAPI *PI2C_READ_2)( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_I2C_CONTROL I2CControl, |
| OUT PUCHAR Buffer, |
| IN ULONG Length, |
| IN BOOLEAN EndOfRead); |
| |
| typedef struct _INT10_BIOS_ARGUMENTS { |
| ULONG Eax; |
| ULONG Ebx; |
| ULONG Ecx; |
| ULONG Edx; |
| ULONG Esi; |
| ULONG Edi; |
| ULONG Ebp; |
| USHORT SegDs; |
| USHORT SegEs; |
| } INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS; |
| |
| typedef VP_STATUS |
| (NTAPI *PINT10_CALL_BIOS)( |
| IN PVOID Context, |
| IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); |
| |
| typedef VP_STATUS |
| (NTAPI *PINT10_ALLOCATE_BUFFER)( |
| IN PVOID Context, |
| OUT PUSHORT Seg, |
| OUT PUSHORT Off, |
| IN OUT PULONG Length); |
| |
| typedef VP_STATUS |
| (NTAPI *PINT10_FREE_BUFFER)( |
| IN PVOID Context, |
| IN USHORT Seg, |
| IN USHORT Off); |
| |
| typedef VP_STATUS |
| (NTAPI *PINT10_READ_MEMORY)( |
| IN PVOID Context, |
| IN USHORT Seg, |
| IN USHORT Off, |
| OUT PVOID Buffer, |
| IN ULONG Length); |
| |
| typedef VP_STATUS |
| (NTAPI *PINT10_WRITE_MEMORY)( |
| IN PVOID Context, |
| IN USHORT Seg, |
| IN USHORT Off, |
| IN PVOID Buffer, |
| IN ULONG Length); |
| |
| typedef VP_STATUS |
| (NTAPI *PROTECT_WC_MEMORY)( |
| IN PVOID Context, |
| IN PVOID HwDeviceExtension); |
| |
| typedef VP_STATUS |
| (NTAPI *RESTORE_WC_MEMORY)( |
| IN PVOID Context, |
| IN PVOID HwDeviceExtension); |
| |
| typedef enum _VIDEO_DEVICE_DATA_TYPE { |
| VpMachineData = 0, |
| VpCmosData, |
| VpBusData, |
| VpControllerData, |
| VpMonitorData |
| } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; |
| |
| typedef VP_STATUS |
| (NTAPI *PMINIPORT_QUERY_DEVICE_ROUTINE)( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Context, |
| IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, |
| IN PVOID Identifier, |
| IN ULONG IdentifierLength, |
| IN PVOID ConfigurationData, |
| IN ULONG ConfigurationDataLength, |
| IN OUT PVOID ComponentInformation, |
| IN ULONG ComponentInformationLength); |
| |
| typedef VP_STATUS |
| (NTAPI *PMINIPORT_GET_REGISTRY_ROUTINE)( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Context, |
| IN OUT PWSTR ValueName, |
| IN OUT PVOID ValueData, |
| IN ULONG ValueLength); |
| |
| typedef VOID |
| (NTAPI *PMINIPORT_DPC_ROUTINE)( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Context); |
| |
| typedef BOOLEAN |
| (NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( |
| IN PVOID Context); |
| |
| typedef VOID |
| (NTAPI *PVIDEO_BUGCHECK_CALLBACK)( |
| IN PVOID HwDeviceExtension, |
| IN ULONG BugcheckCode, |
| IN PUCHAR Buffer, |
| IN ULONG BufferSize); |
| |
| /* VideoPortSynchronizeExecution.Priority constants */ |
| typedef enum VIDEO_SYNCHRONIZE_PRIORITY { |
| VpLowPriority = 0, |
| VpMediumPriority, |
| VpHighPriority |
| } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; |
| |
| /* VideoPortAllocatePool.PoolType constants */ |
| typedef enum _VP_POOL_TYPE { |
| VpNonPagedPool = 0, |
| VpPagedPool, |
| VpNonPagedPoolCacheAligned = 4, |
| VpPagedPoolCacheAligned |
| } VP_POOL_TYPE, *PVP_POOL_TYPE; |
| |
| typedef enum _DMA_FLAGS { |
| VideoPortUnlockAfterDma = 1, |
| VideoPortKeepPagesLocked, |
| VideoPortDmaInitOnly |
| } DMA_FLAGS; |
| |
| typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { |
| INTERFACE_TYPE InterfaceType; |
| ULONG BusNumber; |
| USHORT Version; |
| USHORT Revision; |
| USHORT Irql; |
| USHORT Vector; |
| ULONG ControlBase; |
| ULONG ControlSize; |
| ULONG CursorBase; |
| ULONG CursorSize; |
| ULONG FrameBase; |
| ULONG FrameSize; |
| } VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA; |
| |
| typedef struct _VIDEO_X86_BIOS_ARGUMENTS { |
| ULONG Eax; |
| ULONG Ebx; |
| ULONG Ecx; |
| ULONG Edx; |
| ULONG Esi; |
| ULONG Edi; |
| ULONG Ebp; |
| } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS; |
| |
| typedef enum VIDEO_DEBUG_LEVEL { |
| Error = 0, |
| Warn, |
| Trace, |
| Info |
| } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; |
| |
| #ifndef _NTOS_ |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_UCHAR)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PUCHAR Data); |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_UCHAR_STRING)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PUCHAR Data, |
| IN ULONG DataLength); |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_ULONG)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PULONG Data); |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_ULONG_STRING)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PULONG Data, |
| IN ULONG DataLength); |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_USHORT)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PUSHORT Data); |
| |
| typedef VP_STATUS |
| (NTAPI *PDRIVER_IO_PORT_USHORT_STRING)( |
| IN ULONG_PTR Context, |
| IN ULONG Port, |
| IN UCHAR AccessMode, |
| IN PUSHORT Data, |
| IN ULONG DataLength); |
| |
| #endif /* _NTOS_ */ |
| |
| typedef struct __VRB_SG { |
| __int64 PhysicalAddress; |
| ULONG Length; |
| } VRB_SG, *PVRB_SG; |
| |
| typedef enum _VP_LOCK_OPERATION { |
| VpReadAccess = 0, |
| VpWriteAccess, |
| VpModifyAccess |
| } VP_LOCK_OPERATION; |
| |
| typedef struct _VP_DEVICE_DESCRIPTION { |
| BOOLEAN ScatterGather; |
| BOOLEAN Dma32BitAddresses; |
| BOOLEAN Dma64BitAddresses; |
| ULONG MaximumLength; |
| } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; |
| |
| typedef struct _VIDEO_CHILD_STATE { |
| ULONG Id; |
| ULONG State; |
| } VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE; |
| |
| typedef struct _VIDEO_CHILD_STATE_CONFIGURATION { |
| ULONG Count; |
| VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY]; |
| } VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION; |
| |
| typedef struct _VIDEO_HW_INITIALIZATION_DATA { |
| ULONG HwInitDataSize; |
| INTERFACE_TYPE AdapterInterfaceType; |
| PVIDEO_HW_FIND_ADAPTER HwFindAdapter; |
| PVIDEO_HW_INITIALIZE HwInitialize; |
| PVIDEO_HW_INTERRUPT HwInterrupt; |
| PVIDEO_HW_START_IO HwStartIO; |
| ULONG HwDeviceExtensionSize; |
| ULONG StartingDeviceNumber; |
| PVIDEO_HW_RESET_HW HwResetHw; |
| PVIDEO_HW_TIMER HwTimer; |
| PVIDEO_HW_START_DMA HwStartDma; |
| PVIDEO_HW_POWER_SET HwSetPowerState; |
| PVIDEO_HW_POWER_GET HwGetPowerState; |
| PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor; |
| PVIDEO_HW_QUERY_INTERFACE HwQueryInterface; |
| ULONG HwChildDeviceExtensionSize; |
| PVIDEO_ACCESS_RANGE HwLegacyResourceList; |
| ULONG HwLegacyResourceCount; |
| PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources; |
| BOOLEAN AllowEarlyEnumeration; |
| ULONG Reserved; |
| } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA; |
| |
| typedef struct _I2C_FNC_TABLE { |
| IN ULONG Size; |
| IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; |
| IN PVIDEO_WRITE_DATA_LINE WriteDataLine; |
| IN PVIDEO_READ_CLOCK_LINE ReadClockLine; |
| IN PVIDEO_READ_DATA_LINE ReadDataLine; |
| IN PVIDEO_WAIT_VSYNC_ACTIVE WaitVsync; |
| PVOID Reserved; |
| } I2C_FNC_TABLE, *PI2C_FNC_TABLE; |
| |
| typedef struct _DDC_CONTROL { |
| IN ULONG Size; |
| IN I2C_CALLBACKS I2CCallbacks; |
| IN UCHAR EdidSegment; |
| } DDC_CONTROL, *PDDC_CONTROL; |
| |
| /* VideoPortQueryServices.ServicesType constants */ |
| typedef enum _VIDEO_PORT_SERVICES { |
| VideoPortServicesAGP = 1, |
| VideoPortServicesI2C, |
| VideoPortServicesHeadless, |
| VideoPortServicesInt10, |
| VideoPortServicesDebugReport, |
| VideoPortServicesWCMemoryProtection |
| } VIDEO_PORT_SERVICES; |
| |
| typedef struct _VIDEO_PORT_AGP_INTERFACE { |
| SHORT Size; |
| SHORT Version; |
| PVOID Context; |
| PINTERFACE_REFERENCE InterfaceReference; |
| PINTERFACE_DEREFERENCE InterfaceDereference; |
| PAGP_RESERVE_PHYSICAL AgpReservePhysical; |
| PAGP_RELEASE_PHYSICAL AgpReleasePhysical; |
| PAGP_COMMIT_PHYSICAL AgpCommitPhysical; |
| PAGP_FREE_PHYSICAL AgpFreePhysical; |
| PAGP_RESERVE_VIRTUAL AgpReserveVirtual; |
| PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; |
| PAGP_COMMIT_VIRTUAL AgpCommitVirtual; |
| PAGP_FREE_VIRTUAL AgpFreeVirtual; |
| ULONGLONG AgpAllocationLimit; |
| } VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE; |
| |
| typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { |
| IN USHORT Size; |
| IN USHORT Version; |
| OUT PVOID Context; |
| OUT PINTERFACE_REFERENCE InterfaceReference; |
| OUT PINTERFACE_DEREFERENCE InterfaceDereference; |
| OUT PAGP_RESERVE_PHYSICAL AgpReservePhysical; |
| OUT PAGP_RELEASE_PHYSICAL AgpReleasePhysical; |
| OUT PAGP_COMMIT_PHYSICAL AgpCommitPhysical; |
| OUT PAGP_FREE_PHYSICAL AgpFreePhysical; |
| OUT PAGP_RESERVE_VIRTUAL AgpReserveVirtual; |
| OUT PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; |
| OUT PAGP_COMMIT_VIRTUAL AgpCommitVirtual; |
| OUT PAGP_FREE_VIRTUAL AgpFreeVirtual; |
| OUT ULONGLONG AgpAllocationLimit; |
| OUT PAGP_SET_RATE AgpSetRate; |
| } VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2; |
| |
| typedef struct _VIDEO_PORT_I2C_INTERFACE { |
| USHORT Size; |
| USHORT Version; |
| PVOID Context; |
| PINTERFACE_REFERENCE InterfaceReference; |
| PINTERFACE_DEREFERENCE InterfaceDereference; |
| PI2C_START I2CStart; |
| PI2C_STOP I2CStop; |
| PI2C_WRITE I2CWrite; |
| PI2C_READ I2CRead; |
| } VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE; |
| |
| typedef struct _VIDEO_PORT_I2C_INTERFACE_2 { |
| IN USHORT Size; |
| IN USHORT Version; |
| OUT PVOID Context; |
| OUT PINTERFACE_REFERENCE InterfaceReference; |
| OUT PINTERFACE_DEREFERENCE InterfaceDereference; |
| OUT PI2C_START_2 I2CStart; |
| OUT PI2C_STOP_2 I2CStop; |
| OUT PI2C_WRITE_2 I2CWrite; |
| OUT PI2C_READ_2 I2CRead; |
| } VIDEO_PORT_I2C_INTERFACE_2, *PVIDEO_PORT_I2C_INTERFACE_2; |
| |
| typedef struct _VIDEO_PORT_INT10_INTERFACE { |
| IN USHORT Size; |
| IN USHORT Version; |
| OUT PVOID Context; |
| OUT PINTERFACE_REFERENCE InterfaceReference; |
| OUT PINTERFACE_DEREFERENCE InterfaceDereference; |
| OUT PINT10_ALLOCATE_BUFFER Int10AllocateBuffer; |
| OUT PINT10_FREE_BUFFER Int10FreeBuffer; |
| OUT PINT10_READ_MEMORY Int10ReadMemory; |
| OUT PINT10_WRITE_MEMORY Int10WriteMemory; |
| OUT PINT10_CALL_BIOS Int10CallBios; |
| } VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE; |
| |
| typedef struct _VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE { |
| IN USHORT Size; |
| IN USHORT Version; |
| OUT PVOID Context; |
| OUT PINTERFACE_REFERENCE InterfaceReference; |
| OUT PINTERFACE_DEREFERENCE InterfaceDereference; |
| OUT PROTECT_WC_MEMORY VideoPortProtectWCMemory; |
| OUT RESTORE_WC_MEMORY VideoPortRestoreWCMemory; |
| } VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE, *PVIDEO_PORT_WCMEMORYPROTECTION_INTERFACE; |
| |
| typedef struct _VPOSVERSIONINFO { |
| IN ULONG Size; |
| OUT ULONG MajorVersion; |
| OUT ULONG MinorVersion; |
| OUT ULONG BuildNumber; |
| OUT USHORT ServicePackMajor; |
| OUT USHORT ServicePackMinor; |
| } VPOSVERSIONINFO, *PVPOSVERSIONINFO; |
| |
| typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE { |
| IN USHORT Size; |
| IN USHORT Version; |
| OUT PVOID Context; |
| OUT PINTERFACE_REFERENCE InterfaceReference; |
| OUT PINTERFACE_DEREFERENCE InterfaceDereference; |
| OUT PVIDEO_DEBUG_REPORT (*DbgReportCreate)( |
| IN PVOID HwDeviceExtension, |
| IN ULONG ulCode, |
| IN ULONG_PTR ulpArg1, |
| IN ULONG_PTR ulpArg2, |
| IN ULONG_PTR ulpArg3, |
| IN ULONG_PTR ulpArg4 |
| ); |
| OUT BOOLEAN (*DbgReportSecondaryData)( |
| IN OUT PVIDEO_DEBUG_REPORT pReport, |
| IN PVOID pvData, |
| IN ULONG ulDataSize |
| ); |
| OUT VOID (*DbgReportComplete)( |
| IN OUT PVIDEO_DEBUG_REPORT pReport |
| ); |
| } VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE; |
| |
| /* Video port functions for miniports */ |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortAllocateBuffer( |
| IN PVOID HwDeviceExtension, |
| IN ULONG Size, |
| OUT PVOID *Buffer); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortAcquireDeviceLock( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortCompareMemory( |
| IN PVOID Source1, |
| IN PVOID Source2, |
| IN SIZE_T Length); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortDDCMonitorHelper( |
| IN PVOID HwDeviceExtension, |
| IN PVOID DDCControl, |
| IN OUT PUCHAR EdidBuffer, |
| IN ULONG EdidBufferSize); |
| |
| VPAPI |
| VOID |
| __cdecl |
| VideoPortDebugPrint( |
| IN VIDEO_DEBUG_LEVEL DebugPrintLevel, |
| IN PSTR DebugMessage, |
| IN ...); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortDisableInterrupt( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortEnableInterrupt( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortEnumerateChildren( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Reserved); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortFreeDeviceBase( |
| IN PVOID HwDeviceExtension, |
| IN PVOID MappedAddress); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortGetAccessRanges( |
| IN PVOID HwDeviceExtension, |
| IN ULONG NumRequestedResources, |
| IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL, |
| IN ULONG NumAccessRanges, |
| OUT PVIDEO_ACCESS_RANGE AccessRanges, |
| IN PVOID VendorId, |
| IN PVOID DeviceId, |
| OUT PULONG Slot); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetAssociatedDeviceExtension( |
| IN PVOID DeviceObject); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortGetBusData( |
| IN PVOID HwDeviceExtension, |
| IN BUS_DATA_TYPE BusDataType, |
| IN ULONG SlotNumber, |
| IN OUT PVOID Buffer, |
| IN ULONG Offset, |
| IN ULONG Length); |
| |
| VPAPI |
| UCHAR |
| NTAPI |
| VideoPortGetCurrentIrql(VOID); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetDeviceBase( |
| IN PVOID HwDeviceExtension, |
| IN PHYSICAL_ADDRESS IoAddress, |
| IN ULONG NumberOfUchars, |
| IN UCHAR InIoSpace); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortGetDeviceData( |
| IN PVOID HwDeviceExtension, |
| IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, |
| IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, |
| IN PVOID Context); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortGetRegistryParameters( |
| IN PVOID HwDeviceExtension, |
| IN PWSTR ParameterName, |
| IN UCHAR IsParameterFileName, |
| IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, |
| IN PVOID Context); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetRomImage( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Unused1, |
| IN ULONG Unused2, |
| IN ULONG Length); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortGetVgaStatus( |
| IN PVOID HwDeviceExtension, |
| OUT PULONG VgaStatus); |
| |
| VPAPI |
| LONG |
| FASTCALL |
| VideoPortInterlockedDecrement( |
| IN PLONG Addend); |
| |
| VPAPI |
| LONG |
| FASTCALL |
| VideoPortInterlockedExchange( |
| IN OUT PLONG Target, |
| IN LONG Value); |
| |
| VPAPI |
| LONG |
| FASTCALL |
| VideoPortInterlockedIncrement( |
| IN PLONG Addend); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortInitialize( |
| IN PVOID Argument1, |
| IN PVOID Argument2, |
| IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, |
| IN PVOID HwContext); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortInt10( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortLogError( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, |
| IN VP_STATUS ErrorCode, |
| IN ULONG UniqueId); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortMapBankedMemory( |
| IN PVOID HwDeviceExtension, |
| IN PHYSICAL_ADDRESS PhysicalAddress, |
| IN OUT PULONG Length, |
| PULONG InIoSpace, |
| PVOID *VirtualAddress, |
| ULONG BankLength, |
| UCHAR ReadWriteBank, |
| PBANKED_SECTION_ROUTINE BankRoutine, |
| PVOID Context); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortMapMemory( |
| IN PVOID HwDeviceExtension, |
| IN PHYSICAL_ADDRESS PhysicalAddress, |
| IN OUT PULONG Length, |
| IN PULONG InIoSpace, |
| IN OUT PVOID *VirtualAddress); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortMoveMemory( |
| IN PVOID Destination, |
| IN PVOID Source, |
| IN ULONG Length); |
| |
| VPAPI |
| LONGLONG |
| NTAPI |
| VideoPortQueryPerformanceCounter( |
| IN PVOID HwDeviceExtension, |
| OUT PLONGLONG PerformanceFrequency OPTIONAL); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortQueryServices( |
| IN PVOID HwDeviceExtension, |
| IN VIDEO_PORT_SERVICES ServicesType, |
| IN OUT PINTERFACE Interface); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortQueueDpc( |
| IN PVOID HwDeviceExtension, |
| IN PMINIPORT_DPC_ROUTINE CallbackRoutine, |
| IN PVOID Context); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadPortBufferUchar( |
| IN PUCHAR Port, |
| OUT PUCHAR Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadPortBufferUlong( |
| IN PULONG Port, |
| OUT PULONG Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadPortBufferUshort( |
| IN PUSHORT Port, |
| OUT PUSHORT Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| UCHAR |
| NTAPI |
| VideoPortReadPortUchar( |
| IN PUCHAR Port); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortReadPortUlong( |
| IN PULONG Port); |
| |
| VPAPI |
| USHORT |
| NTAPI |
| VideoPortReadPortUshort( |
| IN PUSHORT Port); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadRegisterBufferUchar( |
| IN PUCHAR Register, |
| OUT PUCHAR Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadRegisterBufferUlong( |
| IN PULONG Register, |
| OUT PULONG Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReadRegisterBufferUshort( |
| IN PUSHORT Register, |
| OUT PUSHORT Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| UCHAR |
| NTAPI |
| VideoPortReadRegisterUchar( |
| IN PUCHAR Register); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortReadRegisterUlong( |
| IN PULONG Register); |
| |
| VPAPI |
| USHORT |
| NTAPI |
| VideoPortReadRegisterUshort( |
| IN PUSHORT Register); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReleaseBuffer( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Buffer); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReleaseDeviceLock( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortScanRom( |
| PVOID HwDeviceExtension, |
| PUCHAR RomBase, |
| ULONG RomLength, |
| PUCHAR String); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortSetBusData( |
| IN PVOID HwDeviceExtension, |
| IN BUS_DATA_TYPE BusDataType, |
| IN ULONG SlotNumber, |
| IN PVOID Buffer, |
| IN ULONG Offset, |
| IN ULONG Length); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortSetRegistryParameters( |
| IN PVOID HwDeviceExtension, |
| IN PWSTR ValueName, |
| IN PVOID ValueData, |
| IN ULONG ValueLength); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortSetTrappedEmulatorPorts( |
| IN PVOID HwDeviceExtension, |
| IN ULONG NumAccessRanges, |
| IN PVIDEO_ACCESS_RANGE AccessRange); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortStallExecution( |
| IN ULONG Microseconds); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortStartTimer( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortStopTimer( |
| IN PVOID HwDeviceExtension); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortSynchronizeExecution( |
| IN PVOID HwDeviceExtension, |
| IN VIDEO_SYNCHRONIZE_PRIORITY Priority, |
| IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, |
| IN PVOID Context); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortUnmapMemory( |
| IN PVOID HwDeviceExtension, |
| IN OUT PVOID VirtualAddress, |
| IN HANDLE ProcessHandle); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortVerifyAccessRanges( |
| IN PVOID HwDeviceExtension, |
| IN ULONG NumAccessRanges, |
| IN PVIDEO_ACCESS_RANGE AccessRanges); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortBufferUchar( |
| IN PUCHAR Port, |
| IN PUCHAR Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortBufferUlong( |
| IN PULONG Port, |
| IN PULONG Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortBufferUshort( |
| IN PUSHORT Port, |
| IN PUSHORT Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortUchar( |
| IN PUCHAR Port, |
| IN UCHAR Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortUlong( |
| IN PULONG Port, |
| IN ULONG Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWritePortUshort( |
| IN PUSHORT Port, |
| IN USHORT Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterBufferUchar( |
| IN PUCHAR Register, |
| IN PUCHAR Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterBufferUlong( |
| IN PULONG Register, |
| IN PULONG Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterBufferUshort( |
| IN PUSHORT Register, |
| IN PUSHORT Buffer, |
| IN ULONG Count); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterUchar( |
| IN PUCHAR Register, |
| IN UCHAR Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterUlong( |
| IN PULONG Register, |
| IN ULONG Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortWriteRegisterUshort( |
| IN PUSHORT Register, |
| IN USHORT Value); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortZeroDeviceMemory( |
| IN PVOID Destination, |
| IN ULONG Length); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortZeroMemory( |
| IN PVOID Destination, |
| IN ULONG Length); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortAllocateContiguousMemory( |
| IN PVOID HwDeviceExtension, |
| IN ULONG NumberOfBytes, |
| IN PHYSICAL_ADDRESS HighestAcceptableAddress); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetCommonBuffer( |
| IN PVOID HwDeviceExtension, |
| IN ULONG DesiredLength, |
| IN ULONG Alignment, |
| OUT PPHYSICAL_ADDRESS LogicalAddress, |
| OUT PULONG pActualLength, |
| IN BOOLEAN CacheEnabled); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortFreeCommonBuffer( |
| IN PVOID HwDeviceExtension, |
| IN ULONG Length, |
| IN PVOID VirtualAddress, |
| IN PHYSICAL_ADDRESS LogicalAddress, |
| IN BOOLEAN CacheEnabled); |
| |
| VPAPI |
| PDMA |
| NTAPI |
| VideoPortDoDma( |
| IN PVOID HwDeviceExtension, |
| IN PDMA pDma, |
| IN DMA_FLAGS DmaFlags); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortLockPages( |
| IN PVOID HwDeviceExtension, |
| IN OUT PVIDEO_REQUEST_PACKET pVrp, |
| IN OUT PEVENT pUEvent, |
| IN PEVENT pDisplayEvent, |
| IN DMA_FLAGS DmaFlags); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortUnlockPages( |
| IN PVOID hwDeviceExtension, |
| IN OUT PDMA pDma); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortSignalDmaComplete( |
| IN PVOID HwDeviceExtension, |
| IN PDMA pDmaHandle); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetMdl( |
| IN PVOID HwDeviceExtension, |
| IN PDMA pDma); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortGetDmaContext( |
| IN PVOID HwDeviceExtension, |
| IN PDMA pDma); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortSetDmaContext( |
| IN PVOID HwDeviceExtension, |
| OUT PDMA pDma, |
| IN PVOID InstanceContext); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortGetBytesUsed( |
| IN PVOID HwDeviceExtension, |
| IN PDMA pDma); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortSetBytesUsed( |
| IN PVOID HwDeviceExtension, |
| IN OUT PDMA pDma, |
| IN ULONG BytesUsed); |
| |
| VPAPI |
| PDMA |
| NTAPI |
| VideoPortAssociateEventsWithDmaHandle( |
| IN PVOID HwDeviceExtension, |
| IN OUT PVIDEO_REQUEST_PACKET pVrp, |
| IN PVOID MappedUserEvent, |
| IN PVOID DisplayDriverEvent); |
| |
| VPAPI |
| PDMA |
| NTAPI |
| VideoPortMapDmaMemory( |
| IN PVOID HwDeviceExtension, |
| IN PVIDEO_REQUEST_PACKET pVrp, |
| IN PHYSICAL_ADDRESS BoardAddress, |
| IN PULONG Length, |
| IN PULONG InIoSpace, |
| IN PVOID MappedUserEvent, |
| IN PVOID DisplayDriverEvent, |
| IN OUT PVOID *VirtualAddress); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortUnmapDmaMemory( |
| IN PVOID HwDeviceExtension, |
| IN PVOID VirtualAddress, |
| IN HANDLE ProcessHandle, |
| IN PDMA BoardMemoryHandle); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortCreateSecondaryDisplay( |
| IN PVOID HwDeviceExtension, |
| IN OUT PVOID *SecondaryDeviceExtension, |
| IN ULONG ulFlag); |
| |
| VPAPI |
| PVP_DMA_ADAPTER |
| NTAPI |
| VideoPortGetDmaAdapter( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortPutDmaAdapter( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortAllocateCommonBuffer( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter, |
| IN ULONG DesiredLength, |
| OUT PPHYSICAL_ADDRESS LogicalAddress, |
| IN BOOLEAN CacheEnabled, |
| PVOID Reserved); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReleaseCommonBuffer( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter, |
| IN ULONG Length, |
| IN PHYSICAL_ADDRESS LogicalAddress, |
| IN PVOID VirtualAddress, |
| IN BOOLEAN CacheEnabled); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortLockBuffer( |
| IN PVOID HwDeviceExtension, |
| IN PVOID BaseAddress, |
| IN ULONG Length, |
| IN VP_LOCK_OPERATION Operation); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortUnLockBuffer( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Mdl); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortStartDma( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter, |
| IN PVOID Mdl, |
| IN ULONG Offset, |
| IN OUT PULONG pLength, |
| IN PEXECUTE_DMA ExecuteDmaRoutine, |
| IN PVOID Context, |
| IN BOOLEAN WriteToDevice); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortCompleteDma( |
| IN PVOID HwDeviceExtension, |
| IN PVP_DMA_ADAPTER VpDmaAdapter, |
| IN PVP_SCATTER_GATHER_LIST VpScatterGather, |
| IN BOOLEAN WriteToDevice); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortCreateEvent( |
| IN PVOID HwDeviceExtension, |
| IN ULONG EventFlag, |
| IN PVOID Unused, |
| OUT PEVENT *ppEvent); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortDeleteEvent( |
| IN PVOID HwDeviceExtension, |
| IN PEVENT pEvent); |
| |
| VPAPI |
| LONG |
| NTAPI |
| VideoPortSetEvent( |
| IN PVOID HwDeviceExtension, |
| IN PEVENT pEvent); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortClearEvent( |
| IN PVOID HwDeviceExtension, |
| IN PEVENT pEvent); |
| |
| VPAPI |
| LONG |
| NTAPI |
| VideoPortReadStateEvent( |
| IN PVOID HwDeviceExtension, |
| IN PEVENT pEvent); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortWaitForSingleObject( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Object, |
| IN PLARGE_INTEGER Timeout OPTIONAL); |
| |
| VPAPI |
| PVOID |
| NTAPI |
| VideoPortAllocatePool( |
| IN PVOID HwDeviceExtension, |
| IN VP_POOL_TYPE PoolType, |
| IN SIZE_T NumberOfBytes, |
| IN ULONG Tag); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortFreePool( |
| IN PVOID HwDeviceExtension, |
| IN PVOID Ptr); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortCreateSpinLock( |
| IN PVOID HwDeviceExtension, |
| OUT PSPIN_LOCK *SpinLock); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortDeleteSpinLock( |
| IN PVOID HwDeviceExtension, |
| IN PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortAcquireSpinLock( |
| IN PVOID HwDeviceExtension, |
| IN PSPIN_LOCK SpinLock, |
| OUT PUCHAR OldIrql); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortAcquireSpinLockAtDpcLevel( |
| IN PVOID HwDeviceExtension, |
| IN PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReleaseSpinLock( |
| IN PVOID HwDeviceExtension, |
| IN PSPIN_LOCK SpinLock, |
| IN UCHAR NewIrql); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortReleaseSpinLockFromDpcLevel( |
| IN PVOID HwDeviceExtension, |
| IN PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortQuerySystemTime( |
| OUT PLARGE_INTEGER CurrentTime); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortCheckForDeviceExistence( |
| IN PVOID HwDeviceExtension, |
| IN USHORT VendorId, |
| IN USHORT DeviceId, |
| IN UCHAR RevisionId, |
| IN USHORT SubVendorId, |
| IN USHORT SubSystemId, |
| IN ULONG Flags); |
| |
| VPAPI |
| ULONG |
| NTAPI |
| VideoPortGetAssociatedDeviceID( |
| IN PVOID DeviceObject); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortFlushRegistry( |
| PVOID HwDeviceExtension); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortGetVersion( |
| IN PVOID HwDeviceExtension, |
| IN OUT PVPOSVERSIONINFO pVpOsVersionInfo); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortIsNoVesa(VOID); |
| |
| VPAPI |
| VP_STATUS |
| NTAPI |
| VideoPortRegisterBugcheckCallback( |
| IN PVOID HwDeviceExtension, |
| IN ULONG BugcheckCode, |
| IN PVIDEO_BUGCHECK_CALLBACK Callback, |
| IN ULONG BugcheckDataSize); |
| |
| VPAPI |
| PVIDEO_DEBUG_REPORT |
| NTAPI |
| VideoPortDbgReportCreate( |
| IN PVOID HwDeviceExtension, |
| IN ULONG ulCode, |
| IN ULONG_PTR ulpArg1, |
| IN ULONG_PTR ulpArg2, |
| IN ULONG_PTR ulpArg3, |
| IN ULONG_PTR ulpArg4); |
| |
| VPAPI |
| BOOLEAN |
| NTAPI |
| VideoPortDbgReportSecondaryData( |
| IN OUT PVIDEO_DEBUG_REPORT pReport, |
| IN PVOID pvData, |
| IN ULONG ulDataSize); |
| |
| VPAPI |
| VOID |
| NTAPI |
| VideoPortDbgReportComplete( |
| IN OUT PVIDEO_DEBUG_REPORT pReport); |
| |
| #ifdef __cplusplus |
| } |
| #endif |