diff -r 000000000000 -r 76b1f169d9fe mingw-5.1.4/win32/include/ddk/video.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mingw-5.1.4/win32/include/ddk/video.h Fri Apr 03 17:16:45 2009 +0100 @@ -0,0 +1,1566 @@ +/* + * video.h + * + * Video port and miniport driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * 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 */