| /* |
| * 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. |
| * |
| */ |
| |
| #ifndef __VIDEO_H |
| #define __VIDEO_H |
| |
| |
| #if __GNUC__ >=3 |
| #pragma GCC system_header |
| #endif |
| |
| #ifdef __WINDDI_H |
| #error winddi.h cannot be included with video.h |
| #else |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "ntddk.h" |
| |
| #if defined(_VIDEOPORT_) |
| #define VPAPI DECLSPEC_EXPORT |
| #else |
| #define VPAPI DECLSPEC_IMPORT |
| #endif |
| |
| #include "videoagp.h" |
| #include "ntddvdeo.h" |
| |
| |
| typedef LONG VP_STATUS; |
| typedef VP_STATUS *PVP_STATUS; |
| typedef struct __DMA_PARAMETERS * PDMA; |
| typedef struct _VIDEO_PORT_EVENT *PEVENT; |
| typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; |
| typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; |
| |
| #define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF |
| |
| #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 |
| |
| typedef enum VIDEO_DEBUG_LEVEL { |
| Error = 0, |
| Warn, |
| Trace, |
| Info |
| } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; |
| |
| typedef enum { |
| VideoPortUnlockAfterDma = 1, |
| VideoPortKeepPagesLocked, |
| VideoPortDmaInitOnly |
| } DMA_FLAGS; |
| |
| typedef enum _HW_DMA_RETURN { |
| DmaAsyncReturn, |
| DmaSyncReturn |
| } HW_DMA_RETURN, *PHW_DMA_RETURN; |
| |
| typedef HW_DMA_RETURN |
| (*PVIDEO_HW_START_DMA)( |
| PVOID HwDeviceExtension, |
| PDMA pDma); |
| |
| |
| #ifdef 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 |
| |
| 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; |
| |
| #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO 0x42 |
| #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28 |
| #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50 |
| |
| typedef enum _VIDEO_DEVICE_DATA_TYPE { |
| VpMachineData = 0, |
| VpCmosData, |
| VpBusData, |
| VpControllerData, |
| VpMonitorData |
| } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; |
| |
| |
| |
| /* Video miniport driver functions */ |
| |
| 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 DDKAPI |
| (*PEXECUTE_DMA)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, |
| /*IN*/ PVP_SCATTER_GATHER_LIST SGList, |
| /*IN*/ PVOID Context); |
| |
| typedef PVOID DDKAPI |
| (*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 DDKAPI |
| (*PVIDEO_HW_FIND_ADAPTER)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID HwContext, |
| /*IN*/ PWSTR ArgumentString, |
| /*IN OUT*/ PVIDEO_PORT_CONFIG_INFO ConfigInfo, |
| /*OUT*/ PUCHAR Again); |
| |
| typedef VP_STATUS DDKAPI |
| (*PVIDEO_HW_POWER_GET)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG HwId, |
| /*IN OUT*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl); |
| |
| /* 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 |
| |
| /* 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 DDKAPI |
| (*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 BOOLEAN DDKAPI |
| (*PVIDEO_HW_INITIALIZE)( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| typedef BOOLEAN DDKAPI |
| (*PVIDEO_HW_INTERRUPT)( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| /* VIDEO_ACCESS_RANGE.RangePassive */ |
| #define VIDEO_RANGE_PASSIVE_DECODE 1 |
| #define VIDEO_RANGE_10_BIT_DECODE 2 |
| |
| #ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */ |
| #define VIDEO_ACCESS_RANGE_DEFINED |
| typedef struct _VIDEO_ACCESS_RANGE { |
| PHYSICAL_ADDRESS RangeStart; |
| ULONG RangeLength; |
| UCHAR RangeInIoSpace; |
| UCHAR RangeVisible; |
| UCHAR RangeShareable; |
| UCHAR RangePassive; |
| } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; |
| #endif |
| |
| typedef VOID DDKAPI |
| (*PVIDEO_HW_LEGACYRESOURCES)( |
| /*IN*/ ULONG VendorId, |
| /*IN*/ ULONG DeviceId, |
| /*IN OUT*/ PVIDEO_ACCESS_RANGE *LegacyResourceList, |
| /*IN OUT*/ PULONG LegacyResourceCount); |
| |
| typedef VP_STATUS DDKAPI |
| (*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 struct _QUERY_INTERFACE { |
| CONST GUID *InterfaceType; |
| USHORT Size; |
| USHORT Version; |
| PINTERFACE Interface; |
| PVOID InterfaceSpecificData; |
| } QUERY_INTERFACE, *PQUERY_INTERFACE; |
| |
| typedef VP_STATUS DDKAPI |
| (*PVIDEO_HW_QUERY_INTERFACE)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PQUERY_INTERFACE QueryInterface); |
| |
| typedef VP_STATUS DDKAPI |
| (*PMINIPORT_GET_REGISTRY_ROUTINE)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Context, |
| /*IN OUT*/ PWSTR ValueName, |
| /*IN OUT*/ PVOID ValueData, |
| /*IN*/ ULONG ValueLength); |
| |
| typedef BOOLEAN DDKAPI |
| (*PVIDEO_HW_RESET_HW)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG Columns, |
| /*IN*/ ULONG Rows); |
| |
| typedef VP_STATUS DDKAPI |
| (*PVIDEO_HW_POWER_SET)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG HwId, |
| /*IN*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl); |
| |
| 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 DDKAPI |
| (*PVIDEO_HW_START_IO)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVIDEO_REQUEST_PACKET RequestPacket); |
| |
| typedef BOOLEAN DDKAPI |
| (*PMINIPORT_SYNCHRONIZE_ROUTINE)( |
| /*IN*/ PVOID Context); |
| |
| typedef VOID DDKAPI |
| (*PVIDEO_HW_TIMER)( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| typedef VOID DDKAPI |
| (*PMINIPORT_DPC_ROUTINE)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Context); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_UCHAR)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PUCHAR Data); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_UCHAR_STRING)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PUCHAR Data, |
| /*IN*/ ULONG DataLength); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_ULONG)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PULONG Data); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_ULONG_STRING)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PULONG Data, |
| /*IN*/ ULONG DataLength); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_USHORT)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PUSHORT Data); |
| |
| typedef VP_STATUS DDKAPI |
| (*PDRIVER_IO_PORT_USHORT_STRING)( |
| /*IN*/ ULONG_PTR Context, |
| /*IN*/ ULONG Port, |
| /*IN*/ UCHAR AccessMode, |
| /*IN*/ PUSHORT Data, |
| /*IN*/ ULONG DataLength); |
| |
| |
| |
| 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 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; |
| |
| /* VIDEO_PORT_AGP_INTERFACE.Version contants */ |
| #define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 |
| |
| 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; |
| |
| /* VIDEO_PORT_AGP_INTERFACE_2.Version constants */ |
| #define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 |
| |
| 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; |
| |
| #define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 |
| |
| typedef VOID DDKAPI |
| (*PVIDEO_WRITE_CLOCK_LINE)( |
| PVOID HwDeviceExtension, |
| UCHAR Data); |
| |
| typedef VOID DDKAPI |
| (*PVIDEO_WRITE_DATA_LINE)( |
| PVOID HwDeviceExtension, |
| UCHAR Data); |
| |
| typedef BOOLEAN DDKAPI |
| (*PVIDEO_READ_CLOCK_LINE)( |
| PVOID HwDeviceExtension); |
| |
| typedef BOOLEAN DDKAPI |
| (*PVIDEO_READ_DATA_LINE)( |
| 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 DDKAPI |
| (*PI2C_START)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PI2C_CALLBACKS I2CCallbacks); |
| |
| typedef BOOLEAN DDKAPI |
| (*PI2C_STOP)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PI2C_CALLBACKS I2CCallbacks); |
| |
| typedef BOOLEAN DDKAPI |
| (*PI2C_WRITE)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PI2C_CALLBACKS I2CCallbacks, |
| /*IN*/ PUCHAR Buffer, |
| /*IN*/ ULONG Length); |
| |
| typedef BOOLEAN DDKAPI |
| (*PI2C_READ)( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PI2C_CALLBACKS I2CCallbacks, |
| /*OUT*/ PUCHAR Buffer, |
| /*IN*/ ULONG Length); |
| |
| 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; |
| |
| /* VIDEO_PORT_INT10_INTERFACE.Version constants */ |
| #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 |
| |
| typedef VP_STATUS DDKAPI |
| (*PINT10_ALLOCATE_BUFFER)( |
| /*IN*/ PVOID Context, |
| /*OUT*/ PUSHORT Seg, |
| /*OUT*/ PUSHORT Off, |
| /*IN OUT*/ PULONG Length); |
| |
| typedef VP_STATUS DDKAPI |
| (*PINT10_CALL_BIOS)( |
| /*IN*/ PVOID Context, |
| /*IN OUT*/ PINT10_BIOS_ARGUMENTS BiosArguments); |
| |
| typedef VP_STATUS DDKAPI |
| (*PINT10_FREE_BUFFER)( |
| /*IN*/ PVOID Context, |
| /*IN*/ USHORT Seg, |
| /*IN*/ USHORT Off); |
| |
| typedef VP_STATUS DDKAPI |
| (*PINT10_READ_MEMORY)( |
| /*IN*/ PVOID Context, |
| /*IN*/ USHORT Seg, |
| /*IN*/ USHORT Off, |
| /*OUT*/ PVOID Buffer, |
| /*IN*/ ULONG Length); |
| |
| typedef VP_STATUS DDKAPI |
| (*PINT10_WRITE_MEMORY)( |
| /*IN*/ PVOID Context, |
| /*IN*/ USHORT Seg, |
| /*IN*/ USHORT Off, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG Length); |
| |
| 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; |
| |
| /* 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 |
| |
| 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 struct _VP_DEVICE_DESCRIPTION { |
| BOOLEAN ScatterGather; |
| BOOLEAN Dma32BitAddresses; |
| BOOLEAN Dma64BitAddresses; |
| ULONG MaximumLength; |
| } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; |
| |
| typedef struct _VPOSVERSIONINFO { |
| /*IN*/ ULONG Size; |
| /*OUT*/ ULONG MajorVersion; |
| /*OUT*/ ULONG MinorVersion; |
| /*OUT*/ ULONG BuildNumber; |
| /*OUT*/ USHORT ServicePackMajor; |
| /*OUT*/ USHORT ServicePackMinor; |
| } VPOSVERSIONINFO, *PVPOSVERSIONINFO; |
| |
| |
| |
| /* Video port functions for miniports */ |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoDebugPrint( |
| /*IN*/ ULONG DebugPrintLevel, |
| /*IN*/ PCHAR DebugMessage, |
| /*IN*/ ...); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortAcquireDeviceLock( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortAcquireSpinLock( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PSPIN_LOCK SpinLock, |
| /*OUT*/ PUCHAR OldIrql); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortAcquireSpinLockAtDpcLevel( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortAllocateBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG Size, |
| /*OUT*/ PVOID *Buffer); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortAllocateCommonBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, |
| /*IN*/ ULONG DesiredLength, |
| /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, |
| /*IN*/ BOOLEAN CacheEnabled, |
| PVOID Reserved); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortAllocateContiguousMemory( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG NumberOfBytes, |
| /*IN*/ PHYSICAL_ADDRESS HighestAcceptableAddress); |
| |
| /* VideoPortAllocatePool.PoolType constants */ |
| typedef enum _VP_POOL_TYPE { |
| VpNonPagedPool = 0, |
| VpPagedPool, |
| VpNonPagedPoolCacheAligned = 4, |
| VpPagedPoolCacheAligned |
| } VP_POOL_TYPE, *PVP_POOL_TYPE; |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortAllocatePool( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ VP_POOL_TYPE PoolType, |
| /*IN*/ SIZE_T NumberOfBytes, |
| /*IN*/ ULONG Tag); |
| |
| VPAPI |
| PDMA |
| DDKAPI |
| VideoPortAssociateEventsWithDmaHandle( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp, |
| /*IN*/ PVOID MappedUserEvent, |
| /*IN*/ PVOID DisplayDriverEvent); |
| |
| /* VideoPortCheckForDeviceExistence.Flags constants */ |
| #define CDE_USE_SUBSYSTEM_IDS 0x00000001 |
| #define CDE_USE_REVISION 0x00000002 |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortCheckForDeviceExistence( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ USHORT VendorId, |
| /*IN*/ USHORT DeviceId, |
| /*IN*/ UCHAR RevisionId, |
| /*IN*/ USHORT SubVendorId, |
| /*IN*/ USHORT SubSystemId, |
| /*IN*/ ULONG Flags); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortClearEvent( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PEVENT pEvent); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortCompareMemory( |
| /*IN*/ PVOID Source1, |
| /*IN*/ PVOID Source2, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortCompleteDma( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, |
| /*IN*/ PVP_SCATTER_GATHER_LIST VpScatterGather, |
| /*IN*/ BOOLEAN WriteToDevice); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortCreateEvent( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG EventFlag, |
| /*IN*/ PVOID Unused, |
| /*OUT*/ PEVENT *ppEvent); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortCreateSecondaryDisplay( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PVOID *SecondaryDeviceExtension, |
| /*IN*/ ULONG ulFlag); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortCreateSpinLock( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*OUT*/ PSPIN_LOCK *SpinLock); |
| |
| typedef struct _DDC_CONTROL { |
| /*IN*/ ULONG Size; |
| /*IN*/ I2C_CALLBACKS I2CCallbacks; |
| /*IN*/ UCHAR EdidSegment; |
| } DDC_CONTROL, *PDDC_CONTROL; |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortDDCMonitorHelper( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID DDCControl, |
| /*IN OUT*/ PUCHAR EdidBuffer, |
| /*IN*/ ULONG EdidBufferSize); |
| |
| VPAPI |
| VOID |
| DDKCDECLAPI |
| VideoPortDebugPrint( |
| /*IN*/ VIDEO_DEBUG_LEVEL DebugPrintLevel, |
| /*IN*/ PCHAR DebugMessage, |
| /*IN*/ ...); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortDeleteEvent( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PEVENT pEvent); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortDeleteSpinLock( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortDisableInterrupt( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| VPAPI |
| PDMA |
| DDKAPI |
| VideoPortDoDma( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PDMA pDma, |
| /*IN*/ DMA_FLAGS DmaFlags); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortEnableInterrupt( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortEnumerateChildren( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Reserved); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortFreeCommonBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG Length, |
| /*IN*/ PVOID VirtualAddress, |
| /*IN*/ PHYSICAL_ADDRESS LogicalAddress, |
| /*IN*/ BOOLEAN CacheEnabled); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortFreeDeviceBase( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID MappedAddress); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortFreePool( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Ptr); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| 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 |
| DDKAPI |
| VideoPortGetAssociatedDeviceExtension( |
| /*IN*/ PVOID DeviceObject); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortGetAssociatedDeviceID( |
| /*IN*/ PVOID DeviceObject); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortGetBusData( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ BUS_DATA_TYPE BusDataType, |
| /*IN*/ ULONG SlotNumber, |
| /*IN OUT*/ PVOID Buffer, |
| /*IN*/ ULONG Offset, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortGetBytesUsed( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PDMA pDma); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortGetCommonBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG DesiredLength, |
| /*IN*/ ULONG Alignment, |
| /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, |
| /*OUT*/ PULONG pActualLength, |
| /*IN*/ BOOLEAN CacheEnabled); |
| |
| VPAPI |
| UCHAR |
| DDKAPI |
| VideoPortGetCurrentIrql( |
| VOID); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortGetDeviceBase( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PHYSICAL_ADDRESS IoAddress, |
| /*IN*/ ULONG NumberOfUchars, |
| /*IN*/ UCHAR InIoSpace); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortGetDeviceData( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ VIDEO_DEVICE_DATA_TYPE DeviceDataType, |
| /*IN*/ PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, |
| /*IN*/ PVOID Context); |
| |
| VPAPI |
| PVP_DMA_ADAPTER |
| DDKAPI |
| VideoPortGetDmaAdapter( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DEVICE_DESCRIPTION VpDeviceDescription); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortGetDmaContext( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PDMA pDma); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortGetMdl( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PDMA pDma); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortGetRegistryParameters( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PWSTR ParameterName, |
| /*IN*/ UCHAR IsParameterFileName, |
| /*IN*/ PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, |
| /*IN*/ PVOID Context); |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortGetRomImage( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Unused1, |
| /*IN*/ ULONG Unused2, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortGetVersion( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PVPOSVERSIONINFO pVpOsVersionInfo); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortGetVgaStatus( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*OUT*/ PULONG VgaStatus); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortInitialize( |
| /*IN*/ PVOID Argument1, |
| /*IN*/ PVOID Argument2, |
| /*IN*/ PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, |
| /*IN*/ PVOID HwContext); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortInt10( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); |
| |
| VPAPI |
| LONG |
| DDKFASTAPI |
| VideoPortInterlockedDecrement( |
| /*IN*/ PLONG Addend); |
| |
| VPAPI |
| LONG |
| DDKFASTAPI |
| VideoPortInterlockedExchange( |
| /*IN OUT*/ PLONG Target, |
| /*IN*/ LONG Value); |
| |
| VPAPI |
| LONG |
| DDKFASTAPI |
| VideoPortInterlockedIncrement( |
| /*IN*/ PLONG Addend); |
| |
| typedef enum _VP_LOCK_OPERATION { |
| VpReadAccess = 0, |
| VpWriteAccess, |
| VpModifyAccess |
| } VP_LOCK_OPERATION; |
| |
| VPAPI |
| PVOID |
| DDKAPI |
| VideoPortLockBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ ULONG Length, |
| /*IN*/ VP_LOCK_OPERATION Operation); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortLockPages( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp, |
| /*IN OUT*/ PEVENT pUEvent, |
| /*IN*/ PEVENT pDisplayEvent, |
| /*IN*/ DMA_FLAGS DmaFlags); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortLogError( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVIDEO_REQUEST_PACKET Vrp /*OPTIONAL*/, |
| /*IN*/ VP_STATUS ErrorCode, |
| /*IN*/ ULONG UniqueId); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| 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 |
| PDMA |
| DDKAPI |
| 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 |
| VP_STATUS |
| DDKAPI |
| VideoPortMapMemory( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PHYSICAL_ADDRESS PhysicalAddress, |
| /*IN OUT*/ PULONG Length, |
| /*IN*/ PULONG InIoSpace, |
| /*IN OUT*/ PVOID *VirtualAddress); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortMoveMemory( |
| /*IN*/ PVOID Destination, |
| /*IN*/ PVOID Source, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortPutDmaAdapter( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter); |
| |
| VPAPI |
| LONGLONG |
| DDKAPI |
| VideoPortQueryPerformanceCounter( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*OUT*/ PLONGLONG PerformanceFrequency /*OPTIONAL*/); |
| |
| /* VideoPortQueryServices.ServicesType constants */ |
| typedef enum _VIDEO_PORT_SERVICES { |
| VideoPortServicesAGP = 1, |
| VideoPortServicesI2C, |
| VideoPortServicesHeadless, |
| VideoPortServicesInt10 |
| } VIDEO_PORT_SERVICES; |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortQueryServices( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ VIDEO_PORT_SERVICES ServicesType, |
| /*IN OUT*/ PINTERFACE Interface); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortQuerySystemTime( |
| /*OUT*/ PLARGE_INTEGER CurrentTime); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortQueueDpc( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PMINIPORT_DPC_ROUTINE CallbackRoutine, |
| /*IN*/ PVOID Context); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadPortBufferUchar( |
| /*IN*/ PUCHAR Port, |
| /*OUT*/ PUCHAR Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadPortBufferUlong( |
| /*IN*/ PULONG Port, |
| /*OUT*/ PULONG Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadPortBufferUshort( |
| /*IN*/ PUSHORT Port, |
| /*OUT*/ PUSHORT Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| UCHAR |
| DDKAPI |
| VideoPortReadPortUchar( |
| /*IN*/ PUCHAR Port); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortReadPortUlong( |
| /*IN*/ PULONG Port); |
| |
| VPAPI |
| USHORT |
| DDKAPI |
| VideoPortReadPortUshort( |
| /*IN*/ PUSHORT Port); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadRegisterBufferUchar( |
| /*IN*/ PUCHAR Register, |
| /*OUT*/ PUCHAR Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadRegisterBufferUlong( |
| /*IN*/ PULONG Register, |
| /*OUT*/ PULONG Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReadRegisterBufferUshort( |
| /*IN*/ PUSHORT Register, |
| /*OUT*/ PUSHORT Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| UCHAR |
| DDKAPI |
| VideoPortReadRegisterUchar( |
| /*IN*/ PUCHAR Register); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortReadRegisterUlong( |
| /*IN*/ PULONG Register); |
| |
| VPAPI |
| USHORT |
| DDKAPI |
| VideoPortReadRegisterUshort( |
| /*IN*/ PUSHORT Register); |
| |
| VPAPI |
| LONG |
| DDKAPI |
| VideoPortReadStateEvent( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PEVENT pEvent); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReleaseBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Buffer); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReleaseCommonBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter, |
| /*IN*/ ULONG Length, |
| /*IN*/ PHYSICAL_ADDRESS LogicalAddress, |
| /*IN*/ PVOID VirtualAddress, |
| /*IN*/ BOOLEAN CacheEnabled); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReleaseDeviceLock( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReleaseSpinLock( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PSPIN_LOCK SpinLock, |
| /*IN*/ UCHAR NewIrql); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortReleaseSpinLockFromDpcLevel( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PSPIN_LOCK SpinLock); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortScanRom( |
| PVOID HwDeviceExtension, |
| PUCHAR RomBase, |
| ULONG RomLength, |
| PUCHAR String); |
| |
| VPAPI |
| ULONG |
| DDKAPI |
| VideoPortSetBusData( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ BUS_DATA_TYPE BusDataType, |
| /*IN*/ ULONG SlotNumber, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG Offset, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortSetBytesUsed( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PDMA pDma, |
| /*IN*/ ULONG BytesUsed); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortSetDmaContext( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*OUT*/ PDMA pDma, |
| /*IN*/ PVOID InstanceContext); |
| |
| VPAPI |
| LONG |
| DDKAPI |
| VideoPortSetEvent( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PEVENT pEvent); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortSetRegistryParameters( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PWSTR ValueName, |
| /*IN*/ PVOID ValueData, |
| /*IN*/ ULONG ValueLength); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortSetTrappedEmulatorPorts( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG NumAccessRanges, |
| /*IN*/ PVIDEO_ACCESS_RANGE AccessRange); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortSignalDmaComplete( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID pDmaHandle); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortStallExecution( |
| /*IN*/ ULONG Microseconds); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| 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 |
| VOID |
| DDKAPI |
| VideoPortStartTimer( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortStopTimer( |
| /*IN*/ PVOID HwDeviceExtension); |
| |
| /* VideoPortSynchronizeExecution.Priority constants */ |
| typedef enum VIDEO_SYNCHRONIZE_PRIORITY { |
| VpLowPriority = 0, |
| VpMediumPriority, |
| VpHighPriority |
| } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortSynchronizeExecution( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ VIDEO_SYNCHRONIZE_PRIORITY Priority, |
| /*IN*/ PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, |
| /*IN*/ PVOID Context); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortUnLockBuffer( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Mdl); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortUnlockPages( |
| /*IN*/ PVOID hwDeviceExtension, |
| /*IN OUT*/ PDMA pDma); |
| |
| VPAPI |
| BOOLEAN |
| DDKAPI |
| VideoPortUnmapDmaMemory( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID VirtualAddress, |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PDMA BoardMemoryHandle); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortUnmapMemory( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN OUT*/ PVOID VirtualAddress, |
| /*IN*/ HANDLE ProcessHandle); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortVerifyAccessRanges( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ ULONG NumAccessRanges, |
| /*IN*/ PVIDEO_ACCESS_RANGE AccessRanges); |
| |
| VPAPI |
| VP_STATUS |
| DDKAPI |
| VideoPortWaitForSingleObject( |
| /*IN*/ PVOID HwDeviceExtension, |
| /*IN*/ PVOID Object, |
| /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL*/); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortBufferUchar( |
| /*IN*/ PUCHAR Port, |
| /*IN*/ PUCHAR Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortBufferUlong( |
| /*IN*/ PULONG Port, |
| /*IN*/ PULONG Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortBufferUshort( |
| /*IN*/ PUSHORT Port, |
| /*IN*/ PUSHORT Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortUchar( |
| /*IN*/ PUCHAR Port, |
| /*IN*/ UCHAR Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortUlong( |
| /*IN*/ PULONG Port, |
| /*IN*/ ULONG Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWritePortUshort( |
| /*IN*/ PUSHORT Port, |
| /*IN*/ USHORT Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterBufferUchar( |
| /*IN*/ PUCHAR Register, |
| /*IN*/ PUCHAR Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterBufferUlong( |
| /*IN*/ PULONG Register, |
| /*IN*/ PULONG Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterBufferUshort( |
| /*IN*/ PUSHORT Register, |
| /*IN*/ PUSHORT Buffer, |
| /*IN*/ ULONG Count); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterUchar( |
| /*IN*/ PUCHAR Register, |
| /*IN*/ UCHAR Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterUlong( |
| /*IN*/ PULONG Register, |
| /*IN*/ ULONG Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortWriteRegisterUshort( |
| /*IN*/ PUSHORT Register, |
| /*IN*/ USHORT Value); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortZeroDeviceMemory( |
| /*IN*/ PVOID Destination, |
| /*IN*/ ULONG Length); |
| |
| VPAPI |
| VOID |
| DDKAPI |
| VideoPortZeroMemory( |
| /*IN*/ PVOID Destination, |
| /*2IN*/ ULONG Length); |
| |
| #ifdef DBG |
| #define VideoDebugPrint(x) VideoPortDebugPrint x |
| #else |
| #define VideoDebugPrint(x) |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* defined __WINDDI_H */ |
| |
| #endif /* __VIDEO_H */ |