6ac7b97610
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h, miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h, ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h, netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h, ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h, ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h, ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h, ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h, poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h, storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h, upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h, usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h, winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h, xfilter.h): Fix typo in disclaimer comment.
1563 lines
31 KiB
C
1563 lines
31 KiB
C
/*
|
|
* video.h
|
|
*
|
|
* Video port and miniport driver interface
|
|
*
|
|
* This file is part of the MinGW 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
|
|
|
|
#ifdef __WINDDI_H
|
|
#error winddi.h cannot be included with video.h
|
|
#endif
|
|
|
|
#if __GNUC__ >=3
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
#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);
|
|
|
|
|
|
#if 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
|
|
|
|
typedef struct _VIDEO_ACCESS_RANGE {
|
|
PHYSICAL_ADDRESS RangeStart;
|
|
ULONG RangeLength;
|
|
UCHAR RangeInIoSpace;
|
|
UCHAR RangeVisible;
|
|
UCHAR RangeShareable;
|
|
UCHAR RangePassive;
|
|
} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
|
|
|
|
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 {
|
|
union {
|
|
VP_STATUS Status;
|
|
PVOID Pointer;
|
|
};
|
|
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,
|
|
IN ULONG Length);
|
|
|
|
#if DBG
|
|
#define VideoDebugPrint(x) VideoPortDebugPrint x
|
|
#else
|
|
#define VideoDebugPrint(x)
|
|
#endif
|
|
|
|
#pragma pack(pop)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __VIDEO_H */
|