newlib/winsup/w32api/include/ddk/video.h

1567 lines
33 KiB
C

/*
* 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 */