⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * 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 __cplusplusextern "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            2typedef 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()#endiftypedef 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 0x50typedef 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_DEFINEDtypedef struct _VIDEO_ACCESS_RANGE {  PHYSICAL_ADDRESS  RangeStart;  ULONG  RangeLength;  UCHAR  RangeInIoSpace;  UCHAR  RangeVisible;  UCHAR  RangeShareable;  UCHAR  RangePassive;} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;#endiftypedef 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 1typedef 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 2typedef 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  1typedef 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)(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -