📄 video.h
字号:
/*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,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -