Author: akhaldi Date: Wed Apr 21 03:33:08 2010 New Revision: 46973
URL: http://svn.reactos.org/svn/reactos?rev=46973&view=rev Log: [DDK] - miniport.h : Remove VIDEO_ACCESS_RANGE definition. - ntagp.h : Introduce pragma once, apply a consistent formatting and add some missing definitions. - video.h : Introduce pragma once, apply a consistent formatting, remove _WINDDI_ guard, group related definitions and add some missing ones. - videoagp.h : Introduce pragma once and apply a consistent formatting.
Modified: branches/header-work/include/ddk/miniport.h branches/header-work/include/ddk/ntagp.h branches/header-work/include/ddk/video.h branches/header-work/include/ddk/videoagp.h
Modified: branches/header-work/include/ddk/miniport.h URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/miniport... ============================================================================== --- branches/header-work/include/ddk/miniport.h [iso-8859-1] (original) +++ branches/header-work/include/ddk/miniport.h [iso-8859-1] Wed Apr 21 03:33:08 2010 @@ -45,18 +45,6 @@ UCHAR StringSupport; PVOID Routine; } EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY; - -#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in video.h */ -#define VIDEO_ACCESS_RANGE_DEFINED -typedef struct _VIDEO_ACCESS_RANGE { - PHYSICAL_ADDRESS RangeStart; - ULONG RangeLength; - UCHAR RangeInIoSpace; - UCHAR RangeVisible; - UCHAR RangeShareable; - UCHAR RangePassive; -} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; -#endif
typedef VOID (NTAPI *PBANKED_SECTION_ROUTINE)(
Modified: branches/header-work/include/ddk/ntagp.h URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/ntagp.h?... ============================================================================== --- branches/header-work/include/ddk/ntagp.h [iso-8859-1] (original) +++ branches/header-work/include/ddk/ntagp.h [iso-8859-1] Wed Apr 21 03:33:08 2010 @@ -20,86 +20,189 @@ * */
-#ifndef __NTAGP_H -#define __NTAGP_H - -#include "video.h" +#pragma once
#ifdef __cplusplus extern "C" { #endif
-#define AGP_BUS_INTERFACE_V1 1L -#define AGP_BUS_INTERFACE_V2 2L +DEFINE_GUID(GUID_AGP_BUS_INTERFACE_STANDARD, 0x2ef74803, 0xd8d3, 0x11d1, 0x9c, 0xaa, 0x00, 0xc0, 0xf0, 0x16, 0x56, 0x36); + +#define AGP_BUS_INTERFACE_V1 1 +#define AGP_BUS_INTERFACE_V2 2 +#define AGP_BUS_INTERFACE_V3 3 +#define AGP_BUS_INTERFACE_V4 4 +#define AGP_BUS_INTERFACE_V5 5
/* Indicates wether the GART supports mapping of physical memory for the CPU */ -#define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001L +#define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001 +#define AGP_CAPABILITIES_CACHE_COHERENT 0x00000002 +#define AGP_CAPABILITIES_REQUIRES_GPU_FLUSH 0x00000004 + +#define AGP_SET_RATE_DISABLE_SBA 0x00010000 +#define AGP_SET_RATE_DISABLE_FW 0x00020000 + +#define AGP_GUARD_PAGE_CHECK_FIRST_ULONG 0x00000001 +#define AGP_GUARD_PAGE_CHECK_USE_SAME_OFFSET 0x00000002 +#define AGP_GUARD_PAGE_CHECK_DO_NOT_BUGCHECK 0x00000004 + +#define AGP_BUS_INTERFACE_V1_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD,SetRate)) +#define AGP_BUS_INTERFACE_V2_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, AgpSize)) +#define AGP_BUS_INTERFACE_V3_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, FlushChipsetCaches)) +#define AGP_BUS_INTERFACE_V4_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, MapMemoryEx)) + +typedef NTSTATUS +(NTAPI *PAGP_BUS_SET_RATE)( + IN PVOID AgpContext, + IN ULONG AgpRate); + +typedef NTSTATUS +(NTAPI *PAGP_BUS_RESERVE_MEMORY)( + IN PVOID AgpContext, + IN ULONG NumberOfPages, + IN MEMORY_CACHING_TYPE MemoryType, + OUT PVOID *MapHandle, + OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL); + +typedef NTSTATUS +(NTAPI *PAGP_BUS_RELEASE_MEMORY)( + IN PVOID AgpContext, + IN PVOID MapHandle);
typedef NTSTATUS (NTAPI *PAGP_BUS_COMMIT_MEMORY)( - IN PVOID AgpContext, - IN PVOID MapHandle, - IN ULONG NumberOfPages, - IN ULONG OffsetInPages, - IN OUT PMDL Mdl OPTIONAL, - OUT PHYSICAL_ADDRESS *MemoryBase); + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + IN OUT PMDL Mdl OPTIONAL, + OUT PHYSICAL_ADDRESS *MemoryBase);
typedef NTSTATUS (NTAPI *PAGP_BUS_FREE_MEMORY)( - IN PVOID AgpContext, - IN PVOID MapHandle, - IN ULONG NumberOfPages, - IN ULONG OffsetInPages); - -typedef NTSTATUS -(NTAPI *PAGP_BUS_RELEASE_MEMORY)( - IN PVOID AgpContext, - IN PVOID MapHandle); - -typedef NTSTATUS -(NTAPI *PAGP_BUS_RESERVE_MEMORY)( - IN PVOID AgpContext, - IN ULONG NumberOfPages, - IN MEMORY_CACHING_TYPE MemoryType, - OUT PVOID *MapHandle, - OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL); - -typedef NTSTATUS -(NTAPI *PAGP_BUS_SET_RATE)( - IN PVOID AgpContext, - IN ULONG AgpRate); + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages);
typedef NTSTATUS (NTAPI *PAGP_GET_MAPPED_PAGES)( - IN PVOID AgpContext, - IN PVOID MapHandle, - IN ULONG NumberOfPages, - IN ULONG OffsetInPages, - OUT PMDL Mdl); + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + OUT PMDL Mdl); + +typedef NTSTATUS +(NTAPI *PAGP_MAP_MEMORY)( + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + IN PMDL Mdl, + OUT PHYSICAL_ADDRESS *MemoryBase); + +typedef NTSTATUS +(NTAPI *PAGP_UNMAP_MEMORY)( + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + IN PMDL Mdl); + +typedef NTSTATUS +(NTAPI *PAGP_FLUSH_CHIPSET_CACHES)( + IN PVOID AgpContext); + +typedef NTSTATUS +(NTAPI *PAGP_CHECK_INTEGRITY)( + IN PVOID AgpContext); + +typedef NTSTATUS +(NTAPI *PAGP_MAP_MEMORY_EX)( + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + IN PMDL Mdl, + IN MEMORY_CACHING_TYPE *CacheTypeOverride OPTIONAL, + OUT PHYSICAL_ADDRESS *MemoryBase); + +typedef NTSTATUS +(NTAPI *PAGP_UNMAP_MEMORY_EX)( + IN PVOID AgpContext, + IN PVOID MapHandle, + IN ULONG NumberOfPages, + IN ULONG OffsetInPages, + IN PMDL Mdl); + +typedef NTSTATUS +(NTAPI *PAGP_FLUSH_GART_TLB)( + IN PVOID AgpContext); + +typedef NTSTATUS +(NTAPI *PAGP_CHECK_GUARD_PAGE)( + IN PVOID AgpContext, + IN ULONG Flags, + IN ULONG ULongsToCheck); + +typedef struct _AGP_INFO_COMMON { + PCI_AGP_CAPABILITY MasterCap; + PCI_AGP_CAPABILITY TargetCap; + USHORT DeviceId; + USHORT VendorId; + USHORT SubVendorId; + USHORT SubSystemId; + UCHAR HwRevisionId; + ULONG VerifierFlags; + BOOLEAN GuardPageCorruption; +} AGP_INFO_COMMON, *PAGP_INFO_COMMON; + +typedef struct _AGP_INFO_DRIVER { + ULONG AGPReg1; + ULONG AGPReg2; + PHYSICAL_ADDRESS ApertureStart; + PHYSICAL_ADDRESS GartTranslationTable; + ULONG ApertureLength; +} AGP_INFO_DRIVER, *PAGP_INFO_DRIVER; + +typedef struct _AGP_INFO { + AGP_INFO_COMMON CommonInfo; + AGP_INFO_DRIVER DriverInfo; +} AGP_INFO, *PAGP_INFO; + +typedef VOID +(NTAPI *PAGP_GET_INFO)( + IN PVOID AgpContext, + OUT PAGP_INFO AgpInfo);
typedef struct _AGP_BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID AgpContext; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - - ULONG Capabilities; - PAGP_BUS_RESERVE_MEMORY ReserveMemory; - PAGP_BUS_RELEASE_MEMORY ReleaseMemory; - PAGP_BUS_COMMIT_MEMORY CommitMemory; - PAGP_BUS_FREE_MEMORY FreeMemory; - PAGP_GET_MAPPED_PAGES GetMappedPages; - PAGP_BUS_SET_RATE SetRate; + USHORT Size; + USHORT Version; + PVOID AgpContext; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + ULONG Capabilities; + PAGP_BUS_RESERVE_MEMORY ReserveMemory; + PAGP_BUS_RELEASE_MEMORY ReleaseMemory; + PAGP_BUS_COMMIT_MEMORY CommitMemory; + PAGP_BUS_FREE_MEMORY FreeMemory; + PAGP_GET_MAPPED_PAGES GetMappedPages; + PAGP_BUS_SET_RATE SetRate; + SIZE_T AgpSize; + PHYSICAL_ADDRESS AgpBase; + PHYSICAL_ADDRESS MaxPhysicalAddress; + PAGP_MAP_MEMORY MapMemory; + PAGP_UNMAP_MEMORY UnMapMemory; + PAGP_FLUSH_CHIPSET_CACHES FlushChipsetCaches; + PAGP_CHECK_INTEGRITY CheckIntegrity; + PAGP_MAP_MEMORY_EX MapMemoryEx; + PAGP_UNMAP_MEMORY_EX UnMapMemoryEx; + PAGP_FLUSH_GART_TLB FlushGartTLB; + PAGP_CHECK_GUARD_PAGE CheckGuardPage; + PAGP_GET_INFO GetAgpInfo; } AGP_BUS_INTERFACE_STANDARD, *PAGP_BUS_INTERFACE_STANDARD; - -#define AGP_BUS_INTERFACE_V2_SIZE sizeof(AGP_BUS_INTERFACE_STANDARD) -#define AGP_BUS_INTERFACE_V1_SIZE \ - (AGP_BUS_INTERFACE_V2_SIZE - sizeof(PAGP_BUS_SET_RATE))
#ifdef __cplusplus } #endif - -#endif /* __NTAGP_H */ -
Modified: branches/header-work/include/ddk/video.h URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/video.h?... ============================================================================== --- branches/header-work/include/ddk/video.h [iso-8859-1] (original) +++ branches/header-work/include/ddk/video.h [iso-8859-1] Wed Apr 21 03:33:08 2010 @@ -20,34 +20,87 @@ * */
-#ifndef __VIDEO_H__ -#define __VIDEO_H__ - -#ifdef _WINDDI_ -#error winddi.h cannot be included with video.h -#else - -#if defined(_VIDEOPORT_) - #define VPAPI -#else - #define VPAPI DECLSPEC_IMPORT -#endif -#define VIDEOPORT_API VPAPI - +#pragma once + +#include "ntddvdeo.h" #include "videoagp.h" -#include "ntddvdeo.h"
#ifdef __cplusplus extern "C" { #endif
-typedef LONG VP_STATUS; -typedef VP_STATUS *PVP_STATUS; -typedef struct __DMA_PARAMETERS * PDMA; -typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; -typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; - -#define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF +#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 */ + +ULONG +NTAPI +DriverEntry( + 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 @@ -57,48 +110,444 @@ #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 { +#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; - -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); - - -#ifdef PAGED_CODE -#undef PAGED_CODE -#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
typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { INTERFACE_TYPE InterfaceType; @@ -115,911 +564,76 @@ 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 -(NTAPI *PEXECUTE_DMA)( - IN PVOID HwDeviceExtension, - IN PVP_DMA_ADAPTER VpDmaAdapter, - IN PVP_SCATTER_GATHER_LIST SGList, - IN PVOID Context); - -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 VP_STATUS -(NTAPI *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 -(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 BOOLEAN -(NTAPI *PVIDEO_HW_INITIALIZE)( - IN PVOID HwDeviceExtension); - -typedef BOOLEAN -(NTAPI *PVIDEO_HW_INTERRUPT)( - IN PVOID HwDeviceExtension); - -/* VIDEO_ACCESS_RANGE.RangePassive */ -#define VIDEO_RANGE_PASSIVE_DECODE 1 -#define VIDEO_RANGE_10_BIT_DECODE 2 - -#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */ -#define VIDEO_ACCESS_RANGE_DEFINED -typedef struct _VIDEO_ACCESS_RANGE { - PHYSICAL_ADDRESS RangeStart; - ULONG RangeLength; - UCHAR RangeInIoSpace; - UCHAR RangeVisible; - UCHAR RangeShareable; - UCHAR RangePassive; -} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; -#endif - -typedef VOID -(NTAPI *PVIDEO_HW_LEGACYRESOURCES)( - IN ULONG VendorId, - IN ULONG DeviceId, - IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, - IN OUT PULONG LegacyResourceCount); - -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 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 *PMINIPORT_GET_REGISTRY_ROUTINE)( - IN PVOID HwDeviceExtension, - IN PVOID Context, - IN OUT PWSTR ValueName, - IN OUT PVOID ValueData, - IN ULONG ValueLength); - -typedef BOOLEAN -(NTAPI *PVIDEO_HW_RESET_HW)( - IN PVOID HwDeviceExtension, - IN ULONG Columns, - IN ULONG Rows); - -typedef VP_STATUS -(NTAPI *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 -(NTAPI *PVIDEO_HW_START_IO)( - IN PVOID HwDeviceExtension, - IN PVIDEO_REQUEST_PACKET RequestPacket); - -typedef BOOLEAN -(NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( - IN PVOID Context); - -typedef VOID -(NTAPI *PVIDEO_HW_TIMER)( - IN PVOID HwDeviceExtension); - -typedef VOID -(NTAPI *PMINIPORT_DPC_ROUTINE)( - IN PVOID HwDeviceExtension, - IN PVOID Context); +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); + 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); + 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); + 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); + 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); + 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); - - - -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 -(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 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_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 -(NTAPI *PINT10_ALLOCATE_BUFFER)( - IN PVOID Context, - OUT PUSHORT Seg, - OUT PUSHORT Off, - IN OUT PULONG Length); - -typedef VP_STATUS -(NTAPI *PINT10_CALL_BIOS)( - IN PVOID Context, - IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); - -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 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 -NTAPI -VideoPortAcquireDeviceLock( - IN PVOID HwDeviceExtension); - -VPAPI -VOID -NTAPI -VideoPortAcquireSpinLock( - IN PVOID HwDeviceExtension, - IN PSPIN_LOCK SpinLock, - OUT PUCHAR OldIrql); - -VPAPI -VOID -NTAPI -VideoPortAcquireSpinLockAtDpcLevel( - IN PVOID HwDeviceExtension, - IN PSPIN_LOCK SpinLock); - -VPAPI -VP_STATUS -NTAPI -VideoPortAllocateBuffer( - IN PVOID HwDeviceExtension, - IN ULONG Size, - OUT PVOID *Buffer); - -VPAPI -PVOID -NTAPI -VideoPortAllocateCommonBuffer( - IN PVOID HwDeviceExtension, - IN PVP_DMA_ADAPTER VpDmaAdapter, - IN ULONG DesiredLength, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled, - PVOID Reserved); - -VPAPI -PVOID -NTAPI -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 -NTAPI -VideoPortAllocatePool( - IN PVOID HwDeviceExtension, - IN VP_POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); - -VPAPI -PDMA -NTAPI -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 -NTAPI -VideoPortCheckForDeviceExistence( - IN PVOID HwDeviceExtension, - IN USHORT VendorId, - IN USHORT DeviceId, - IN UCHAR RevisionId, - IN USHORT SubVendorId, - IN USHORT SubSystemId, - IN ULONG Flags); - -VPAPI -VOID -NTAPI -VideoPortClearEvent( - IN PVOID HwDeviceExtension, - IN PEVENT pEvent); - -VPAPI -ULONG -NTAPI -VideoPortCompareMemory( - IN PVOID Source1, - IN PVOID Source2, - IN ULONG Length); - -VPAPI -VP_STATUS -NTAPI -VideoPortCompleteDma( - IN PVOID HwDeviceExtension, - IN PVP_DMA_ADAPTER VpDmaAdapter, - IN PVP_SCATTER_GATHER_LIST VpScatterGather, - IN BOOLEAN WriteToDevice); - -VPAPI -VP_STATUS -NTAPI -VideoPortCreateEvent( - IN PVOID HwDeviceExtension, - IN ULONG EventFlag, - IN PVOID Unused, - OUT PEVENT *ppEvent); - -VPAPI -VP_STATUS -NTAPI -VideoPortCreateSecondaryDisplay( - IN PVOID HwDeviceExtension, - IN OUT PVOID *SecondaryDeviceExtension, - IN ULONG ulFlag); - -VPAPI -VP_STATUS -NTAPI -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 -NTAPI -VideoPortDDCMonitorHelper( - IN PVOID HwDeviceExtension, - IN PVOID DDCControl, - IN OUT PUCHAR EdidBuffer, - IN ULONG EdidBufferSize); - -VPAPI -VOID -__cdecl -VideoPortDebugPrint( - IN VIDEO_DEBUG_LEVEL DebugPrintLevel, - IN PCHAR DebugMessage, - IN ...); - -VPAPI -VP_STATUS -NTAPI -VideoPortDeleteEvent( - IN PVOID HwDeviceExtension, - IN PEVENT pEvent); - -VPAPI -VP_STATUS -NTAPI -VideoPortDeleteSpinLock( - IN PVOID HwDeviceExtension, - IN PSPIN_LOCK SpinLock); - -VPAPI -VP_STATUS -NTAPI -VideoPortDisableInterrupt( - IN PVOID HwDeviceExtension); - -VPAPI -PDMA -NTAPI -VideoPortDoDma( - IN PVOID HwDeviceExtension, - IN PDMA pDma, - IN DMA_FLAGS DmaFlags); - -VPAPI -VP_STATUS -NTAPI -VideoPortEnableInterrupt( - IN PVOID HwDeviceExtension); - -VPAPI -VP_STATUS -NTAPI -VideoPortEnumerateChildren( - IN PVOID HwDeviceExtension, - IN PVOID Reserved); - -VPAPI -VOID -NTAPI -VideoPortFreeCommonBuffer( - IN PVOID HwDeviceExtension, - IN ULONG Length, - IN PVOID VirtualAddress, - IN PHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled); - -VPAPI -VOID -NTAPI -VideoPortFreeDeviceBase( - IN PVOID HwDeviceExtension, - IN PVOID MappedAddress); - -VPAPI -VOID -NTAPI -VideoPortFreePool( - IN PVOID HwDeviceExtension, - IN PVOID Ptr); - -VPAPI -VP_STATUS -NTAPI -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 -NTAPI -VideoPortGetAssociatedDeviceExtension( - IN PVOID DeviceObject); - -VPAPI -ULONG -NTAPI -VideoPortGetAssociatedDeviceID( - IN PVOID DeviceObject); - -VPAPI -ULONG -NTAPI -VideoPortGetBusData( - IN PVOID HwDeviceExtension, - IN BUS_DATA_TYPE BusDataType, - IN ULONG SlotNumber, - IN OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -VPAPI -ULONG -NTAPI -VideoPortGetBytesUsed( - IN PVOID HwDeviceExtension, - IN PDMA pDma); - -VPAPI -PVOID -NTAPI -VideoPortGetCommonBuffer( - IN PVOID HwDeviceExtension, - IN ULONG DesiredLength, - IN ULONG Alignment, - OUT PPHYSICAL_ADDRESS LogicalAddress, - OUT PULONG pActualLength, - IN BOOLEAN CacheEnabled); - -VPAPI -UCHAR -NTAPI -VideoPortGetCurrentIrql( - VOID); - -VPAPI -PVOID -NTAPI -VideoPortGetDeviceBase( - IN PVOID HwDeviceExtension, - IN PHYSICAL_ADDRESS IoAddress, - IN ULONG NumberOfUchars, - IN UCHAR InIoSpace); - -VPAPI -VP_STATUS -NTAPI -VideoPortGetDeviceData( - IN PVOID HwDeviceExtension, - IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, - IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, - IN PVOID Context); - -VPAPI -PVP_DMA_ADAPTER -NTAPI -VideoPortGetDmaAdapter( - IN PVOID HwDeviceExtension, - IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); - -VPAPI -PVOID -NTAPI -VideoPortGetDmaContext( - IN PVOID HwDeviceExtension, - IN PDMA pDma); - -VPAPI -PVOID -NTAPI -VideoPortGetMdl( - IN PVOID HwDeviceExtension, - IN PDMA pDma); - -VPAPI -VP_STATUS -NTAPI -VideoPortGetRegistryParameters( - IN PVOID HwDeviceExtension, - IN PWSTR ParameterName, - IN UCHAR IsParameterFileName, - IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, - IN PVOID Context); - -VPAPI -PVOID -NTAPI -VideoPortGetRomImage( - IN PVOID HwDeviceExtension, - IN PVOID Unused1, - IN ULONG Unused2, - IN ULONG Length); - -VPAPI -VP_STATUS -NTAPI -VideoPortGetVersion( - IN PVOID HwDeviceExtension, - IN OUT PVPOSVERSIONINFO pVpOsVersionInfo); - -VPAPI -VP_STATUS -NTAPI -VideoPortGetVgaStatus( - IN PVOID HwDeviceExtension, - OUT PULONG VgaStatus); - -VPAPI -ULONG -NTAPI -VideoPortInitialize( - IN PVOID Argument1, - IN PVOID Argument2, - IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, - IN PVOID HwContext); - -VPAPI -VP_STATUS -NTAPI -VideoPortInt10( - IN PVOID HwDeviceExtension, - IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); - -VPAPI -LONG -FASTCALL -VideoPortInterlockedDecrement( - IN PLONG Addend); - -VPAPI -LONG -FASTCALL -VideoPortInterlockedExchange( - IN OUT PLONG Target, - IN LONG Value); - -VPAPI -LONG -FASTCALL -VideoPortInterlockedIncrement( - IN PLONG Addend); + 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, @@ -1027,100 +641,416 @@ VpModifyAccess } VP_LOCK_OPERATION;
-VPAPI -PVOID -NTAPI -VideoPortLockBuffer( - IN PVOID HwDeviceExtension, - IN PVOID BaseAddress, - IN ULONG Length, - IN VP_LOCK_OPERATION Operation); - -VPAPI -BOOLEAN -NTAPI -VideoPortLockPages( - IN PVOID HwDeviceExtension, - IN OUT PVIDEO_REQUEST_PACKET pVrp, - IN OUT PEVENT pUEvent, - IN PEVENT pDisplayEvent, - IN DMA_FLAGS DmaFlags); - -VPAPI -VOID -NTAPI -VideoPortLogError( - IN PVOID HwDeviceExtension, - IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, - IN VP_STATUS ErrorCode, - IN ULONG UniqueId); - -VPAPI -VP_STATUS -NTAPI -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 -NTAPI -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 -NTAPI -VideoPortMapMemory( - IN PVOID HwDeviceExtension, - IN PHYSICAL_ADDRESS PhysicalAddress, - IN OUT PULONG Length, - IN PULONG InIoSpace, - IN OUT PVOID *VirtualAddress); - -VPAPI -VOID -NTAPI -VideoPortMoveMemory( - IN PVOID Destination, - IN PVOID Source, - IN ULONG Length); - -VPAPI -VOID -NTAPI -VideoPortPutDmaAdapter( - IN PVOID HwDeviceExtension, - IN PVP_DMA_ADAPTER VpDmaAdapter); - -VPAPI -LONGLONG -NTAPI -VideoPortQueryPerformanceCounter( - IN PVOID HwDeviceExtension, - OUT PLONGLONG PerformanceFrequency OPTIONAL); +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 + 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 */ + +VPAPI +VP_STATUS +NTAPI +VideoPortAllocateBuffer( + IN PVOID HwDeviceExtension, + IN ULONG Size, + OUT PVOID *Buffer); + +VPAPI +VOID +NTAPI +VideoPortAcquireDeviceLock( + IN PVOID HwDeviceExtension); + +VPAPI +ULONG +NTAPI +VideoPortCompareMemory( + IN PVOID Source1, + IN PVOID Source2, + IN SIZE_T Length); + +VPAPI +BOOLEAN +NTAPI +VideoPortDDCMonitorHelper( + IN PVOID HwDeviceExtension, + IN PVOID DDCControl, + IN OUT PUCHAR EdidBuffer, + IN ULONG EdidBufferSize); + +VPAPI +VOID +__cdecl +VideoPortDebugPrint( + IN VIDEO_DEBUG_LEVEL DebugPrintLevel, + IN PSTR DebugMessage, + IN ...); + +VPAPI +VP_STATUS +NTAPI +VideoPortDisableInterrupt( + IN PVOID HwDeviceExtension); + +VPAPI +VP_STATUS +NTAPI +VideoPortEnableInterrupt( + IN PVOID HwDeviceExtension); + +VPAPI +VP_STATUS +NTAPI +VideoPortEnumerateChildren( + IN PVOID HwDeviceExtension, + IN PVOID Reserved); + +VPAPI +VOID +NTAPI +VideoPortFreeDeviceBase( + IN PVOID HwDeviceExtension, + IN PVOID MappedAddress); + +VPAPI +VP_STATUS +NTAPI +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 +NTAPI +VideoPortGetAssociatedDeviceExtension( + IN PVOID DeviceObject); + +VPAPI +ULONG +NTAPI +VideoPortGetBusData( + IN PVOID HwDeviceExtension, + IN BUS_DATA_TYPE BusDataType, + IN ULONG SlotNumber, + IN OUT PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +VPAPI +UCHAR +NTAPI +VideoPortGetCurrentIrql(VOID); + +VPAPI +PVOID +NTAPI +VideoPortGetDeviceBase( + IN PVOID HwDeviceExtension, + IN PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfUchars, + IN UCHAR InIoSpace); + +VPAPI +VP_STATUS +NTAPI +VideoPortGetDeviceData( + IN PVOID HwDeviceExtension, + IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, + IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +VP_STATUS +NTAPI +VideoPortGetRegistryParameters( + IN PVOID HwDeviceExtension, + IN PWSTR ParameterName, + IN UCHAR IsParameterFileName, + IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +PVOID +NTAPI +VideoPortGetRomImage( + IN PVOID HwDeviceExtension, + IN PVOID Unused1, + IN ULONG Unused2, + IN ULONG Length); + +VPAPI +VP_STATUS +NTAPI +VideoPortGetVgaStatus( + IN PVOID HwDeviceExtension, + OUT PULONG VgaStatus); + +VPAPI +LONG +FASTCALL +VideoPortInterlockedDecrement( + IN PLONG Addend); + +VPAPI +LONG +FASTCALL +VideoPortInterlockedExchange( + IN OUT PLONG Target, + IN LONG Value); + +VPAPI +LONG +FASTCALL +VideoPortInterlockedIncrement( + IN PLONG Addend); + +VPAPI +ULONG +NTAPI +VideoPortInitialize( + IN PVOID Argument1, + IN PVOID Argument2, + IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, + IN PVOID HwContext); + +VPAPI +VP_STATUS +NTAPI +VideoPortInt10( + IN PVOID HwDeviceExtension, + IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); + +VPAPI +VOID +NTAPI +VideoPortLogError( + IN PVOID HwDeviceExtension, + IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, + IN VP_STATUS ErrorCode, + IN ULONG UniqueId); + +VPAPI +VP_STATUS +NTAPI +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 +VP_STATUS +NTAPI +VideoPortMapMemory( + IN PVOID HwDeviceExtension, + IN PHYSICAL_ADDRESS PhysicalAddress, + IN OUT PULONG Length, + IN PULONG InIoSpace, + IN OUT PVOID *VirtualAddress); + +VPAPI +VOID +NTAPI +VideoPortMoveMemory( + IN PVOID Destination, + IN PVOID Source, + IN ULONG Length); + +VPAPI +LONGLONG +NTAPI +VideoPortQueryPerformanceCounter( + IN PVOID HwDeviceExtension, + OUT PLONGLONG PerformanceFrequency OPTIONAL);
VPAPI VP_STATUS @@ -1131,431 +1061,686 @@ IN OUT PINTERFACE Interface);
VPAPI +BOOLEAN +NTAPI +VideoPortQueueDpc( + IN PVOID HwDeviceExtension, + IN PMINIPORT_DPC_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +VOID +NTAPI +VideoPortReadPortBufferUchar( + IN PUCHAR Port, + OUT PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortReadPortBufferUlong( + IN PULONG Port, + OUT PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortReadPortBufferUshort( + IN PUSHORT Port, + OUT PUSHORT Buffer, + IN ULONG Count); + +VPAPI +UCHAR +NTAPI +VideoPortReadPortUchar( + IN PUCHAR Port); + +VPAPI +ULONG +NTAPI +VideoPortReadPortUlong( + IN PULONG Port); + +VPAPI +USHORT +NTAPI +VideoPortReadPortUshort( + IN PUSHORT Port); + +VPAPI +VOID +NTAPI +VideoPortReadRegisterBufferUchar( + IN PUCHAR Register, + OUT PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortReadRegisterBufferUlong( + IN PULONG Register, + OUT PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortReadRegisterBufferUshort( + IN PUSHORT Register, + OUT PUSHORT Buffer, + IN ULONG Count); + +VPAPI +UCHAR +NTAPI +VideoPortReadRegisterUchar( + IN PUCHAR Register); + +VPAPI +ULONG +NTAPI +VideoPortReadRegisterUlong( + IN PULONG Register); + +VPAPI +USHORT +NTAPI +VideoPortReadRegisterUshort( + IN PUSHORT Register); + +VPAPI +VOID +NTAPI +VideoPortReleaseBuffer( + IN PVOID HwDeviceExtension, + IN PVOID Buffer); + +VPAPI +VOID +NTAPI +VideoPortReleaseDeviceLock( + IN PVOID HwDeviceExtension); + +VPAPI +BOOLEAN +NTAPI +VideoPortScanRom( + PVOID HwDeviceExtension, + PUCHAR RomBase, + ULONG RomLength, + PUCHAR String); + +VPAPI +ULONG +NTAPI +VideoPortSetBusData( + IN PVOID HwDeviceExtension, + IN BUS_DATA_TYPE BusDataType, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +VPAPI +VP_STATUS +NTAPI +VideoPortSetRegistryParameters( + IN PVOID HwDeviceExtension, + IN PWSTR ValueName, + IN PVOID ValueData, + IN ULONG ValueLength); + +VPAPI +VP_STATUS +NTAPI +VideoPortSetTrappedEmulatorPorts( + IN PVOID HwDeviceExtension, + IN ULONG NumAccessRanges, + IN PVIDEO_ACCESS_RANGE AccessRange); + +VPAPI +VOID +NTAPI +VideoPortStallExecution( + IN ULONG Microseconds); + +VPAPI +VOID +NTAPI +VideoPortStartTimer( + IN PVOID HwDeviceExtension); + +VPAPI +VOID +NTAPI +VideoPortStopTimer( + IN PVOID HwDeviceExtension); + +VPAPI +BOOLEAN +NTAPI +VideoPortSynchronizeExecution( + IN PVOID HwDeviceExtension, + IN VIDEO_SYNCHRONIZE_PRIORITY Priority, + IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, + IN PVOID Context); + +VPAPI +VP_STATUS +NTAPI +VideoPortUnmapMemory( + IN PVOID HwDeviceExtension, + IN OUT PVOID VirtualAddress, + IN HANDLE ProcessHandle); + +VPAPI +VP_STATUS +NTAPI +VideoPortVerifyAccessRanges( + IN PVOID HwDeviceExtension, + IN ULONG NumAccessRanges, + IN PVIDEO_ACCESS_RANGE AccessRanges); + +VPAPI +VOID +NTAPI +VideoPortWritePortBufferUchar( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWritePortBufferUlong( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWritePortBufferUshort( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWritePortUchar( + IN PUCHAR Port, + IN UCHAR Value); + +VPAPI +VOID +NTAPI +VideoPortWritePortUlong( + IN PULONG Port, + IN ULONG Value); + +VPAPI +VOID +NTAPI +VideoPortWritePortUshort( + IN PUSHORT Port, + IN USHORT Value); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterBufferUchar( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterBufferUlong( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterBufferUshort( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterUchar( + IN PUCHAR Register, + IN UCHAR Value); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterUlong( + IN PULONG Register, + IN ULONG Value); + +VPAPI +VOID +NTAPI +VideoPortWriteRegisterUshort( + IN PUSHORT Register, + IN USHORT Value); + +VPAPI +VOID +NTAPI +VideoPortZeroDeviceMemory( + IN PVOID Destination, + IN ULONG Length); + +VPAPI +VOID +NTAPI +VideoPortZeroMemory( + IN PVOID Destination, + IN ULONG Length); + +VPAPI +PVOID +NTAPI +VideoPortAllocateContiguousMemory( + IN PVOID HwDeviceExtension, + IN ULONG NumberOfBytes, + IN PHYSICAL_ADDRESS HighestAcceptableAddress); + +VPAPI +PVOID +NTAPI +VideoPortGetCommonBuffer( + IN PVOID HwDeviceExtension, + IN ULONG DesiredLength, + IN ULONG Alignment, + OUT PPHYSICAL_ADDRESS LogicalAddress, + OUT PULONG pActualLength, + IN BOOLEAN CacheEnabled); + +VPAPI +VOID +NTAPI +VideoPortFreeCommonBuffer( + IN PVOID HwDeviceExtension, + IN ULONG Length, + IN PVOID VirtualAddress, + IN PHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); + +VPAPI +PDMA +NTAPI +VideoPortDoDma( + IN PVOID HwDeviceExtension, + IN PDMA pDma, + IN DMA_FLAGS DmaFlags); + +VPAPI +BOOLEAN +NTAPI +VideoPortLockPages( + IN PVOID HwDeviceExtension, + IN OUT PVIDEO_REQUEST_PACKET pVrp, + IN OUT PEVENT pUEvent, + IN PEVENT pDisplayEvent, + IN DMA_FLAGS DmaFlags); + +VPAPI +BOOLEAN +NTAPI +VideoPortUnlockPages( + IN PVOID hwDeviceExtension, + IN OUT PDMA pDma); + +VPAPI +BOOLEAN +NTAPI +VideoPortSignalDmaComplete( + IN PVOID HwDeviceExtension, + IN PDMA pDmaHandle); + +VPAPI +PVOID +NTAPI +VideoPortGetMdl( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +PVOID +NTAPI +VideoPortGetDmaContext( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +VOID +NTAPI +VideoPortSetDmaContext( + IN PVOID HwDeviceExtension, + OUT PDMA pDma, + IN PVOID InstanceContext); + +VPAPI +ULONG +NTAPI +VideoPortGetBytesUsed( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +VOID +NTAPI +VideoPortSetBytesUsed( + IN PVOID HwDeviceExtension, + IN OUT PDMA pDma, + IN ULONG BytesUsed); + +VPAPI +PDMA +NTAPI +VideoPortAssociateEventsWithDmaHandle( + IN PVOID HwDeviceExtension, + IN OUT PVIDEO_REQUEST_PACKET pVrp, + IN PVOID MappedUserEvent, + IN PVOID DisplayDriverEvent); + +VPAPI +PDMA +NTAPI +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 +BOOLEAN +NTAPI +VideoPortUnmapDmaMemory( + IN PVOID HwDeviceExtension, + IN PVOID VirtualAddress, + IN HANDLE ProcessHandle, + IN PDMA BoardMemoryHandle); + +VPAPI +VP_STATUS +NTAPI +VideoPortCreateSecondaryDisplay( + IN PVOID HwDeviceExtension, + IN OUT PVOID *SecondaryDeviceExtension, + IN ULONG ulFlag); + +VPAPI +PVP_DMA_ADAPTER +NTAPI +VideoPortGetDmaAdapter( + IN PVOID HwDeviceExtension, + IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); + +VPAPI +VOID +NTAPI +VideoPortPutDmaAdapter( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter); + +VPAPI +PVOID +NTAPI +VideoPortAllocateCommonBuffer( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN ULONG DesiredLength, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled, + PVOID Reserved); + +VPAPI +VOID +NTAPI +VideoPortReleaseCommonBuffer( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); + +VPAPI +PVOID +NTAPI +VideoPortLockBuffer( + IN PVOID HwDeviceExtension, + IN PVOID BaseAddress, + IN ULONG Length, + IN VP_LOCK_OPERATION Operation); + +VPAPI +VOID +NTAPI +VideoPortUnLockBuffer( + IN PVOID HwDeviceExtension, + IN PVOID Mdl); + +VPAPI +VP_STATUS +NTAPI +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 +VP_STATUS +NTAPI +VideoPortCompleteDma( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN PVP_SCATTER_GATHER_LIST VpScatterGather, + IN BOOLEAN WriteToDevice); + +VPAPI +VP_STATUS +NTAPI +VideoPortCreateEvent( + IN PVOID HwDeviceExtension, + IN ULONG EventFlag, + IN PVOID Unused, + OUT PEVENT *ppEvent); + +VPAPI +VP_STATUS +NTAPI +VideoPortDeleteEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +LONG +NTAPI +VideoPortSetEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +VOID +NTAPI +VideoPortClearEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +LONG +NTAPI +VideoPortReadStateEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +VP_STATUS +NTAPI +VideoPortWaitForSingleObject( + IN PVOID HwDeviceExtension, + IN PVOID Object, + IN PLARGE_INTEGER Timeout OPTIONAL); + +VPAPI +PVOID +NTAPI +VideoPortAllocatePool( + IN PVOID HwDeviceExtension, + IN VP_POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); + +VPAPI +VOID +NTAPI +VideoPortFreePool( + IN PVOID HwDeviceExtension, + IN PVOID Ptr); + +VPAPI +VP_STATUS +NTAPI +VideoPortCreateSpinLock( + IN PVOID HwDeviceExtension, + OUT PSPIN_LOCK *SpinLock); + +VPAPI +VP_STATUS +NTAPI +VideoPortDeleteSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI +VOID +NTAPI +VideoPortAcquireSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock, + OUT PUCHAR OldIrql); + +VPAPI +VOID +NTAPI +VideoPortAcquireSpinLockAtDpcLevel( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI +VOID +NTAPI +VideoPortReleaseSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock, + IN UCHAR NewIrql); + +VPAPI +VOID +NTAPI +VideoPortReleaseSpinLockFromDpcLevel( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI VOID NTAPI VideoPortQuerySystemTime( - OUT PLARGE_INTEGER CurrentTime); + OUT PLARGE_INTEGER CurrentTime);
VPAPI BOOLEAN NTAPI -VideoPortIsNoVesa( - VOID -); +VideoPortCheckForDeviceExistence( + IN PVOID HwDeviceExtension, + IN USHORT VendorId, + IN USHORT DeviceId, + IN UCHAR RevisionId, + IN USHORT SubVendorId, + IN USHORT SubSystemId, + IN ULONG Flags); + +VPAPI +ULONG +NTAPI +VideoPortGetAssociatedDeviceID( + IN PVOID DeviceObject); + +VPAPI +VP_STATUS +NTAPI +VideoPortFlushRegistry( + PVOID HwDeviceExtension); + +VPAPI +VP_STATUS +NTAPI +VideoPortGetVersion( + IN PVOID HwDeviceExtension, + IN OUT PVPOSVERSIONINFO pVpOsVersionInfo);
VPAPI BOOLEAN NTAPI -VideoPortQueueDpc( - IN PVOID HwDeviceExtension, - IN PMINIPORT_DPC_ROUTINE CallbackRoutine, - IN PVOID Context); - -VPAPI -VOID -NTAPI -VideoPortReadPortBufferUchar( - IN PUCHAR Port, - OUT PUCHAR Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortReadPortBufferUlong( - IN PULONG Port, - OUT PULONG Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortReadPortBufferUshort( - IN PUSHORT Port, - OUT PUSHORT Buffer, - IN ULONG Count); - -VPAPI -UCHAR -NTAPI -VideoPortReadPortUchar( - IN PUCHAR Port); - -VPAPI -ULONG -NTAPI -VideoPortReadPortUlong( - IN PULONG Port); - -VPAPI -USHORT -NTAPI -VideoPortReadPortUshort( - IN PUSHORT Port); - -VPAPI -VOID -NTAPI -VideoPortReadRegisterBufferUchar( - IN PUCHAR Register, - OUT PUCHAR Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortReadRegisterBufferUlong( - IN PULONG Register, - OUT PULONG Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortReadRegisterBufferUshort( - IN PUSHORT Register, - OUT PUSHORT Buffer, - IN ULONG Count); - -VPAPI -UCHAR -NTAPI -VideoPortReadRegisterUchar( - IN PUCHAR Register); - -VPAPI -ULONG -NTAPI -VideoPortReadRegisterUlong( - IN PULONG Register); - -VPAPI -USHORT -NTAPI -VideoPortReadRegisterUshort( - IN PUSHORT Register); - -VPAPI -LONG -NTAPI -VideoPortReadStateEvent( - IN PVOID HwDeviceExtension, - IN PEVENT pEvent); - -VPAPI -VOID -NTAPI -VideoPortReleaseBuffer( - IN PVOID HwDeviceExtension, - IN PVOID Buffer); - -VPAPI -VOID -NTAPI -VideoPortReleaseCommonBuffer( - IN PVOID HwDeviceExtension, - IN PVP_DMA_ADAPTER VpDmaAdapter, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled); - -VPAPI -VOID -NTAPI -VideoPortReleaseDeviceLock( - IN PVOID HwDeviceExtension); - -VPAPI -VOID -NTAPI -VideoPortReleaseSpinLock( - IN PVOID HwDeviceExtension, - IN PSPIN_LOCK SpinLock, - IN UCHAR NewIrql); - -VPAPI -VOID -NTAPI -VideoPortReleaseSpinLockFromDpcLevel( - IN PVOID HwDeviceExtension, - IN PSPIN_LOCK SpinLock); +VideoPortIsNoVesa(VOID); + +VPAPI +VP_STATUS +NTAPI +VideoPortRegisterBugcheckCallback( + IN PVOID HwDeviceExtension, + IN ULONG BugcheckCode, + IN PVIDEO_BUGCHECK_CALLBACK Callback, + IN ULONG BugcheckDataSize); + +VPAPI +PVIDEO_DEBUG_REPORT +NTAPI +VideoPortDbgReportCreate( + IN PVOID HwDeviceExtension, + IN ULONG ulCode, + IN ULONG_PTR ulpArg1, + IN ULONG_PTR ulpArg2, + IN ULONG_PTR ulpArg3, + IN ULONG_PTR ulpArg4);
VPAPI BOOLEAN NTAPI -VideoPortScanRom( - PVOID HwDeviceExtension, - PUCHAR RomBase, - ULONG RomLength, - PUCHAR String); - -VPAPI -ULONG -NTAPI -VideoPortSetBusData( - IN PVOID HwDeviceExtension, - IN BUS_DATA_TYPE BusDataType, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -VPAPI -VOID -NTAPI -VideoPortSetBytesUsed( - IN PVOID HwDeviceExtension, - IN OUT PDMA pDma, - IN ULONG BytesUsed); - -VPAPI -VOID -NTAPI -VideoPortSetDmaContext( - IN PVOID HwDeviceExtension, - OUT PDMA pDma, - IN PVOID InstanceContext); - -VPAPI -LONG -NTAPI -VideoPortSetEvent( - IN PVOID HwDeviceExtension, - IN PEVENT pEvent); - -VPAPI -VP_STATUS -NTAPI -VideoPortSetRegistryParameters( - IN PVOID HwDeviceExtension, - IN PWSTR ValueName, - IN PVOID ValueData, - IN ULONG ValueLength); - -VPAPI -VP_STATUS -NTAPI -VideoPortSetTrappedEmulatorPorts( - IN PVOID HwDeviceExtension, - IN ULONG NumAccessRanges, - IN PVIDEO_ACCESS_RANGE AccessRange); - -VPAPI -BOOLEAN -NTAPI -VideoPortSignalDmaComplete( - IN PVOID HwDeviceExtension, - IN PDMA pDmaHandle); - -VPAPI -VOID -NTAPI -VideoPortStallExecution( - IN ULONG Microseconds); - -VPAPI -VP_STATUS -NTAPI -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 -NTAPI -VideoPortStartTimer( - IN PVOID HwDeviceExtension); - -VPAPI -VOID -NTAPI -VideoPortStopTimer( - IN PVOID HwDeviceExtension); - -/* VideoPortSynchronizeExecution.Priority constants */ -typedef enum VIDEO_SYNCHRONIZE_PRIORITY { - VpLowPriority = 0, - VpMediumPriority, - VpHighPriority -} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; - -VPAPI -BOOLEAN -NTAPI -VideoPortSynchronizeExecution( - IN PVOID HwDeviceExtension, - IN VIDEO_SYNCHRONIZE_PRIORITY Priority, - IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, - IN PVOID Context); - -VPAPI -VOID -NTAPI -VideoPortUnLockBuffer( - IN PVOID HwDeviceExtension, - IN PVOID Mdl); - -VPAPI -BOOLEAN -NTAPI -VideoPortUnlockPages( - IN PVOID hwDeviceExtension, - IN OUT PDMA pDma); - -VPAPI -BOOLEAN -NTAPI -VideoPortUnmapDmaMemory( - IN PVOID HwDeviceExtension, - IN PVOID VirtualAddress, - IN HANDLE ProcessHandle, - IN PDMA BoardMemoryHandle); - -VPAPI -VP_STATUS -NTAPI -VideoPortUnmapMemory( - IN PVOID HwDeviceExtension, - IN OUT PVOID VirtualAddress, - IN HANDLE ProcessHandle); - -VPAPI -VP_STATUS -NTAPI -VideoPortVerifyAccessRanges( - IN PVOID HwDeviceExtension, - IN ULONG NumAccessRanges, - IN PVIDEO_ACCESS_RANGE AccessRanges); - -VPAPI -VP_STATUS -NTAPI -VideoPortWaitForSingleObject( - IN PVOID HwDeviceExtension, - IN PVOID Object, - IN PLARGE_INTEGER Timeout OPTIONAL); - -VPAPI -VOID -NTAPI -VideoPortWritePortBufferUchar( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWritePortBufferUlong( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWritePortBufferUshort( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWritePortUchar( - IN PUCHAR Port, - IN UCHAR Value); - -VPAPI -VOID -NTAPI -VideoPortWritePortUlong( - IN PULONG Port, - IN ULONG Value); - -VPAPI -VOID -NTAPI -VideoPortWritePortUshort( - IN PUSHORT Port, - IN USHORT Value); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterBufferUchar( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterBufferUlong( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterBufferUshort( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterUchar( - IN PUCHAR Register, - IN UCHAR Value); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterUlong( - IN PULONG Register, - IN ULONG Value); - -VPAPI -VOID -NTAPI -VideoPortWriteRegisterUshort( - IN PUSHORT Register, - IN USHORT Value); - -VPAPI -VOID -NTAPI -VideoPortZeroDeviceMemory( - IN PVOID Destination, - IN ULONG Length); - -VPAPI -VOID -NTAPI -VideoPortZeroMemory( - IN PVOID Destination, - IN ULONG Length); - -#if DBG -#define VideoDebugPrint(x) VideoPortDebugPrint x -#else -#define VideoDebugPrint(x) -#endif +VideoPortDbgReportSecondaryData( + IN OUT PVIDEO_DEBUG_REPORT pReport, + IN PVOID pvData, + IN ULONG ulDataSize); + +VPAPI +VOID +NTAPI +VideoPortDbgReportComplete( + IN OUT PVIDEO_DEBUG_REPORT pReport);
#ifdef __cplusplus } #endif - -#endif /* defined _WINDDI_ */ - -#endif /* __VIDEO_H__ */
Modified: branches/header-work/include/ddk/videoagp.h URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/videoagp... ============================================================================== --- branches/header-work/include/ddk/videoagp.h [iso-8859-1] (original) +++ branches/header-work/include/ddk/videoagp.h [iso-8859-1] Wed Apr 21 03:33:08 2010 @@ -20,10 +20,7 @@ * */
-#ifndef __VIDEOAGP_H__ -#define __VIDEOAGP_H__ - -#include "video.h" +#pragma once
#ifdef __cplusplus extern "C" { @@ -42,82 +39,79 @@
typedef BOOLEAN (NTAPI *PAGP_COMMIT_PHYSICAL)( - IN PVOID HwDeviceExtension, - IN PVOID PhysicalReserveContext, - IN ULONG Pages, - IN ULONG Offset); + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext, + IN ULONG Pages, + IN ULONG Offset);
typedef PVOID (NTAPI *PAGP_COMMIT_VIRTUAL)( - IN PVOID HwDeviceExtension, - IN PVOID VirtualReserveContext, - IN ULONG Pages, - IN ULONG Offset); + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext, + IN ULONG Pages, + IN ULONG Offset);
typedef VOID (NTAPI *PAGP_FREE_PHYSICAL)( - IN PVOID HwDeviceExtension, - IN PVOID PhysicalReserveContext, - IN ULONG Pages, - IN ULONG Offset); + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext, + IN ULONG Pages, + IN ULONG Offset);
typedef VOID (NTAPI *PAGP_FREE_VIRTUAL)( - IN PVOID HwDeviceExtension, - IN PVOID VirtualReserveContext, - IN ULONG Pages, - IN ULONG Offset); + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext, + IN ULONG Pages, + IN ULONG Offset);
typedef VOID (NTAPI *PAGP_RELEASE_PHYSICAL)( - IN PVOID HwDeviceExtension, - IN PVOID PhysicalReserveContext); + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext);
typedef VOID (NTAPI *PAGP_RELEASE_VIRTUAL)( - IN PVOID HwDeviceExtension, - IN PVOID VirtualReserveContext); + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext);
typedef PHYSICAL_ADDRESS (NTAPI *PAGP_RESERVE_PHYSICAL)( - IN PVOID HwDeviceExtension, - IN ULONG Pages, + IN PVOID HwDeviceExtension, + IN ULONG Pages, IN VIDEO_PORT_CACHE_TYPE Caching, - OUT PVOID *PhysicalReserveContext); + OUT PVOID *PhysicalReserveContext);
typedef PVOID (NTAPI *PAGP_RESERVE_VIRTUAL)( - IN PVOID HwDeviceExtension, - IN HANDLE ProcessHandle, - IN PVOID PhysicalReserveContext, - OUT PVOID *VirtualReserveContext); + IN PVOID HwDeviceExtension, + IN HANDLE ProcessHandle, + IN PVOID PhysicalReserveContext, + OUT PVOID *VirtualReserveContext);
typedef BOOLEAN (NTAPI *PAGP_SET_RATE)( - IN PVOID HwDeviceExtension, - IN ULONG AgpRate); + IN PVOID HwDeviceExtension, + IN ULONG AgpRate);
typedef struct _VIDEO_PORT_AGP_SERVICES { - 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 AllocationLimit; + 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 AllocationLimit; } VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES;
-VPAPI BOOLEAN NTAPI VideoPortGetAgpServices( - IN PVOID HwDeviceExtension, - IN PVIDEO_PORT_AGP_SERVICES AgpServices); + IN PVOID HwDeviceExtension, + IN PVIDEO_PORT_AGP_SERVICES AgpServices);
#ifdef __cplusplus } #endif - -#endif /* __VIDEOAGP_H__ */