Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758/* * 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. * */
#pragma once
#define __VIDEO_H__
#include "ntddvdeo.h"#include "videoagp.h"
#ifdef __cplusplusextern "C" {#endif
#ifndef _NTOSDEF_
#ifdef PAGED_CODE#undef PAGED_CODE#endif
#if defined(_MSC_VER)#define ALLOC_PRAGMA 1#endif
#if defined(_VIDEOPORT_)#define VPAPI#else#define VPAPI DECLSPEC_IMPORT#endif
#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 /* DBG */
ULONGNTAPIDriverEntry( PVOID Context1, PVOID Context2);
#else
#define VPAPI
#endif /* _NTOSDEF_ */
#if DBG#define VideoDebugPrint(x) VideoPortDebugPrint x#else#define VideoDebugPrint(x)#endif
#define GET_VIDEO_PHYSICAL_ADDRESS(scatterList, \ VirtualAddress, \ InputBuffer, \ pLength, \ Address) \ do { \ ULONG_PTR byteOffset; \ \ byteOffset = (PCHAR) VirtualAddress - (PCHAR)InputBuffer; \ while (byteOffset >= scatterList->Length) { \ byteOffset -= scatterList->Length; \ scatterList++; \ } \ *pLength = scatterList->Length - byteOffset; \ Address = (ULONG_PTR) (scatterList->PhysicalAddress + byteOffset); \ } while (0)
#define GET_VIDEO_SCATTERGATHER(ppDma) (**(PVRB_SG **)ppDma)
/* VIDEO_ACCESS_RANGE.RangePassive */#define VIDEO_RANGE_PASSIVE_DECODE 1#define VIDEO_RANGE_10_BIT_DECODE 2
#define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO FIELD_OFFSET(VIDEO_PORT_CONFIG_INFO, Master)#define SIZE_OF_WXP_VIDEO_PORT_CONFIG_INFO sizeof(VIDEO_PORT_CONFIG_INFO)
#define SET_USER_EVENT 0x01#define SET_DISPLAY_EVENT 0x02
#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
#define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF
#define VIDEO_INVALID_CHILD_ID 0xFFFFFFFF
#define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, HwStartDma)#define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, Reserved)#define SIZE_OF_WXP_VIDEO_HW_INITIALIZATION_DATA (SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA + sizeof(ULONG))
#define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1#define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2#define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1#define VIDEO_PORT_I2C_INTERFACE_VERSION_2 2#define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1#define VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE_VERSION_1 1#define VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1 1
/* 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
/* 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
#define DEVICE_VGA_ENABLED 1
/* VideoPortCheckForDeviceExistence.Flags constants */#define CDE_USE_SUBSYSTEM_IDS 0x00000001#define CDE_USE_REVISION 0x00000002
#define BUGCHECK_DATA_SIZE_RESERVED 48
#define VIDEO_DEBUG_REPORT_MAX_SIZE 0x8000
typedef LONG VP_STATUS, *PVP_STATUS;typedef ULONG DMA_EVENT_FLAGS;
typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK;typedef struct _VIDEO_DEBUG_REPORT *PVIDEO_DEBUG_REPORT;typedef struct __DMA_PARAMETERS *PDMA;typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER;
typedef PVOID(NTAPI *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(NTAPI *PVIDEO_HW_FIND_ADAPTER)( IN PVOID HwDeviceExtension, IN PVOID HwContext, IN PWSTR ArgumentString, IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo, OUT PUCHAR Again);
typedef BOOLEAN(NTAPI *PVIDEO_HW_INITIALIZE)( IN PVOID HwDeviceExtension);
typedef BOOLEAN(NTAPI *PVIDEO_HW_INTERRUPT)( IN PVOID HwDeviceExtension);
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(NTAPI *PVIDEO_HW_LEGACYRESOURCES)( IN ULONG VendorId, IN ULONG DeviceId, IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, IN OUT PULONG LegacyResourceCount);
typedef enum _HW_DMA_RETURN { DmaAsyncReturn, DmaSyncReturn} HW_DMA_RETURN, *PHW_DMA_RETURN;
typedef HW_DMA_RETURN(NTAPI *PVIDEO_HW_START_DMA)( PVOID HwDeviceExtension, PDMA pDma);
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(NTAPI *PEXECUTE_DMA)( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, IN PVP_SCATTER_GATHER_LIST SGList, IN PVOID Context);
/* 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(NTAPI *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 VP_STATUS(NTAPI *PVIDEO_HW_POWER_SET)( IN PVOID HwDeviceExtension, IN ULONG HwId, IN PVIDEO_POWER_MANAGEMENT VideoPowerControl);
typedef VP_STATUS(NTAPI *PVIDEO_HW_POWER_GET)( IN PVOID HwDeviceExtension, IN ULONG HwId, IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl);
typedef struct _QUERY_INTERFACE { CONST GUID *InterfaceType; USHORT Size; USHORT Version; PINTERFACE Interface; PVOID InterfaceSpecificData;} QUERY_INTERFACE, *PQUERY_INTERFACE;
typedef VP_STATUS(NTAPI *PVIDEO_HW_QUERY_INTERFACE)( IN PVOID HwDeviceExtension, IN OUT PQUERY_INTERFACE QueryInterface);
typedef VP_STATUS(NTAPI *PVIDEO_HW_CHILD_CALLBACK)( PVOID HwDeviceExtension, PVOID ChildDeviceExtension);
typedef BOOLEAN(NTAPI *PVIDEO_HW_RESET_HW)( IN PVOID HwDeviceExtension, IN ULONG Columns, IN ULONG Rows);
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(NTAPI *PVIDEO_HW_START_IO)( IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET RequestPacket);
typedef VOID(NTAPI *PVIDEO_HW_TIMER)( IN PVOID HwDeviceExtension);
typedef VOID(NTAPI *PVIDEO_WRITE_CLOCK_LINE)( PVOID HwDeviceExtension, UCHAR Data);
typedef VOID(NTAPI *PVIDEO_WRITE_DATA_LINE)( PVOID HwDeviceExtension, UCHAR Data);
typedef BOOLEAN(NTAPI *PVIDEO_READ_CLOCK_LINE)( PVOID HwDeviceExtension);
typedef BOOLEAN(NTAPI *PVIDEO_READ_DATA_LINE)( PVOID HwDeviceExtension);
typedef VOID(NTAPI *PVIDEO_WAIT_VSYNC_ACTIVE)( 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(NTAPI *PI2C_START)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks);
typedef BOOLEAN(NTAPI *PI2C_STOP)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks);
typedef BOOLEAN(NTAPI *PI2C_WRITE)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks, IN PUCHAR Buffer, IN ULONG Length);
typedef BOOLEAN(NTAPI *PI2C_READ)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks, OUT PUCHAR Buffer, IN ULONG Length);
typedef struct _VIDEO_I2C_CONTROL { IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; IN PVIDEO_WRITE_DATA_LINE WriteDataLine; IN PVIDEO_READ_CLOCK_LINE ReadClockLine; IN PVIDEO_READ_DATA_LINE ReadDataLine; IN ULONG I2CDelay;} VIDEO_I2C_CONTROL, *PVIDEO_I2C_CONTROL;
typedef BOOLEAN(NTAPI *PI2C_START_2)( IN PVOID HwDeviceExtension, IN PVIDEO_I2C_CONTROL I2CControl);
typedef BOOLEAN(NTAPI *PI2C_STOP_2)( IN PVOID HwDeviceExtension, IN PVIDEO_I2C_CONTROL I2CControl);
typedef BOOLEAN(NTAPI *PI2C_WRITE_2)( IN PVOID HwDeviceExtension, IN PVIDEO_I2C_CONTROL I2CControl, IN PUCHAR Buffer, IN ULONG Length);
typedef BOOLEAN(NTAPI *PI2C_READ_2)( IN PVOID HwDeviceExtension, IN PVIDEO_I2C_CONTROL I2CControl, OUT PUCHAR Buffer, IN ULONG Length, IN BOOLEAN EndOfRead);
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 VP_STATUS(NTAPI *PINT10_CALL_BIOS)( IN PVOID Context, IN OUT PINT10_BIOS_ARGUMENTS BiosArguments);
typedef VP_STATUS(NTAPI *PINT10_ALLOCATE_BUFFER)( IN PVOID Context, OUT PUSHORT Seg, OUT PUSHORT Off, IN OUT PULONG Length);
typedef VP_STATUS(NTAPI *PINT10_FREE_BUFFER)( IN PVOID Context, IN USHORT Seg, IN USHORT Off);
typedef VP_STATUS(NTAPI *PINT10_READ_MEMORY)( IN PVOID Context, IN USHORT Seg, IN USHORT Off, OUT PVOID Buffer, IN ULONG Length);
typedef VP_STATUS(NTAPI *PINT10_WRITE_MEMORY)( IN PVOID Context, IN USHORT Seg, IN USHORT Off, IN PVOID Buffer, IN ULONG Length);
typedef VP_STATUS(NTAPI *PROTECT_WC_MEMORY)( IN PVOID Context, IN PVOID HwDeviceExtension);
typedef VP_STATUS(NTAPI *RESTORE_WC_MEMORY)( IN PVOID Context, IN PVOID HwDeviceExtension);
typedef enum _VIDEO_DEVICE_DATA_TYPE { VpMachineData = 0, VpCmosData, VpBusData, VpControllerData, VpMonitorData} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
typedef VP_STATUS(NTAPI *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 VP_STATUS(NTAPI *PMINIPORT_GET_REGISTRY_ROUTINE)( IN PVOID HwDeviceExtension, IN PVOID Context, IN OUT PWSTR ValueName, IN OUT PVOID ValueData, IN ULONG ValueLength);
typedef VOID(NTAPI *PMINIPORT_DPC_ROUTINE)( IN PVOID HwDeviceExtension, IN PVOID Context);
typedef BOOLEAN(NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( IN PVOID Context);
typedef VOID(NTAPI *PVIDEO_BUGCHECK_CALLBACK)( IN PVOID HwDeviceExtension, IN ULONG BugcheckCode, IN PUCHAR Buffer, IN ULONG BufferSize);
/* VideoPortSynchronizeExecution.Priority constants */typedef enum VIDEO_SYNCHRONIZE_PRIORITY { VpLowPriority = 0, VpMediumPriority, VpHighPriority} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
/* VideoPortAllocatePool.PoolType constants */typedef enum _VP_POOL_TYPE { VpNonPagedPool = 0, VpPagedPool, VpNonPagedPoolCacheAligned = 4, VpPagedPoolCacheAligned} VP_POOL_TYPE, *PVP_POOL_TYPE;
typedef enum _DMA_FLAGS { VideoPortUnlockAfterDma = 1, VideoPortKeepPagesLocked, VideoPortDmaInitOnly} DMA_FLAGS;
/* * Data returned with VpControllerData. * * The first two fields, InterfaceType and BusNumber, are common * with the CM_FULL_RESOURCE_DESCRIPTOR header. * The other fields are of legacy layout, instead of the newer * CM_PARTIAL_RESOURCE_LIST one. */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;
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 enum VIDEO_DEBUG_LEVEL { Error = 0, Warn, Trace, Info} VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL;
#ifndef _NTOS_
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_UCHAR)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUCHAR Data);
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_UCHAR_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUCHAR Data, IN ULONG DataLength);
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_ULONG)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PULONG Data);
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_ULONG_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PULONG Data, IN ULONG DataLength);
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_USHORT)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUSHORT Data);
typedef VP_STATUS(NTAPI *PDRIVER_IO_PORT_USHORT_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUSHORT Data, IN ULONG DataLength);
#endif /* _NTOS_ */
typedef struct __VRB_SG { __int64 PhysicalAddress; ULONG Length;} VRB_SG, *PVRB_SG;
typedef enum _VP_LOCK_OPERATION { VpReadAccess = 0, VpWriteAccess, VpModifyAccess} VP_LOCK_OPERATION;
typedef struct _VP_DEVICE_DESCRIPTION { BOOLEAN ScatterGather; BOOLEAN Dma32BitAddresses; BOOLEAN Dma64BitAddresses; ULONG MaximumLength;} VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION;
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;
typedef struct _I2C_FNC_TABLE { IN ULONG Size; IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; IN PVIDEO_WRITE_DATA_LINE WriteDataLine; IN PVIDEO_READ_CLOCK_LINE ReadClockLine; IN PVIDEO_READ_DATA_LINE ReadDataLine; IN PVIDEO_WAIT_VSYNC_ACTIVE WaitVsync; PVOID Reserved;} I2C_FNC_TABLE, *PI2C_FNC_TABLE;
typedef struct _DDC_CONTROL { IN ULONG Size; IN I2C_CALLBACKS I2CCallbacks; IN UCHAR EdidSegment;} DDC_CONTROL, *PDDC_CONTROL;
/* VideoPortQueryServices.ServicesType constants */typedef enum _VIDEO_PORT_SERVICES { VideoPortServicesAGP = 1, VideoPortServicesI2C, VideoPortServicesHeadless, VideoPortServicesInt10, VideoPortServicesDebugReport, VideoPortServicesWCMemoryProtection} VIDEO_PORT_SERVICES;
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;
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;
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;
typedef struct _VIDEO_PORT_I2C_INTERFACE_2 { IN USHORT Size; IN USHORT Version; OUT PVOID Context; OUT PINTERFACE_REFERENCE InterfaceReference; OUT PINTERFACE_DEREFERENCE InterfaceDereference; OUT PI2C_START_2 I2CStart; OUT PI2C_STOP_2 I2CStop; OUT PI2C_WRITE_2 I2CWrite; OUT PI2C_READ_2 I2CRead;} VIDEO_PORT_I2C_INTERFACE_2, *PVIDEO_PORT_I2C_INTERFACE_2;
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;
typedef struct _VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE { IN USHORT Size; IN USHORT Version; OUT PVOID Context; OUT PINTERFACE_REFERENCE InterfaceReference; OUT PINTERFACE_DEREFERENCE InterfaceDereference; OUT PROTECT_WC_MEMORY VideoPortProtectWCMemory; OUT RESTORE_WC_MEMORY VideoPortRestoreWCMemory;} VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE, *PVIDEO_PORT_WCMEMORYPROTECTION_INTERFACE;
typedef struct _VPOSVERSIONINFO { IN ULONG Size; OUT ULONG MajorVersion; OUT ULONG MinorVersion; OUT ULONG BuildNumber; OUT USHORT ServicePackMajor; OUT USHORT ServicePackMinor;} VPOSVERSIONINFO, *PVPOSVERSIONINFO;
typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE { IN USHORT Size; IN USHORT Version; OUT PVOID Context; OUT PINTERFACE_REFERENCE InterfaceReference; OUT PINTERFACE_DEREFERENCE InterfaceDereference; OUT PVIDEO_DEBUG_REPORT (*DbgReportCreate)( IN PVOID HwDeviceExtension, IN ULONG ulCode, IN ULONG_PTR ulpArg1, IN ULONG_PTR ulpArg2, IN ULONG_PTR ulpArg3, IN ULONG_PTR ulpArg4 ); OUT BOOLEAN (*DbgReportSecondaryData)( IN OUT PVIDEO_DEBUG_REPORT pReport, IN PVOID pvData, IN ULONG ulDataSize ); OUT VOID (*DbgReportComplete)( IN OUT PVIDEO_DEBUG_REPORT pReport );} VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE;
/* Video port functions for miniports */
VPAPIVP_STATUSNTAPIVideoPortAllocateBuffer( IN PVOID HwDeviceExtension, IN ULONG Size, OUT PVOID *Buffer);
VPAPIVOIDNTAPIVideoPortAcquireDeviceLock( IN PVOID HwDeviceExtension);
VPAPIULONGNTAPIVideoPortCompareMemory( IN PVOID Source1, IN PVOID Source2, IN SIZE_T Length);
VPAPIBOOLEANNTAPIVideoPortDDCMonitorHelper( IN PVOID HwDeviceExtension, IN PVOID DDCControl, IN OUT PUCHAR EdidBuffer, IN ULONG EdidBufferSize);
VPAPIVOID__cdeclVideoPortDebugPrint( IN VIDEO_DEBUG_LEVEL DebugPrintLevel, IN PSTR DebugMessage, IN ...);
VPAPIVP_STATUSNTAPIVideoPortDisableInterrupt( IN PVOID HwDeviceExtension);
VPAPIVP_STATUSNTAPIVideoPortEnableInterrupt( IN PVOID HwDeviceExtension);
VPAPIVP_STATUSNTAPIVideoPortEnumerateChildren( IN PVOID HwDeviceExtension, IN PVOID Reserved);
VPAPIVOIDNTAPIVideoPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress);
VPAPIVP_STATUSNTAPIVideoPortGetAccessRanges( _In_ PVOID HwDeviceExtension, _In_opt_ ULONG NumRequestedResources, _In_reads_opt_(NumRequestedResources) PIO_RESOURCE_DESCRIPTOR RequestedResources, _In_ ULONG NumAccessRanges, _Out_writes_(NumAccessRanges) PVIDEO_ACCESS_RANGE AccessRanges, _In_ PVOID VendorId, _In_ PVOID DeviceId, _Out_ PULONG Slot);
VPAPIPVOIDNTAPIVideoPortGetAssociatedDeviceExtension( IN PVOID DeviceObject);
VPAPIULONGNTAPIVideoPortGetBusData( IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, IN ULONG SlotNumber, IN OUT PVOID Buffer, IN ULONG Offset, IN ULONG Length);
VPAPIUCHARNTAPIVideoPortGetCurrentIrql(VOID);
VPAPIPVOIDNTAPIVideoPortGetDeviceBase( IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfUchars, IN UCHAR InIoSpace);
VPAPIVP_STATUSNTAPIVideoPortGetDeviceData( IN PVOID HwDeviceExtension, IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, IN PVOID Context);
VPAPIVP_STATUSNTAPIVideoPortGetRegistryParameters( IN PVOID HwDeviceExtension, IN PWSTR ParameterName, IN UCHAR IsParameterFileName, IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, IN PVOID Context);
VPAPIPVOIDNTAPIVideoPortGetRomImage( IN PVOID HwDeviceExtension, IN PVOID Unused1, IN ULONG Unused2, IN ULONG Length);
VPAPIVP_STATUSNTAPIVideoPortGetVgaStatus( IN PVOID HwDeviceExtension, OUT PULONG VgaStatus);
VPAPILONGFASTCALLVideoPortInterlockedDecrement( IN PLONG Addend);
VPAPILONGFASTCALLVideoPortInterlockedExchange( IN OUT PLONG Target, IN LONG Value);
VPAPILONGFASTCALLVideoPortInterlockedIncrement( IN PLONG Addend);
VPAPIULONGNTAPIVideoPortInitialize( IN PVOID Argument1, IN PVOID Argument2, IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, IN PVOID HwContext);
VPAPIVP_STATUSNTAPIVideoPortInt10( IN PVOID HwDeviceExtension, IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
VPAPIVOIDNTAPIVideoPortLogError( IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, IN VP_STATUS ErrorCode, IN ULONG UniqueId);
VPAPIVP_STATUSNTAPIVideoPortMapBankedMemory( 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);
VPAPIVP_STATUSNTAPIVideoPortMapMemory( IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS PhysicalAddress, IN OUT PULONG Length, IN PULONG InIoSpace, IN OUT PVOID *VirtualAddress);
VPAPIVOIDNTAPIVideoPortMoveMemory( IN PVOID Destination, IN PVOID Source, IN ULONG Length);
VPAPILONGLONGNTAPIVideoPortQueryPerformanceCounter( IN PVOID HwDeviceExtension, OUT PLONGLONG PerformanceFrequency OPTIONAL);
VPAPIVP_STATUSNTAPIVideoPortQueryServices( _In_ PVOID HwDeviceExtension, _In_ VIDEO_PORT_SERVICES ServicesType, _Inout_ PINTERFACE Interface);
VPAPIBOOLEANNTAPIVideoPortQueueDpc( IN PVOID HwDeviceExtension, IN PMINIPORT_DPC_ROUTINE CallbackRoutine, IN PVOID Context);
VPAPIVOIDNTAPIVideoPortReadPortBufferUchar( IN PUCHAR Port, OUT PUCHAR Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortReadPortBufferUlong( IN PULONG Port, OUT PULONG Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortReadPortBufferUshort( IN PUSHORT Port, OUT PUSHORT Buffer, IN ULONG Count);
VPAPIUCHARNTAPIVideoPortReadPortUchar( IN PUCHAR Port);
VPAPIULONGNTAPIVideoPortReadPortUlong( IN PULONG Port);
VPAPIUSHORTNTAPIVideoPortReadPortUshort( IN PUSHORT Port);
VPAPIVOIDNTAPIVideoPortReadRegisterBufferUchar( IN PUCHAR Register, OUT PUCHAR Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortReadRegisterBufferUlong( IN PULONG Register, OUT PULONG Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortReadRegisterBufferUshort( IN PUSHORT Register, OUT PUSHORT Buffer, IN ULONG Count);
VPAPIUCHARNTAPIVideoPortReadRegisterUchar( IN PUCHAR Register);
VPAPIULONGNTAPIVideoPortReadRegisterUlong( IN PULONG Register);
VPAPIUSHORTNTAPIVideoPortReadRegisterUshort( IN PUSHORT Register);
VPAPIVOIDNTAPIVideoPortReleaseBuffer( IN PVOID HwDeviceExtension, IN PVOID Buffer);
VPAPIVOIDNTAPIVideoPortReleaseDeviceLock( IN PVOID HwDeviceExtension);
VPAPIBOOLEANNTAPIVideoPortScanRom( PVOID HwDeviceExtension, PUCHAR RomBase, ULONG RomLength, PUCHAR String);
VPAPIULONGNTAPIVideoPortSetBusData( IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length);
VPAPIVP_STATUSNTAPIVideoPortSetRegistryParameters( IN PVOID HwDeviceExtension, IN PWSTR ValueName, IN PVOID ValueData, IN ULONG ValueLength);
VPAPIVP_STATUSNTAPIVideoPortSetTrappedEmulatorPorts( IN PVOID HwDeviceExtension, IN ULONG NumAccessRanges, IN PVIDEO_ACCESS_RANGE AccessRange);
VPAPIVOIDNTAPIVideoPortStallExecution( IN ULONG Microseconds);
VPAPIVOIDNTAPIVideoPortStartTimer( IN PVOID HwDeviceExtension);
VPAPIVOIDNTAPIVideoPortStopTimer( IN PVOID HwDeviceExtension);
VPAPIBOOLEANNTAPIVideoPortSynchronizeExecution( IN PVOID HwDeviceExtension, IN VIDEO_SYNCHRONIZE_PRIORITY Priority, IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID Context);
VPAPIVP_STATUSNTAPIVideoPortUnmapMemory( IN PVOID HwDeviceExtension, IN OUT PVOID VirtualAddress, IN HANDLE ProcessHandle);
VPAPIVP_STATUSNTAPIVideoPortVerifyAccessRanges( _In_ PVOID HwDeviceExtension, _In_opt_ ULONG NumAccessRanges, _In_reads_opt_(NumAccessRanges) PVIDEO_ACCESS_RANGE AccessRanges);
VPAPIVOIDNTAPIVideoPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value);
VPAPIVOIDNTAPIVideoPortWritePortUlong( IN PULONG Port, IN ULONG Value);
VPAPIVOIDNTAPIVideoPortWritePortUshort( IN PUSHORT Port, IN USHORT Value);
VPAPIVOIDNTAPIVideoPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count);
VPAPIVOIDNTAPIVideoPortWriteRegisterUchar( IN PUCHAR Register, IN UCHAR Value);
VPAPIVOIDNTAPIVideoPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value);
VPAPIVOIDNTAPIVideoPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value);
VPAPIVOIDNTAPIVideoPortZeroDeviceMemory( IN PVOID Destination, IN ULONG Length);
VPAPIVOIDNTAPIVideoPortZeroMemory( IN PVOID Destination, IN ULONG Length);
VPAPIPVOIDNTAPIVideoPortAllocateContiguousMemory( IN PVOID HwDeviceExtension, IN ULONG NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress);
VPAPIPVOIDNTAPIVideoPortGetCommonBuffer( IN PVOID HwDeviceExtension, IN ULONG DesiredLength, IN ULONG Alignment, OUT PPHYSICAL_ADDRESS LogicalAddress, OUT PULONG pActualLength, IN BOOLEAN CacheEnabled);
VPAPIVOIDNTAPIVideoPortFreeCommonBuffer( IN PVOID HwDeviceExtension, IN ULONG Length, IN PVOID VirtualAddress, IN PHYSICAL_ADDRESS LogicalAddress, IN BOOLEAN CacheEnabled);
VPAPIPDMANTAPIVideoPortDoDma( IN PVOID HwDeviceExtension, IN PDMA pDma, IN DMA_FLAGS DmaFlags);
VPAPIBOOLEANNTAPIVideoPortLockPages( IN PVOID HwDeviceExtension, IN OUT PVIDEO_REQUEST_PACKET pVrp, IN OUT PEVENT pUEvent, IN PEVENT pDisplayEvent, IN DMA_FLAGS DmaFlags);
VPAPIBOOLEANNTAPIVideoPortUnlockPages( IN PVOID hwDeviceExtension, IN OUT PDMA pDma);
VPAPIBOOLEANNTAPIVideoPortSignalDmaComplete( IN PVOID HwDeviceExtension, IN PDMA pDmaHandle);
VPAPIPVOIDNTAPIVideoPortGetMdl( IN PVOID HwDeviceExtension, IN PDMA pDma);
VPAPIPVOIDNTAPIVideoPortGetDmaContext( IN PVOID HwDeviceExtension, IN PDMA pDma);
VPAPIVOIDNTAPIVideoPortSetDmaContext( IN PVOID HwDeviceExtension, OUT PDMA pDma, IN PVOID InstanceContext);
VPAPIULONGNTAPIVideoPortGetBytesUsed( IN PVOID HwDeviceExtension, IN PDMA pDma);
VPAPIVOIDNTAPIVideoPortSetBytesUsed( IN PVOID HwDeviceExtension, IN OUT PDMA pDma, IN ULONG BytesUsed);
VPAPIPDMANTAPIVideoPortAssociateEventsWithDmaHandle( IN PVOID HwDeviceExtension, IN OUT PVIDEO_REQUEST_PACKET pVrp, IN PVOID MappedUserEvent, IN PVOID DisplayDriverEvent);
VPAPIPDMANTAPIVideoPortMapDmaMemory( 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);
VPAPIBOOLEANNTAPIVideoPortUnmapDmaMemory( IN PVOID HwDeviceExtension, IN PVOID VirtualAddress, IN HANDLE ProcessHandle, IN PDMA BoardMemoryHandle);
VPAPIVP_STATUSNTAPIVideoPortCreateSecondaryDisplay( IN PVOID HwDeviceExtension, IN OUT PVOID *SecondaryDeviceExtension, IN ULONG ulFlag);
VPAPIPVP_DMA_ADAPTERNTAPIVideoPortGetDmaAdapter( IN PVOID HwDeviceExtension, IN PVP_DEVICE_DESCRIPTION VpDeviceDescription);
VPAPIVOIDNTAPIVideoPortPutDmaAdapter( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter);
VPAPIPVOIDNTAPIVideoPortAllocateCommonBuffer( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, IN ULONG DesiredLength, OUT PPHYSICAL_ADDRESS LogicalAddress, IN BOOLEAN CacheEnabled, PVOID Reserved);
VPAPIVOIDNTAPIVideoPortReleaseCommonBuffer( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, IN ULONG Length, IN PHYSICAL_ADDRESS LogicalAddress, IN PVOID VirtualAddress, IN BOOLEAN CacheEnabled);
VPAPIPVOIDNTAPIVideoPortLockBuffer( IN PVOID HwDeviceExtension, IN PVOID BaseAddress, IN ULONG Length, IN VP_LOCK_OPERATION Operation);
VPAPIVOIDNTAPIVideoPortUnlockBuffer( IN PVOID HwDeviceExtension, IN PVOID Mdl);
VPAPIVP_STATUSNTAPIVideoPortStartDma( 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);
VPAPIVP_STATUSNTAPIVideoPortCompleteDma( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, IN PVP_SCATTER_GATHER_LIST VpScatterGather, IN BOOLEAN WriteToDevice);
VPAPIVP_STATUSNTAPIVideoPortCreateEvent( IN PVOID HwDeviceExtension, IN ULONG EventFlag, IN PVOID Unused, OUT PEVENT *ppEvent);
VPAPIVP_STATUSNTAPIVideoPortDeleteEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent);
VPAPILONGNTAPIVideoPortSetEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent);
VPAPIVOIDNTAPIVideoPortClearEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent);
VPAPILONGNTAPIVideoPortReadStateEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent);
VPAPIVP_STATUSNTAPIVideoPortWaitForSingleObject( IN PVOID HwDeviceExtension, IN PVOID Object, IN PLARGE_INTEGER Timeout OPTIONAL);
VPAPIPVOIDNTAPIVideoPortAllocatePool( IN PVOID HwDeviceExtension, IN VP_POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag);
VPAPIVOIDNTAPIVideoPortFreePool( IN PVOID HwDeviceExtension, IN PVOID Ptr);
VPAPIVP_STATUSNTAPIVideoPortCreateSpinLock( IN PVOID HwDeviceExtension, OUT PSPIN_LOCK *SpinLock);
VPAPIVP_STATUSNTAPIVideoPortDeleteSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock);
VPAPIVOIDNTAPIVideoPortAcquireSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock, OUT PUCHAR OldIrql);
VPAPIVOIDNTAPIVideoPortAcquireSpinLockAtDpcLevel( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock);
VPAPIVOIDNTAPIVideoPortReleaseSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock, IN UCHAR NewIrql);
VPAPIVOIDNTAPIVideoPortReleaseSpinLockFromDpcLevel( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock);
VPAPIVOIDNTAPIVideoPortQuerySystemTime( OUT PLARGE_INTEGER CurrentTime);
VPAPIBOOLEANNTAPIVideoPortCheckForDeviceExistence( IN PVOID HwDeviceExtension, IN USHORT VendorId, IN USHORT DeviceId, IN UCHAR RevisionId, IN USHORT SubVendorId, IN USHORT SubSystemId, IN ULONG Flags);
VPAPIULONGNTAPIVideoPortGetAssociatedDeviceID( IN PVOID DeviceObject);
VPAPIVP_STATUSNTAPIVideoPortFlushRegistry( PVOID HwDeviceExtension);
VPAPIVP_STATUSNTAPIVideoPortGetVersion( IN PVOID HwDeviceExtension, IN OUT PVPOSVERSIONINFO pVpOsVersionInfo);
VPAPIBOOLEANNTAPIVideoPortIsNoVesa(VOID);
VPAPIVP_STATUSNTAPIVideoPortRegisterBugcheckCallback( IN PVOID HwDeviceExtension, IN ULONG BugcheckCode, IN PVIDEO_BUGCHECK_CALLBACK Callback, IN ULONG BugcheckDataSize);
VPAPIPVIDEO_DEBUG_REPORTNTAPIVideoPortDbgReportCreate( IN PVOID HwDeviceExtension, IN ULONG ulCode, IN ULONG_PTR ulpArg1, IN ULONG_PTR ulpArg2, IN ULONG_PTR ulpArg3, IN ULONG_PTR ulpArg4);
VPAPIBOOLEANNTAPIVideoPortDbgReportSecondaryData( IN OUT PVIDEO_DEBUG_REPORT pReport, IN PVOID pvData, IN ULONG ulDataSize);
VPAPIVOIDNTAPIVideoPortDbgReportComplete( IN OUT PVIDEO_DEBUG_REPORT pReport);
#ifdef __cplusplus}#endif