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