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