| 1 | /* | 
 
 
 
 
 | 2 | * video.h | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * Video port and miniport driver interface | 
 
 
 
 
 | 5 | * | 
 
 
 
 
 | 6 | * This file is part of the w32api package. | 
 
 
 
 
 | 7 | * | 
 
 
 
 
 | 8 | * Contributors: | 
 
 
 
 
 | 9 | *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> | 
 
 
 
 
 | 10 | * | 
 
 
 
 
 | 11 | * THIS SOFTWARE IS NOT COPYRIGHTED | 
 
 
 
 
 | 12 | * | 
 
 
 
 
 | 13 | * This source code is offered for use in the public domain. You may | 
 
 
 
 
 | 14 | * use, modify or distribute it freely. | 
 
 
 
 
 | 15 | * | 
 
 
 
 
 | 16 | * This code is distributed in the hope that it will be useful but | 
 
 
 
 
 | 17 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | 
 
 
 
 
 | 18 | * DISCLAIMED. This includes but is not limited to warranties of | 
 
 
 
 
 | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
 
 
 
 
 | 20 | * | 
 
 
 
 
 | 21 | */ | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | #ifndef __VIDEO_H | 
 
 
 
 
 | 24 | #define __VIDEO_H | 
 
 
 
 
 | 25 |  | 
 
 
 
 
 | 26 |  | 
 
 
 
 
 | 27 | #if __GNUC__ >=3 | 
 
 
 
 
 | 28 | #pragma GCC system_header | 
 
 
 
 
 | 29 | #endif | 
 
 
 
 
 | 30 |  | 
 
 
 
 
 | 31 | #ifdef __WINDDI_H | 
 
 
 
 
 | 32 | #error winddi.h cannot be included with video.h | 
 
 
 
 
 | 33 | #else | 
 
 
 
 
 | 34 |  | 
 
 
 
 
 | 35 | #ifdef __cplusplus | 
 
 
 
 
 | 36 | extern "C" { | 
 
 
 
 
 | 37 | #endif | 
 
 
 
 
 | 38 |  | 
 
 
 
 
 | 39 | #include "ntddk.h" | 
 
 
 
 
 | 40 |  | 
 
 
 
 
 | 41 | #if defined(_VIDEOPORT_) | 
 
 
 
 
 | 42 | #define VPAPI DECLSPEC_EXPORT | 
 
 
 
 
 | 43 | #else | 
 
 
 
 
 | 44 | #define VPAPI DECLSPEC_IMPORT | 
 
 
 
 
 | 45 | #endif | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | #include "videoagp.h" | 
 
 
 
 
 | 48 | #include "ntddvdeo.h" | 
 
 
 
 
 | 49 |  | 
 
 
 
 
 | 50 |  | 
 
 
 
 
 | 51 | typedef LONG VP_STATUS; | 
 
 
 
 
 | 52 | typedef VP_STATUS *PVP_STATUS; | 
 
 
 
 
 | 53 | typedef struct __DMA_PARAMETERS * PDMA; | 
 
 
 
 
 | 54 | typedef struct _VIDEO_PORT_EVENT *PEVENT; | 
 
 
 
 
 | 55 | typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; | 
 
 
 
 
 | 56 | typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; | 
 
 
 
 
 | 57 |  | 
 
 
 
 
 | 58 | #define DISPLAY_ADAPTER_HW_ID             0xFFFFFFFF | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | #define EVENT_TYPE_MASK                   1 | 
 
 
 
 
 | 61 | #define SYNCHRONIZATION_EVENT             0 | 
 
 
 
 
 | 62 | #define NOTIFICATION_EVENT                1 | 
 
 
 
 
 | 63 |  | 
 
 
 
 
 | 64 | #define INITIAL_EVENT_STATE_MASK          2 | 
 
 
 
 
 | 65 | #define INITIAL_EVENT_NOT_SIGNALED        0 | 
 
 
 
 
 | 66 | #define INITIAL_EVENT_SIGNALED            2 | 
 
 
 
 
 | 67 |  | 
 
 
 
 
 | 68 | typedef enum VIDEO_DEBUG_LEVEL { | 
 
 
 
 
 | 69 | Error = 0, | 
 
 
 
 
 | 70 | Warn, | 
 
 
 
 
 | 71 | Trace, | 
 
 
 
 
 | 72 | Info | 
 
 
 
 
 | 73 | } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; | 
 
 
 
 
 | 74 |  | 
 
 
 
 
 | 75 | typedef enum { | 
 
 
 
 
 | 76 | VideoPortUnlockAfterDma = 1, | 
 
 
 
 
 | 77 | VideoPortKeepPagesLocked, | 
 
 
 
 
 | 78 | VideoPortDmaInitOnly | 
 
 
 
 
 | 79 | } DMA_FLAGS; | 
 
 
 
 
 | 80 |  | 
 
 
 
 
 | 81 | typedef enum _HW_DMA_RETURN { | 
 
 
 
 
 | 82 | DmaAsyncReturn, | 
 
 
 
 
 | 83 | DmaSyncReturn | 
 
 
 
 
 | 84 | } HW_DMA_RETURN, *PHW_DMA_RETURN; | 
 
 
 
 
 | 85 |  | 
 
 
 
 
 | 86 | typedef HW_DMA_RETURN | 
 
 
 
 
 | 87 | (*PVIDEO_HW_START_DMA)( | 
 
 
 
 
 | 88 | PVOID  HwDeviceExtension, | 
 
 
 
 
 | 89 | PDMA  pDma); | 
 
 
 
 
 | 90 |  | 
 
 
 
 
 | 91 |  | 
 
 
 
 
 | 92 | #ifdef DBG | 
 
 
 
 
 | 93 |  | 
 
 
 
 
 | 94 | #define PAGED_CODE() \ | 
 
 
 
 
 | 95 | if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) \ | 
 
 
 
 
 | 96 | { \ | 
 
 
 
 
 | 97 | VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \ | 
 
 
 
 
 | 98 | ASSERT(FALSE); \ | 
 
 
 
 
 | 99 | } | 
 
 
 
 
 | 100 |  | 
 
 
 
 
 | 101 | #else | 
 
 
 
 
 | 102 |  | 
 
 
 
 
 | 103 | #define PAGED_CODE() | 
 
 
 
 
 | 104 |  | 
 
 
 
 
 | 105 | #endif | 
 
 
 
 
 | 106 |  | 
 
 
 
 
 | 107 | typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { | 
 
 
 
 
 | 108 | INTERFACE_TYPE InterfaceType; | 
 
 
 
 
 | 109 | ULONG BusNumber; | 
 
 
 
 
 | 110 | USHORT Version; | 
 
 
 
 
 | 111 | USHORT Revision; | 
 
 
 
 
 | 112 | USHORT Irql; | 
 
 
 
 
 | 113 | USHORT Vector; | 
 
 
 
 
 | 114 | ULONG ControlBase; | 
 
 
 
 
 | 115 | ULONG ControlSize; | 
 
 
 
 
 | 116 | ULONG CursorBase; | 
 
 
 
 
 | 117 | ULONG CursorSize; | 
 
 
 
 
 | 118 | ULONG FrameBase; | 
 
 
 
 
 | 119 | ULONG FrameSize; | 
 
 
 
 
 | 120 | } VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA; | 
 
 
 
 
 | 121 |  | 
 
 
 
 
 | 122 | #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO       0x42 | 
 
 
 
 
 | 123 | #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28 | 
 
 
 
 
 | 124 | #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50 | 
 
 
 
 
 | 125 |  | 
 
 
 
 
 | 126 | typedef enum _VIDEO_DEVICE_DATA_TYPE { | 
 
 
 
 
 | 127 | VpMachineData = 0, | 
 
 
 
 
 | 128 | VpCmosData, | 
 
 
 
 
 | 129 | VpBusData, | 
 
 
 
 
 | 130 | VpControllerData, | 
 
 
 
 
 | 131 | VpMonitorData | 
 
 
 
 
 | 132 | } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; | 
 
 
 
 
 | 133 |  | 
 
 
 
 
 | 134 |  | 
 
 
 
 
 | 135 |  | 
 
 
 
 
 | 136 | /* Video miniport driver functions */ | 
 
 
 
 
 | 137 |  | 
 
 
 
 
 | 138 | typedef struct _VP_SCATTER_GATHER_ELEMENT { | 
 
 
 
 
 | 139 | PHYSICAL_ADDRESS  Address; | 
 
 
 
 
 | 140 | ULONG  Length; | 
 
 
 
 
 | 141 | ULONG_PTR  Reserved; | 
 
 
 
 
 | 142 | } VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT; | 
 
 
 
 
 | 143 |  | 
 
 
 
 
 | 144 | typedef struct _VP_SCATTER_GATHER_LIST { | 
 
 
 
 
 | 145 | ULONG  NumberOfElements; | 
 
 
 
 
 | 146 | ULONG_PTR  Reserved; | 
 
 
 
 
 | 147 | VP_SCATTER_GATHER_ELEMENT  Elements[0]; | 
 
 
 
 
 | 148 | } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; | 
 
 
 
 
 | 149 |  | 
 
 
 
 
 | 150 | typedef VOID DDKAPI | 
 
 
 
 
 | 151 | (*PEXECUTE_DMA)( | 
 
 
 
 
 | 152 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 153 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter, | 
 
 
 
 
 | 154 | /*IN*/ PVP_SCATTER_GATHER_LIST  SGList, | 
 
 
 
 
 | 155 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 156 |  | 
 
 
 
 
 | 157 | typedef PVOID DDKAPI | 
 
 
 
 
 | 158 | (*PVIDEO_PORT_GET_PROC_ADDRESS)( | 
 
 
 
 
 | 159 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 160 | /*IN*/ PUCHAR  FunctionName); | 
 
 
 
 
 | 161 |  | 
 
 
 
 
 | 162 | typedef struct _VIDEO_PORT_CONFIG_INFO { | 
 
 
 
 
 | 163 | ULONG  Length; | 
 
 
 
 
 | 164 | ULONG  SystemIoBusNumber; | 
 
 
 
 
 | 165 | INTERFACE_TYPE  AdapterInterfaceType; | 
 
 
 
 
 | 166 | ULONG  BusInterruptLevel; | 
 
 
 
 
 | 167 | ULONG  BusInterruptVector; | 
 
 
 
 
 | 168 | KINTERRUPT_MODE  InterruptMode; | 
 
 
 
 
 | 169 | ULONG  NumEmulatorAccessEntries; | 
 
 
 
 
 | 170 | PEMULATOR_ACCESS_ENTRY  EmulatorAccessEntries; | 
 
 
 
 
 | 171 | ULONG_PTR  EmulatorAccessEntriesContext; | 
 
 
 
 
 | 172 | PHYSICAL_ADDRESS  VdmPhysicalVideoMemoryAddress; | 
 
 
 
 
 | 173 | ULONG  VdmPhysicalVideoMemoryLength; | 
 
 
 
 
 | 174 | ULONG  HardwareStateSize; | 
 
 
 
 
 | 175 | ULONG  DmaChannel; | 
 
 
 
 
 | 176 | ULONG  DmaPort; | 
 
 
 
 
 | 177 | UCHAR  DmaShareable; | 
 
 
 
 
 | 178 | UCHAR  InterruptShareable; | 
 
 
 
 
 | 179 | BOOLEAN  Master; | 
 
 
 
 
 | 180 | DMA_WIDTH  DmaWidth; | 
 
 
 
 
 | 181 | DMA_SPEED  DmaSpeed; | 
 
 
 
 
 | 182 | BOOLEAN  bMapBuffers; | 
 
 
 
 
 | 183 | BOOLEAN  NeedPhysicalAddresses; | 
 
 
 
 
 | 184 | BOOLEAN  DemandMode; | 
 
 
 
 
 | 185 | ULONG  MaximumTransferLength; | 
 
 
 
 
 | 186 | ULONG  NumberOfPhysicalBreaks; | 
 
 
 
 
 | 187 | BOOLEAN  ScatterGather; | 
 
 
 
 
 | 188 | ULONG  MaximumScatterGatherChunkSize; | 
 
 
 
 
 | 189 | PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress; | 
 
 
 
 
 | 190 | PWSTR  DriverRegistryPath; | 
 
 
 
 
 | 191 | ULONGLONG  SystemMemorySize; | 
 
 
 
 
 | 192 | } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; | 
 
 
 
 
 | 193 |  | 
 
 
 
 
 | 194 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 195 | (*PVIDEO_HW_FIND_ADAPTER)( | 
 
 
 
 
 | 196 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 197 | /*IN*/ PVOID  HwContext, | 
 
 
 
 
 | 198 | /*IN*/ PWSTR  ArgumentString, | 
 
 
 
 
 | 199 | /*IN OUT*/  PVIDEO_PORT_CONFIG_INFO  ConfigInfo, | 
 
 
 
 
 | 200 | /*OUT*/ PUCHAR  Again); | 
 
 
 
 
 | 201 |  | 
 
 
 
 
 | 202 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 203 | (*PVIDEO_HW_POWER_GET)( | 
 
 
 
 
 | 204 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 205 | /*IN*/ ULONG  HwId, | 
 
 
 
 
 | 206 | /*IN OUT*/  PVIDEO_POWER_MANAGEMENT  VideoPowerControl); | 
 
 
 
 
 | 207 |  | 
 
 
 
 
 | 208 | /* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */ | 
 
 
 
 
 | 209 | #define VIDEO_ENUM_MORE_DEVICES           ERROR_CONTINUE | 
 
 
 
 
 | 210 | #define VIDEO_ENUM_NO_MORE_DEVICES        ERROR_NO_MORE_DEVICES | 
 
 
 
 
 | 211 | #define VIDEO_ENUM_INVALID_DEVICE         ERROR_INVALID_NAME | 
 
 
 
 
 | 212 |  | 
 
 
 
 
 | 213 | /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */ | 
 
 
 
 
 | 214 | typedef struct _VIDEO_CHILD_ENUM_INFO { | 
 
 
 
 
 | 215 | ULONG  Size; | 
 
 
 
 
 | 216 | ULONG  ChildDescriptorSize; | 
 
 
 
 
 | 217 | ULONG  ChildIndex; | 
 
 
 
 
 | 218 | ULONG  ACPIHwId; | 
 
 
 
 
 | 219 | PVOID  ChildHwDeviceExtension; | 
 
 
 
 
 | 220 | } VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO; | 
 
 
 
 
 | 221 |  | 
 
 
 
 
 | 222 | /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */ | 
 
 
 
 
 | 223 | typedef enum _VIDEO_CHILD_TYPE { | 
 
 
 
 
 | 224 | Monitor = 1, | 
 
 
 
 
 | 225 | NonPrimaryChip, | 
 
 
 
 
 | 226 | VideoChip, | 
 
 
 
 
 | 227 | Other | 
 
 
 
 
 | 228 | } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; | 
 
 
 
 
 | 229 |  | 
 
 
 
 
 | 230 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 231 | (*PVIDEO_HW_GET_CHILD_DESCRIPTOR)( | 
 
 
 
 
 | 232 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 233 | /*IN*/ PVIDEO_CHILD_ENUM_INFO  ChildEnumInfo, | 
 
 
 
 
 | 234 | /*OUT*/  PVIDEO_CHILD_TYPE  VideoChildType, | 
 
 
 
 
 | 235 | /*OUT*/  PUCHAR  pChildDescriptor, | 
 
 
 
 
 | 236 | /*OUT*/  PULONG  UId, | 
 
 
 
 
 | 237 | /*OUT*/  PULONG  pUnused); | 
 
 
 
 
 | 238 |  | 
 
 
 
 
 | 239 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 240 | (*PVIDEO_HW_INITIALIZE)( | 
 
 
 
 
 | 241 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 242 |  | 
 
 
 
 
 | 243 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 244 | (*PVIDEO_HW_INTERRUPT)( | 
 
 
 
 
 | 245 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 246 |  | 
 
 
 
 
 | 247 | /* VIDEO_ACCESS_RANGE.RangePassive */ | 
 
 
 
 
 | 248 | #define VIDEO_RANGE_PASSIVE_DECODE        1 | 
 
 
 
 
 | 249 | #define VIDEO_RANGE_10_BIT_DECODE         2 | 
 
 
 
 
 | 250 |  | 
 
 
 
 
 | 251 | #ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */ | 
 
 
 
 
 | 252 | #define VIDEO_ACCESS_RANGE_DEFINED | 
 
 
 
 
 | 253 | typedef struct _VIDEO_ACCESS_RANGE { | 
 
 
 
 
 | 254 | PHYSICAL_ADDRESS  RangeStart; | 
 
 
 
 
 | 255 | ULONG  RangeLength; | 
 
 
 
 
 | 256 | UCHAR  RangeInIoSpace; | 
 
 
 
 
 | 257 | UCHAR  RangeVisible; | 
 
 
 
 
 | 258 | UCHAR  RangeShareable; | 
 
 
 
 
 | 259 | UCHAR  RangePassive; | 
 
 
 
 
 | 260 | } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; | 
 
 
 
 
 | 261 | #endif | 
 
 
 
 
 | 262 |  | 
 
 
 
 
 | 263 | typedef VOID DDKAPI | 
 
 
 
 
 | 264 | (*PVIDEO_HW_LEGACYRESOURCES)( | 
 
 
 
 
 | 265 | /*IN*/ ULONG  VendorId, | 
 
 
 
 
 | 266 | /*IN*/ ULONG  DeviceId, | 
 
 
 
 
 | 267 | /*IN OUT*/  PVIDEO_ACCESS_RANGE  *LegacyResourceList, | 
 
 
 
 
 | 268 | /*IN OUT*/  PULONG  LegacyResourceCount); | 
 
 
 
 
 | 269 |  | 
 
 
 
 
 | 270 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 271 | (*PMINIPORT_QUERY_DEVICE_ROUTINE)( | 
 
 
 
 
 | 272 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 273 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 274 | /*IN*/ VIDEO_DEVICE_DATA_TYPE  DeviceDataType, | 
 
 
 
 
 | 275 | /*IN*/ PVOID  Identifier, | 
 
 
 
 
 | 276 | /*IN*/ ULONG  IdentifierLength, | 
 
 
 
 
 | 277 | /*IN*/ PVOID  ConfigurationData, | 
 
 
 
 
 | 278 | /*IN*/ ULONG  ConfigurationDataLength, | 
 
 
 
 
 | 279 | /*IN OUT*/  PVOID  ComponentInformation, | 
 
 
 
 
 | 280 | /*IN*/ ULONG  ComponentInformationLength); | 
 
 
 
 
 | 281 |  | 
 
 
 
 
 | 282 | typedef struct _QUERY_INTERFACE { | 
 
 
 
 
 | 283 | CONST GUID  *InterfaceType; | 
 
 
 
 
 | 284 | USHORT  Size; | 
 
 
 
 
 | 285 | USHORT  Version; | 
 
 
 
 
 | 286 | PINTERFACE  Interface; | 
 
 
 
 
 | 287 | PVOID  InterfaceSpecificData; | 
 
 
 
 
 | 288 | } QUERY_INTERFACE, *PQUERY_INTERFACE; | 
 
 
 
 
 | 289 |  | 
 
 
 
 
 | 290 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 291 | (*PVIDEO_HW_QUERY_INTERFACE)( | 
 
 
 
 
 | 292 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 293 | /*IN OUT*/  PQUERY_INTERFACE  QueryInterface); | 
 
 
 
 
 | 294 |  | 
 
 
 
 
 | 295 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 296 | (*PMINIPORT_GET_REGISTRY_ROUTINE)( | 
 
 
 
 
 | 297 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 298 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 299 | /*IN OUT*/  PWSTR  ValueName, | 
 
 
 
 
 | 300 | /*IN OUT*/  PVOID  ValueData, | 
 
 
 
 
 | 301 | /*IN*/ ULONG  ValueLength); | 
 
 
 
 
 | 302 |  | 
 
 
 
 
 | 303 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 304 | (*PVIDEO_HW_RESET_HW)( | 
 
 
 
 
 | 305 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 306 | /*IN*/ ULONG  Columns, | 
 
 
 
 
 | 307 | /*IN*/ ULONG  Rows); | 
 
 
 
 
 | 308 |  | 
 
 
 
 
 | 309 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 310 | (*PVIDEO_HW_POWER_SET)( | 
 
 
 
 
 | 311 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 312 | /*IN*/ ULONG  HwId, | 
 
 
 
 
 | 313 | /*IN*/ PVIDEO_POWER_MANAGEMENT  VideoPowerControl); | 
 
 
 
 
 | 314 |  | 
 
 
 
 
 | 315 | typedef struct _STATUS_BLOCK { | 
 
 
 
 
 | 316 | _ANONYMOUS_UNION union { | 
 
 
 
 
 | 317 | VP_STATUS  Status; | 
 
 
 
 
 | 318 | PVOID  Pointer; | 
 
 
 
 
 | 319 | } DUMMYUNIONNAME; | 
 
 
 
 
 | 320 | ULONG_PTR Information; | 
 
 
 
 
 | 321 | } STATUS_BLOCK, *PSTATUS_BLOCK; | 
 
 
 
 
 | 322 |  | 
 
 
 
 
 | 323 | typedef struct _VIDEO_REQUEST_PACKET { | 
 
 
 
 
 | 324 | ULONG  IoControlCode; | 
 
 
 
 
 | 325 | PSTATUS_BLOCK  StatusBlock; | 
 
 
 
 
 | 326 | PVOID  InputBuffer; | 
 
 
 
 
 | 327 | ULONG  InputBufferLength; | 
 
 
 
 
 | 328 | PVOID  OutputBuffer; | 
 
 
 
 
 | 329 | ULONG  OutputBufferLength; | 
 
 
 
 
 | 330 | } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; | 
 
 
 
 
 | 331 |  | 
 
 
 
 
 | 332 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 333 | (*PVIDEO_HW_START_IO)( | 
 
 
 
 
 | 334 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 335 | /*IN*/ PVIDEO_REQUEST_PACKET  RequestPacket); | 
 
 
 
 
 | 336 |  | 
 
 
 
 
 | 337 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 338 | (*PMINIPORT_SYNCHRONIZE_ROUTINE)( | 
 
 
 
 
 | 339 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 340 |  | 
 
 
 
 
 | 341 | typedef VOID DDKAPI | 
 
 
 
 
 | 342 | (*PVIDEO_HW_TIMER)( | 
 
 
 
 
 | 343 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 344 |  | 
 
 
 
 
 | 345 | typedef VOID DDKAPI | 
 
 
 
 
 | 346 | (*PMINIPORT_DPC_ROUTINE)( | 
 
 
 
 
 | 347 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 348 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 349 |  | 
 
 
 
 
 | 350 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 351 | (*PDRIVER_IO_PORT_UCHAR)( | 
 
 
 
 
 | 352 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 353 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 354 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 355 | /*IN*/ PUCHAR  Data); | 
 
 
 
 
 | 356 |  | 
 
 
 
 
 | 357 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 358 | (*PDRIVER_IO_PORT_UCHAR_STRING)( | 
 
 
 
 
 | 359 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 360 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 361 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 362 | /*IN*/ PUCHAR  Data, | 
 
 
 
 
 | 363 | /*IN*/ ULONG  DataLength); | 
 
 
 
 
 | 364 |  | 
 
 
 
 
 | 365 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 366 | (*PDRIVER_IO_PORT_ULONG)( | 
 
 
 
 
 | 367 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 368 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 369 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 370 | /*IN*/ PULONG  Data); | 
 
 
 
 
 | 371 |  | 
 
 
 
 
 | 372 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 373 | (*PDRIVER_IO_PORT_ULONG_STRING)( | 
 
 
 
 
 | 374 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 375 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 376 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 377 | /*IN*/ PULONG  Data, | 
 
 
 
 
 | 378 | /*IN*/ ULONG  DataLength); | 
 
 
 
 
 | 379 |  | 
 
 
 
 
 | 380 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 381 | (*PDRIVER_IO_PORT_USHORT)( | 
 
 
 
 
 | 382 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 383 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 384 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 385 | /*IN*/ PUSHORT  Data); | 
 
 
 
 
 | 386 |  | 
 
 
 
 
 | 387 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 388 | (*PDRIVER_IO_PORT_USHORT_STRING)( | 
 
 
 
 
 | 389 | /*IN*/ ULONG_PTR  Context, | 
 
 
 
 
 | 390 | /*IN*/ ULONG  Port, | 
 
 
 
 
 | 391 | /*IN*/ UCHAR  AccessMode, | 
 
 
 
 
 | 392 | /*IN*/ PUSHORT  Data, | 
 
 
 
 
 | 393 | /*IN*/ ULONG  DataLength); | 
 
 
 
 
 | 394 |  | 
 
 
 
 
 | 395 |  | 
 
 
 
 
 | 396 |  | 
 
 
 
 
 | 397 | typedef struct _INT10_BIOS_ARGUMENTS { | 
 
 
 
 
 | 398 | ULONG  Eax; | 
 
 
 
 
 | 399 | ULONG  Ebx; | 
 
 
 
 
 | 400 | ULONG  Ecx; | 
 
 
 
 
 | 401 | ULONG  Edx; | 
 
 
 
 
 | 402 | ULONG  Esi; | 
 
 
 
 
 | 403 | ULONG  Edi; | 
 
 
 
 
 | 404 | ULONG  Ebp; | 
 
 
 
 
 | 405 | USHORT  SegDs; | 
 
 
 
 
 | 406 | USHORT  SegEs; | 
 
 
 
 
 | 407 | } INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS; | 
 
 
 
 
 | 408 |  | 
 
 
 
 
 | 409 | typedef struct _VIDEO_CHILD_STATE { | 
 
 
 
 
 | 410 | ULONG  Id; | 
 
 
 
 
 | 411 | ULONG  State; | 
 
 
 
 
 | 412 | } VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE; | 
 
 
 
 
 | 413 |  | 
 
 
 
 
 | 414 | typedef struct _VIDEO_CHILD_STATE_CONFIGURATION { | 
 
 
 
 
 | 415 | ULONG  Count; | 
 
 
 
 
 | 416 | VIDEO_CHILD_STATE  ChildStateArray[ANYSIZE_ARRAY]; | 
 
 
 
 
 | 417 | } VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION; | 
 
 
 
 
 | 418 |  | 
 
 
 
 
 | 419 | typedef struct _VIDEO_HW_INITIALIZATION_DATA { | 
 
 
 
 
 | 420 | ULONG  HwInitDataSize; | 
 
 
 
 
 | 421 | INTERFACE_TYPE  AdapterInterfaceType; | 
 
 
 
 
 | 422 | PVIDEO_HW_FIND_ADAPTER  HwFindAdapter; | 
 
 
 
 
 | 423 | PVIDEO_HW_INITIALIZE  HwInitialize; | 
 
 
 
 
 | 424 | PVIDEO_HW_INTERRUPT  HwInterrupt; | 
 
 
 
 
 | 425 | PVIDEO_HW_START_IO  HwStartIO; | 
 
 
 
 
 | 426 | ULONG  HwDeviceExtensionSize; | 
 
 
 
 
 | 427 | ULONG  StartingDeviceNumber; | 
 
 
 
 
 | 428 | PVIDEO_HW_RESET_HW  HwResetHw; | 
 
 
 
 
 | 429 | PVIDEO_HW_TIMER  HwTimer; | 
 
 
 
 
 | 430 | PVIDEO_HW_START_DMA  HwStartDma; | 
 
 
 
 
 | 431 | PVIDEO_HW_POWER_SET  HwSetPowerState; | 
 
 
 
 
 | 432 | PVIDEO_HW_POWER_GET  HwGetPowerState; | 
 
 
 
 
 | 433 | PVIDEO_HW_GET_CHILD_DESCRIPTOR  HwGetVideoChildDescriptor; | 
 
 
 
 
 | 434 | PVIDEO_HW_QUERY_INTERFACE  HwQueryInterface; | 
 
 
 
 
 | 435 | ULONG  HwChildDeviceExtensionSize; | 
 
 
 
 
 | 436 | PVIDEO_ACCESS_RANGE  HwLegacyResourceList; | 
 
 
 
 
 | 437 | ULONG  HwLegacyResourceCount; | 
 
 
 
 
 | 438 | PVIDEO_HW_LEGACYRESOURCES  HwGetLegacyResources; | 
 
 
 
 
 | 439 | BOOLEAN  AllowEarlyEnumeration; | 
 
 
 
 
 | 440 | ULONG  Reserved; | 
 
 
 
 
 | 441 | } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA; | 
 
 
 
 
 | 442 |  | 
 
 
 
 
 | 443 | /* VIDEO_PORT_AGP_INTERFACE.Version contants */ | 
 
 
 
 
 | 444 | #define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 | 
 
 
 
 
 | 445 |  | 
 
 
 
 
 | 446 | typedef struct _VIDEO_PORT_AGP_INTERFACE { | 
 
 
 
 
 | 447 | SHORT  Size; | 
 
 
 
 
 | 448 | SHORT  Version; | 
 
 
 
 
 | 449 | PVOID  Context; | 
 
 
 
 
 | 450 | PINTERFACE_REFERENCE  InterfaceReference; | 
 
 
 
 
 | 451 | PINTERFACE_DEREFERENCE  InterfaceDereference; | 
 
 
 
 
 | 452 | PAGP_RESERVE_PHYSICAL  AgpReservePhysical; | 
 
 
 
 
 | 453 | PAGP_RELEASE_PHYSICAL  AgpReleasePhysical; | 
 
 
 
 
 | 454 | PAGP_COMMIT_PHYSICAL  AgpCommitPhysical; | 
 
 
 
 
 | 455 | PAGP_FREE_PHYSICAL  AgpFreePhysical; | 
 
 
 
 
 | 456 | PAGP_RESERVE_VIRTUAL  AgpReserveVirtual; | 
 
 
 
 
 | 457 | PAGP_RELEASE_VIRTUAL  AgpReleaseVirtual; | 
 
 
 
 
 | 458 | PAGP_COMMIT_VIRTUAL  AgpCommitVirtual; | 
 
 
 
 
 | 459 | PAGP_FREE_VIRTUAL  AgpFreeVirtual; | 
 
 
 
 
 | 460 | ULONGLONG  AgpAllocationLimit; | 
 
 
 
 
 | 461 | } VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE; | 
 
 
 
 
 | 462 |  | 
 
 
 
 
 | 463 | /* VIDEO_PORT_AGP_INTERFACE_2.Version constants */ | 
 
 
 
 
 | 464 | #define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 | 
 
 
 
 
 | 465 |  | 
 
 
 
 
 | 466 | typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { | 
 
 
 
 
 | 467 | /*IN*/ USHORT  Size; | 
 
 
 
 
 | 468 | /*IN*/ USHORT  Version; | 
 
 
 
 
 | 469 | /*OUT*/ PVOID  Context; | 
 
 
 
 
 | 470 | /*OUT*/ PINTERFACE_REFERENCE  InterfaceReference; | 
 
 
 
 
 | 471 | /*OUT*/ PINTERFACE_DEREFERENCE  InterfaceDereference; | 
 
 
 
 
 | 472 | /*OUT*/ PAGP_RESERVE_PHYSICAL  AgpReservePhysical; | 
 
 
 
 
 | 473 | /*OUT*/ PAGP_RELEASE_PHYSICAL  AgpReleasePhysical; | 
 
 
 
 
 | 474 | /*OUT*/ PAGP_COMMIT_PHYSICAL  AgpCommitPhysical; | 
 
 
 
 
 | 475 | /*OUT*/ PAGP_FREE_PHYSICAL  AgpFreePhysical; | 
 
 
 
 
 | 476 | /*OUT*/ PAGP_RESERVE_VIRTUAL  AgpReserveVirtual; | 
 
 
 
 
 | 477 | /*OUT*/ PAGP_RELEASE_VIRTUAL  AgpReleaseVirtual; | 
 
 
 
 
 | 478 | /*OUT*/ PAGP_COMMIT_VIRTUAL  AgpCommitVirtual; | 
 
 
 
 
 | 479 | /*OUT*/ PAGP_FREE_VIRTUAL  AgpFreeVirtual; | 
 
 
 
 
 | 480 | /*OUT*/ ULONGLONG  AgpAllocationLimit; | 
 
 
 
 
 | 481 | /*OUT*/ PAGP_SET_RATE  AgpSetRate; | 
 
 
 
 
 | 482 | } VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2; | 
 
 
 
 
 | 483 |  | 
 
 
 
 
 | 484 | #define VIDEO_PORT_I2C_INTERFACE_VERSION_1  1 | 
 
 
 
 
 | 485 |  | 
 
 
 
 
 | 486 | typedef VOID DDKAPI | 
 
 
 
 
 | 487 | (*PVIDEO_WRITE_CLOCK_LINE)( | 
 
 
 
 
 | 488 | PVOID HwDeviceExtension, | 
 
 
 
 
 | 489 | UCHAR Data); | 
 
 
 
 
 | 490 |  | 
 
 
 
 
 | 491 | typedef VOID DDKAPI | 
 
 
 
 
 | 492 | (*PVIDEO_WRITE_DATA_LINE)( | 
 
 
 
 
 | 493 | PVOID HwDeviceExtension, | 
 
 
 
 
 | 494 | UCHAR Data); | 
 
 
 
 
 | 495 |  | 
 
 
 
 
 | 496 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 497 | (*PVIDEO_READ_CLOCK_LINE)( | 
 
 
 
 
 | 498 | PVOID HwDeviceExtension); | 
 
 
 
 
 | 499 |  | 
 
 
 
 
 | 500 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 501 | (*PVIDEO_READ_DATA_LINE)( | 
 
 
 
 
 | 502 | PVOID HwDeviceExtension); | 
 
 
 
 
 | 503 |  | 
 
 
 
 
 | 504 | typedef struct _I2C_CALLBACKS | 
 
 
 
 
 | 505 | { | 
 
 
 
 
 | 506 | /*IN*/ PVIDEO_WRITE_CLOCK_LINE  WriteClockLine; | 
 
 
 
 
 | 507 | /*IN*/ PVIDEO_WRITE_DATA_LINE  WriteDataLine; | 
 
 
 
 
 | 508 | /*IN*/ PVIDEO_READ_CLOCK_LINE  ReadClockLine; | 
 
 
 
 
 | 509 | /*IN*/ PVIDEO_READ_DATA_LINE  ReadDataLine; | 
 
 
 
 
 | 510 | } I2C_CALLBACKS, *PI2C_CALLBACKS; | 
 
 
 
 
 | 511 |  | 
 
 
 
 
 | 512 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 513 | (*PI2C_START)( | 
 
 
 
 
 | 514 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 515 | /*IN*/ PI2C_CALLBACKS  I2CCallbacks); | 
 
 
 
 
 | 516 |  | 
 
 
 
 
 | 517 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 518 | (*PI2C_STOP)( | 
 
 
 
 
 | 519 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 520 | /*IN*/ PI2C_CALLBACKS  I2CCallbacks); | 
 
 
 
 
 | 521 |  | 
 
 
 
 
 | 522 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 523 | (*PI2C_WRITE)( | 
 
 
 
 
 | 524 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 525 | /*IN*/ PI2C_CALLBACKS  I2CCallbacks, | 
 
 
 
 
 | 526 | /*IN*/ PUCHAR  Buffer, | 
 
 
 
 
 | 527 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 528 |  | 
 
 
 
 
 | 529 | typedef BOOLEAN DDKAPI | 
 
 
 
 
 | 530 | (*PI2C_READ)( | 
 
 
 
 
 | 531 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 532 | /*IN*/ PI2C_CALLBACKS  I2CCallbacks, | 
 
 
 
 
 | 533 | /*OUT*/ PUCHAR  Buffer, | 
 
 
 
 
 | 534 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 535 |  | 
 
 
 
 
 | 536 | typedef struct _VIDEO_PORT_I2C_INTERFACE { | 
 
 
 
 
 | 537 | USHORT  Size; | 
 
 
 
 
 | 538 | USHORT  Version; | 
 
 
 
 
 | 539 | PVOID  Context; | 
 
 
 
 
 | 540 | PINTERFACE_REFERENCE  InterfaceReference; | 
 
 
 
 
 | 541 | PINTERFACE_DEREFERENCE  InterfaceDereference; | 
 
 
 
 
 | 542 | PI2C_START  I2CStart; | 
 
 
 
 
 | 543 | PI2C_STOP  I2CStop; | 
 
 
 
 
 | 544 | PI2C_WRITE  I2CWrite; | 
 
 
 
 
 | 545 | PI2C_READ  I2CRead; | 
 
 
 
 
 | 546 | } VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE; | 
 
 
 
 
 | 547 |  | 
 
 
 
 
 | 548 | /* VIDEO_PORT_INT10_INTERFACE.Version constants */ | 
 
 
 
 
 | 549 | #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 | 
 
 
 
 
 | 550 |  | 
 
 
 
 
 | 551 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 552 | (*PINT10_ALLOCATE_BUFFER)( | 
 
 
 
 
 | 553 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 554 | /*OUT*/ PUSHORT  Seg, | 
 
 
 
 
 | 555 | /*OUT*/ PUSHORT  Off, | 
 
 
 
 
 | 556 | /*IN OUT*/ PULONG  Length); | 
 
 
 
 
 | 557 |  | 
 
 
 
 
 | 558 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 559 | (*PINT10_CALL_BIOS)( | 
 
 
 
 
 | 560 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 561 | /*IN OUT*/ PINT10_BIOS_ARGUMENTS  BiosArguments); | 
 
 
 
 
 | 562 |  | 
 
 
 
 
 | 563 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 564 | (*PINT10_FREE_BUFFER)( | 
 
 
 
 
 | 565 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 566 | /*IN*/ USHORT  Seg, | 
 
 
 
 
 | 567 | /*IN*/ USHORT  Off); | 
 
 
 
 
 | 568 |  | 
 
 
 
 
 | 569 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 570 | (*PINT10_READ_MEMORY)( | 
 
 
 
 
 | 571 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 572 | /*IN*/ USHORT  Seg, | 
 
 
 
 
 | 573 | /*IN*/ USHORT  Off, | 
 
 
 
 
 | 574 | /*OUT*/ PVOID  Buffer, | 
 
 
 
 
 | 575 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 576 |  | 
 
 
 
 
 | 577 | typedef VP_STATUS DDKAPI | 
 
 
 
 
 | 578 | (*PINT10_WRITE_MEMORY)( | 
 
 
 
 
 | 579 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 580 | /*IN*/ USHORT  Seg, | 
 
 
 
 
 | 581 | /*IN*/ USHORT  Off, | 
 
 
 
 
 | 582 | /*IN*/ PVOID  Buffer, | 
 
 
 
 
 | 583 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 584 |  | 
 
 
 
 
 | 585 | typedef struct _VIDEO_PORT_INT10_INTERFACE { | 
 
 
 
 
 | 586 | /*IN*/ USHORT  Size; | 
 
 
 
 
 | 587 | /*IN*/ USHORT  Version; | 
 
 
 
 
 | 588 | /*OUT*/ PVOID  Context; | 
 
 
 
 
 | 589 | /*OUT*/ PINTERFACE_REFERENCE  InterfaceReference; | 
 
 
 
 
 | 590 | /*OUT*/ PINTERFACE_DEREFERENCE  InterfaceDereference; | 
 
 
 
 
 | 591 | /*OUT*/ PINT10_ALLOCATE_BUFFER  Int10AllocateBuffer; | 
 
 
 
 
 | 592 | /*OUT*/ PINT10_FREE_BUFFER  Int10FreeBuffer; | 
 
 
 
 
 | 593 | /*OUT*/ PINT10_READ_MEMORY  Int10ReadMemory; | 
 
 
 
 
 | 594 | /*OUT*/ PINT10_WRITE_MEMORY  Int10WriteMemory; | 
 
 
 
 
 | 595 | /*OUT*/ PINT10_CALL_BIOS  Int10CallBios; | 
 
 
 
 
 | 596 | } VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE; | 
 
 
 
 
 | 597 |  | 
 
 
 
 
 | 598 | /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */ | 
 
 
 
 
 | 599 | #define VIDEO_MEMORY_SPACE_MEMORY         0x00 | 
 
 
 
 
 | 600 | #define VIDEO_MEMORY_SPACE_IO             0x01 | 
 
 
 
 
 | 601 | #define VIDEO_MEMORY_SPACE_USER_MODE      0x02 | 
 
 
 
 
 | 602 | #define VIDEO_MEMORY_SPACE_DENSE          0x04 | 
 
 
 
 
 | 603 | #define VIDEO_MEMORY_SPACE_P6CACHE        0x08 | 
 
 
 
 
 | 604 |  | 
 
 
 
 
 | 605 | typedef struct _VIDEO_X86_BIOS_ARGUMENTS { | 
 
 
 
 
 | 606 | ULONG  Eax; | 
 
 
 
 
 | 607 | ULONG  Ebx; | 
 
 
 
 
 | 608 | ULONG  Ecx; | 
 
 
 
 
 | 609 | ULONG  Edx; | 
 
 
 
 
 | 610 | ULONG  Esi; | 
 
 
 
 
 | 611 | ULONG  Edi; | 
 
 
 
 
 | 612 | ULONG  Ebp; | 
 
 
 
 
 | 613 | } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS; | 
 
 
 
 
 | 614 |  | 
 
 
 
 
 | 615 | typedef struct _VP_DEVICE_DESCRIPTION { | 
 
 
 
 
 | 616 | BOOLEAN  ScatterGather; | 
 
 
 
 
 | 617 | BOOLEAN  Dma32BitAddresses; | 
 
 
 
 
 | 618 | BOOLEAN  Dma64BitAddresses; | 
 
 
 
 
 | 619 | ULONG  MaximumLength; | 
 
 
 
 
 | 620 | } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; | 
 
 
 
 
 | 621 |  | 
 
 
 
 
 | 622 | typedef struct _VPOSVERSIONINFO { | 
 
 
 
 
 | 623 | /*IN*/ ULONG  Size; | 
 
 
 
 
 | 624 | /*OUT*/ ULONG  MajorVersion; | 
 
 
 
 
 | 625 | /*OUT*/ ULONG  MinorVersion; | 
 
 
 
 
 | 626 | /*OUT*/ ULONG  BuildNumber; | 
 
 
 
 
 | 627 | /*OUT*/ USHORT  ServicePackMajor; | 
 
 
 
 
 | 628 | /*OUT*/ USHORT  ServicePackMinor; | 
 
 
 
 
 | 629 | } VPOSVERSIONINFO, *PVPOSVERSIONINFO; | 
 
 
 
 
 | 630 |  | 
 
 
 
 
 | 631 |  | 
 
 
 
 
 | 632 |  | 
 
 
 
 
 | 633 | /* Video port functions for miniports */ | 
 
 
 
 
 | 634 |  | 
 
 
 
 
 | 635 | VPAPI | 
 
 
 
 
 | 636 | VOID | 
 
 
 
 
 | 637 | DDKAPI | 
 
 
 
 
 | 638 | VideoDebugPrint( | 
 
 
 
 
 | 639 | /*IN*/ ULONG  DebugPrintLevel, | 
 
 
 
 
 | 640 | /*IN*/ PCHAR  DebugMessage, | 
 
 
 
 
 | 641 | /*IN*/ ...); | 
 
 
 
 
 | 642 |  | 
 
 
 
 
 | 643 | VPAPI | 
 
 
 
 
 | 644 | VOID | 
 
 
 
 
 | 645 | DDKAPI | 
 
 
 
 
 | 646 | VideoPortAcquireDeviceLock( | 
 
 
 
 
 | 647 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 648 |  | 
 
 
 
 
 | 649 | VPAPI | 
 
 
 
 
 | 650 | VOID | 
 
 
 
 
 | 651 | DDKAPI | 
 
 
 
 
 | 652 | VideoPortAcquireSpinLock( | 
 
 
 
 
 | 653 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 654 | /*IN*/ PSPIN_LOCK  SpinLock, | 
 
 
 
 
 | 655 | /*OUT*/ PUCHAR  OldIrql); | 
 
 
 
 
 | 656 |  | 
 
 
 
 
 | 657 | VPAPI | 
 
 
 
 
 | 658 | VOID | 
 
 
 
 
 | 659 | DDKAPI | 
 
 
 
 
 | 660 | VideoPortAcquireSpinLockAtDpcLevel( | 
 
 
 
 
 | 661 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 662 | /*IN*/ PSPIN_LOCK  SpinLock); | 
 
 
 
 
 | 663 |  | 
 
 
 
 
 | 664 | VPAPI | 
 
 
 
 
 | 665 | VP_STATUS | 
 
 
 
 
 | 666 | DDKAPI | 
 
 
 
 
 | 667 | VideoPortAllocateBuffer( | 
 
 
 
 
 | 668 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 669 | /*IN*/ ULONG  Size, | 
 
 
 
 
 | 670 | /*OUT*/ PVOID  *Buffer); | 
 
 
 
 
 | 671 |  | 
 
 
 
 
 | 672 | VPAPI | 
 
 
 
 
 | 673 | PVOID | 
 
 
 
 
 | 674 | DDKAPI | 
 
 
 
 
 | 675 | VideoPortAllocateCommonBuffer( | 
 
 
 
 
 | 676 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 677 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter, | 
 
 
 
 
 | 678 | /*IN*/ ULONG  DesiredLength, | 
 
 
 
 
 | 679 | /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress, | 
 
 
 
 
 | 680 | /*IN*/ BOOLEAN  CacheEnabled, | 
 
 
 
 
 | 681 | PVOID  Reserved); | 
 
 
 
 
 | 682 |  | 
 
 
 
 
 | 683 | VPAPI | 
 
 
 
 
 | 684 | PVOID | 
 
 
 
 
 | 685 | DDKAPI | 
 
 
 
 
 | 686 | VideoPortAllocateContiguousMemory( | 
 
 
 
 
 | 687 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 688 | /*IN*/ ULONG  NumberOfBytes, | 
 
 
 
 
 | 689 | /*IN*/ PHYSICAL_ADDRESS  HighestAcceptableAddress); | 
 
 
 
 
 | 690 |  | 
 
 
 
 
 | 691 | /* VideoPortAllocatePool.PoolType constants */ | 
 
 
 
 
 | 692 | typedef enum _VP_POOL_TYPE { | 
 
 
 
 
 | 693 | VpNonPagedPool = 0, | 
 
 
 
 
 | 694 | VpPagedPool, | 
 
 
 
 
 | 695 | VpNonPagedPoolCacheAligned = 4, | 
 
 
 
 
 | 696 | VpPagedPoolCacheAligned | 
 
 
 
 
 | 697 | } VP_POOL_TYPE, *PVP_POOL_TYPE; | 
 
 
 
 
 | 698 |  | 
 
 
 
 
 | 699 | VPAPI | 
 
 
 
 
 | 700 | PVOID | 
 
 
 
 
 | 701 | DDKAPI | 
 
 
 
 
 | 702 | VideoPortAllocatePool( | 
 
 
 
 
 | 703 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 704 | /*IN*/ VP_POOL_TYPE  PoolType, | 
 
 
 
 
 | 705 | /*IN*/ SIZE_T  NumberOfBytes, | 
 
 
 
 
 | 706 | /*IN*/ ULONG  Tag); | 
 
 
 
 
 | 707 |  | 
 
 
 
 
 | 708 | VPAPI | 
 
 
 
 
 | 709 | PDMA | 
 
 
 
 
 | 710 | DDKAPI | 
 
 
 
 
 | 711 | VideoPortAssociateEventsWithDmaHandle( | 
 
 
 
 
 | 712 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 713 | /*IN OUT*/ PVIDEO_REQUEST_PACKET  pVrp, | 
 
 
 
 
 | 714 | /*IN*/ PVOID  MappedUserEvent, | 
 
 
 
 
 | 715 | /*IN*/ PVOID  DisplayDriverEvent); | 
 
 
 
 
 | 716 |  | 
 
 
 
 
 | 717 | /* VideoPortCheckForDeviceExistence.Flags constants */ | 
 
 
 
 
 | 718 | #define CDE_USE_SUBSYSTEM_IDS             0x00000001 | 
 
 
 
 
 | 719 | #define CDE_USE_REVISION                  0x00000002 | 
 
 
 
 
 | 720 |  | 
 
 
 
 
 | 721 | VPAPI | 
 
 
 
 
 | 722 | BOOLEAN | 
 
 
 
 
 | 723 | DDKAPI | 
 
 
 
 
 | 724 | VideoPortCheckForDeviceExistence( | 
 
 
 
 
 | 725 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 726 | /*IN*/ USHORT  VendorId, | 
 
 
 
 
 | 727 | /*IN*/ USHORT  DeviceId, | 
 
 
 
 
 | 728 | /*IN*/ UCHAR  RevisionId, | 
 
 
 
 
 | 729 | /*IN*/ USHORT  SubVendorId, | 
 
 
 
 
 | 730 | /*IN*/ USHORT  SubSystemId, | 
 
 
 
 
 | 731 | /*IN*/ ULONG  Flags); | 
 
 
 
 
 | 732 |  | 
 
 
 
 
 | 733 | VPAPI | 
 
 
 
 
 | 734 | VOID | 
 
 
 
 
 | 735 | DDKAPI | 
 
 
 
 
 | 736 | VideoPortClearEvent( | 
 
 
 
 
 | 737 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 738 | /*IN*/ PEVENT  pEvent); | 
 
 
 
 
 | 739 |  | 
 
 
 
 
 | 740 | VPAPI | 
 
 
 
 
 | 741 | ULONG | 
 
 
 
 
 | 742 | DDKAPI | 
 
 
 
 
 | 743 | VideoPortCompareMemory( | 
 
 
 
 
 | 744 | /*IN*/ PVOID  Source1, | 
 
 
 
 
 | 745 | /*IN*/ PVOID  Source2, | 
 
 
 
 
 | 746 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 747 |  | 
 
 
 
 
 | 748 | VPAPI | 
 
 
 
 
 | 749 | VP_STATUS | 
 
 
 
 
 | 750 | DDKAPI | 
 
 
 
 
 | 751 | VideoPortCompleteDma( | 
 
 
 
 
 | 752 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 753 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter, | 
 
 
 
 
 | 754 | /*IN*/ PVP_SCATTER_GATHER_LIST  VpScatterGather, | 
 
 
 
 
 | 755 | /*IN*/ BOOLEAN  WriteToDevice); | 
 
 
 
 
 | 756 |  | 
 
 
 
 
 | 757 | VPAPI | 
 
 
 
 
 | 758 | VP_STATUS | 
 
 
 
 
 | 759 | DDKAPI | 
 
 
 
 
 | 760 | VideoPortCreateEvent( | 
 
 
 
 
 | 761 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 762 | /*IN*/ ULONG  EventFlag, | 
 
 
 
 
 | 763 | /*IN*/ PVOID  Unused, | 
 
 
 
 
 | 764 | /*OUT*/ PEVENT  *ppEvent); | 
 
 
 
 
 | 765 |  | 
 
 
 
 
 | 766 | VPAPI | 
 
 
 
 
 | 767 | VP_STATUS | 
 
 
 
 
 | 768 | DDKAPI | 
 
 
 
 
 | 769 | VideoPortCreateSecondaryDisplay( | 
 
 
 
 
 | 770 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 771 | /*IN OUT*/ PVOID  *SecondaryDeviceExtension, | 
 
 
 
 
 | 772 | /*IN*/ ULONG  ulFlag); | 
 
 
 
 
 | 773 |  | 
 
 
 
 
 | 774 | VPAPI | 
 
 
 
 
 | 775 | VP_STATUS | 
 
 
 
 
 | 776 | DDKAPI | 
 
 
 
 
 | 777 | VideoPortCreateSpinLock( | 
 
 
 
 
 | 778 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 779 | /*OUT*/ PSPIN_LOCK  *SpinLock); | 
 
 
 
 
 | 780 |  | 
 
 
 
 
 | 781 | typedef struct _DDC_CONTROL { | 
 
 
 
 
 | 782 | /*IN*/ ULONG  Size; | 
 
 
 
 
 | 783 | /*IN*/ I2C_CALLBACKS  I2CCallbacks; | 
 
 
 
 
 | 784 | /*IN*/ UCHAR  EdidSegment; | 
 
 
 
 
 | 785 | } DDC_CONTROL, *PDDC_CONTROL; | 
 
 
 
 
 | 786 |  | 
 
 
 
 
 | 787 | VPAPI | 
 
 
 
 
 | 788 | BOOLEAN | 
 
 
 
 
 | 789 | DDKAPI | 
 
 
 
 
 | 790 | VideoPortDDCMonitorHelper( | 
 
 
 
 
 | 791 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 792 | /*IN*/ PVOID  DDCControl, | 
 
 
 
 
 | 793 | /*IN OUT*/ PUCHAR  EdidBuffer, | 
 
 
 
 
 | 794 | /*IN*/ ULONG  EdidBufferSize); | 
 
 
 
 
 | 795 |  | 
 
 
 
 
 | 796 | VPAPI | 
 
 
 
 
 | 797 | VOID | 
 
 
 
 
 | 798 | DDKCDECLAPI | 
 
 
 
 
 | 799 | VideoPortDebugPrint( | 
 
 
 
 
 | 800 | /*IN*/ VIDEO_DEBUG_LEVEL  DebugPrintLevel, | 
 
 
 
 
 | 801 | /*IN*/ PCHAR  DebugMessage, | 
 
 
 
 
 | 802 | /*IN*/ ...); | 
 
 
 
 
 | 803 |  | 
 
 
 
 
 | 804 | VPAPI | 
 
 
 
 
 | 805 | VP_STATUS | 
 
 
 
 
 | 806 | DDKAPI | 
 
 
 
 
 | 807 | VideoPortDeleteEvent( | 
 
 
 
 
 | 808 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 809 | /*IN*/ PEVENT  pEvent); | 
 
 
 
 
 | 810 |  | 
 
 
 
 
 | 811 | VPAPI | 
 
 
 
 
 | 812 | VP_STATUS | 
 
 
 
 
 | 813 | DDKAPI | 
 
 
 
 
 | 814 | VideoPortDeleteSpinLock( | 
 
 
 
 
 | 815 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 816 | /*IN*/ PSPIN_LOCK  SpinLock); | 
 
 
 
 
 | 817 |  | 
 
 
 
 
 | 818 | VPAPI | 
 
 
 
 
 | 819 | VP_STATUS | 
 
 
 
 
 | 820 | DDKAPI | 
 
 
 
 
 | 821 | VideoPortDisableInterrupt( | 
 
 
 
 
 | 822 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 823 |  | 
 
 
 
 
 | 824 | VPAPI | 
 
 
 
 
 | 825 | PDMA | 
 
 
 
 
 | 826 | DDKAPI | 
 
 
 
 
 | 827 | VideoPortDoDma( | 
 
 
 
 
 | 828 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 829 | /*IN*/ PDMA  pDma, | 
 
 
 
 
 | 830 | /*IN*/ DMA_FLAGS  DmaFlags); | 
 
 
 
 
 | 831 |  | 
 
 
 
 
 | 832 | VPAPI | 
 
 
 
 
 | 833 | VP_STATUS | 
 
 
 
 
 | 834 | DDKAPI | 
 
 
 
 
 | 835 | VideoPortEnableInterrupt( | 
 
 
 
 
 | 836 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 837 |  | 
 
 
 
 
 | 838 | VPAPI | 
 
 
 
 
 | 839 | VP_STATUS | 
 
 
 
 
 | 840 | DDKAPI | 
 
 
 
 
 | 841 | VideoPortEnumerateChildren( | 
 
 
 
 
 | 842 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 843 | /*IN*/ PVOID  Reserved); | 
 
 
 
 
 | 844 |  | 
 
 
 
 
 | 845 | VPAPI | 
 
 
 
 
 | 846 | VOID | 
 
 
 
 
 | 847 | DDKAPI | 
 
 
 
 
 | 848 | VideoPortFreeCommonBuffer( | 
 
 
 
 
 | 849 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 850 | /*IN*/ ULONG  Length, | 
 
 
 
 
 | 851 | /*IN*/ PVOID  VirtualAddress, | 
 
 
 
 
 | 852 | /*IN*/ PHYSICAL_ADDRESS  LogicalAddress, | 
 
 
 
 
 | 853 | /*IN*/ BOOLEAN  CacheEnabled); | 
 
 
 
 
 | 854 |  | 
 
 
 
 
 | 855 | VPAPI | 
 
 
 
 
 | 856 | VOID | 
 
 
 
 
 | 857 | DDKAPI | 
 
 
 
 
 | 858 | VideoPortFreeDeviceBase( | 
 
 
 
 
 | 859 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 860 | /*IN*/ PVOID  MappedAddress); | 
 
 
 
 
 | 861 |  | 
 
 
 
 
 | 862 | VPAPI | 
 
 
 
 
 | 863 | VOID | 
 
 
 
 
 | 864 | DDKAPI | 
 
 
 
 
 | 865 | VideoPortFreePool( | 
 
 
 
 
 | 866 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 867 | /*IN*/ PVOID  Ptr); | 
 
 
 
 
 | 868 |  | 
 
 
 
 
 | 869 | VPAPI | 
 
 
 
 
 | 870 | VP_STATUS | 
 
 
 
 
 | 871 | DDKAPI | 
 
 
 
 
 | 872 | VideoPortGetAccessRanges( | 
 
 
 
 
 | 873 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 874 | /*IN*/ ULONG  NumRequestedResources, | 
 
 
 
 
 | 875 | /*IN*/ PIO_RESOURCE_DESCRIPTOR  RequestedResources  /*OPTIONAL*/, | 
 
 
 
 
 | 876 | /*IN*/ ULONG  NumAccessRanges, | 
 
 
 
 
 | 877 | /*OUT*/ PVIDEO_ACCESS_RANGE  AccessRanges, | 
 
 
 
 
 | 878 | /*IN*/ PVOID  VendorId, | 
 
 
 
 
 | 879 | /*IN*/ PVOID  DeviceId, | 
 
 
 
 
 | 880 | /*OUT*/ PULONG  Slot); | 
 
 
 
 
 | 881 |  | 
 
 
 
 
 | 882 | VPAPI | 
 
 
 
 
 | 883 | PVOID | 
 
 
 
 
 | 884 | DDKAPI | 
 
 
 
 
 | 885 | VideoPortGetAssociatedDeviceExtension( | 
 
 
 
 
 | 886 | /*IN*/ PVOID  DeviceObject); | 
 
 
 
 
 | 887 |  | 
 
 
 
 
 | 888 | VPAPI | 
 
 
 
 
 | 889 | ULONG | 
 
 
 
 
 | 890 | DDKAPI | 
 
 
 
 
 | 891 | VideoPortGetAssociatedDeviceID( | 
 
 
 
 
 | 892 | /*IN*/ PVOID DeviceObject); | 
 
 
 
 
 | 893 |  | 
 
 
 
 
 | 894 | VPAPI | 
 
 
 
 
 | 895 | ULONG | 
 
 
 
 
 | 896 | DDKAPI | 
 
 
 
 
 | 897 | VideoPortGetBusData( | 
 
 
 
 
 | 898 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 899 | /*IN*/ BUS_DATA_TYPE  BusDataType, | 
 
 
 
 
 | 900 | /*IN*/ ULONG  SlotNumber, | 
 
 
 
 
 | 901 | /*IN OUT*/ PVOID  Buffer, | 
 
 
 
 
 | 902 | /*IN*/ ULONG  Offset, | 
 
 
 
 
 | 903 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 904 |  | 
 
 
 
 
 | 905 | VPAPI | 
 
 
 
 
 | 906 | ULONG | 
 
 
 
 
 | 907 | DDKAPI | 
 
 
 
 
 | 908 | VideoPortGetBytesUsed( | 
 
 
 
 
 | 909 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 910 | /*IN*/ PDMA  pDma); | 
 
 
 
 
 | 911 |  | 
 
 
 
 
 | 912 | VPAPI | 
 
 
 
 
 | 913 | PVOID | 
 
 
 
 
 | 914 | DDKAPI | 
 
 
 
 
 | 915 | VideoPortGetCommonBuffer( | 
 
 
 
 
 | 916 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 917 | /*IN*/ ULONG  DesiredLength, | 
 
 
 
 
 | 918 | /*IN*/ ULONG  Alignment, | 
 
 
 
 
 | 919 | /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress, | 
 
 
 
 
 | 920 | /*OUT*/ PULONG  pActualLength, | 
 
 
 
 
 | 921 | /*IN*/ BOOLEAN  CacheEnabled); | 
 
 
 
 
 | 922 |  | 
 
 
 
 
 | 923 | VPAPI | 
 
 
 
 
 | 924 | UCHAR | 
 
 
 
 
 | 925 | DDKAPI | 
 
 
 
 
 | 926 | VideoPortGetCurrentIrql( | 
 
 
 
 
 | 927 | VOID); | 
 
 
 
 
 | 928 |  | 
 
 
 
 
 | 929 | VPAPI | 
 
 
 
 
 | 930 | PVOID | 
 
 
 
 
 | 931 | DDKAPI | 
 
 
 
 
 | 932 | VideoPortGetDeviceBase( | 
 
 
 
 
 | 933 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 934 | /*IN*/ PHYSICAL_ADDRESS  IoAddress, | 
 
 
 
 
 | 935 | /*IN*/ ULONG  NumberOfUchars, | 
 
 
 
 
 | 936 | /*IN*/ UCHAR  InIoSpace); | 
 
 
 
 
 | 937 |  | 
 
 
 
 
 | 938 | VPAPI | 
 
 
 
 
 | 939 | VP_STATUS | 
 
 
 
 
 | 940 | DDKAPI | 
 
 
 
 
 | 941 | VideoPortGetDeviceData( | 
 
 
 
 
 | 942 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 943 | /*IN*/ VIDEO_DEVICE_DATA_TYPE  DeviceDataType, | 
 
 
 
 
 | 944 | /*IN*/ PMINIPORT_QUERY_DEVICE_ROUTINE  CallbackRoutine, | 
 
 
 
 
 | 945 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 946 |  | 
 
 
 
 
 | 947 | VPAPI | 
 
 
 
 
 | 948 | PVP_DMA_ADAPTER | 
 
 
 
 
 | 949 | DDKAPI | 
 
 
 
 
 | 950 | VideoPortGetDmaAdapter( | 
 
 
 
 
 | 951 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 952 | /*IN*/ PVP_DEVICE_DESCRIPTION  VpDeviceDescription); | 
 
 
 
 
 | 953 |  | 
 
 
 
 
 | 954 | VPAPI | 
 
 
 
 
 | 955 | PVOID | 
 
 
 
 
 | 956 | DDKAPI | 
 
 
 
 
 | 957 | VideoPortGetDmaContext( | 
 
 
 
 
 | 958 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 959 | /*IN*/ PDMA  pDma); | 
 
 
 
 
 | 960 |  | 
 
 
 
 
 | 961 | VPAPI | 
 
 
 
 
 | 962 | PVOID | 
 
 
 
 
 | 963 | DDKAPI | 
 
 
 
 
 | 964 | VideoPortGetMdl( | 
 
 
 
 
 | 965 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 966 | /*IN*/ PDMA  pDma); | 
 
 
 
 
 | 967 |  | 
 
 
 
 
 | 968 | VPAPI | 
 
 
 
 
 | 969 | VP_STATUS | 
 
 
 
 
 | 970 | DDKAPI | 
 
 
 
 
 | 971 | VideoPortGetRegistryParameters( | 
 
 
 
 
 | 972 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 973 | /*IN*/ PWSTR  ParameterName, | 
 
 
 
 
 | 974 | /*IN*/ UCHAR  IsParameterFileName, | 
 
 
 
 
 | 975 | /*IN*/ PMINIPORT_GET_REGISTRY_ROUTINE  CallbackRoutine, | 
 
 
 
 
 | 976 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 977 |  | 
 
 
 
 
 | 978 | VPAPI | 
 
 
 
 
 | 979 | PVOID | 
 
 
 
 
 | 980 | DDKAPI | 
 
 
 
 
 | 981 | VideoPortGetRomImage( | 
 
 
 
 
 | 982 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 983 | /*IN*/ PVOID  Unused1, | 
 
 
 
 
 | 984 | /*IN*/ ULONG  Unused2, | 
 
 
 
 
 | 985 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 986 |  | 
 
 
 
 
 | 987 | VPAPI | 
 
 
 
 
 | 988 | VP_STATUS | 
 
 
 
 
 | 989 | DDKAPI | 
 
 
 
 
 | 990 | VideoPortGetVersion( | 
 
 
 
 
 | 991 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 992 | /*IN OUT*/ PVPOSVERSIONINFO  pVpOsVersionInfo); | 
 
 
 
 
 | 993 |  | 
 
 
 
 
 | 994 | VPAPI | 
 
 
 
 
 | 995 | VP_STATUS | 
 
 
 
 
 | 996 | DDKAPI | 
 
 
 
 
 | 997 | VideoPortGetVgaStatus( | 
 
 
 
 
 | 998 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 999 | /*OUT*/ PULONG  VgaStatus); | 
 
 
 
 
 | 1000 |  | 
 
 
 
 
 | 1001 | VPAPI | 
 
 
 
 
 | 1002 | ULONG | 
 
 
 
 
 | 1003 | DDKAPI | 
 
 
 
 
 | 1004 | VideoPortInitialize( | 
 
 
 
 
 | 1005 | /*IN*/ PVOID  Argument1, | 
 
 
 
 
 | 1006 | /*IN*/ PVOID  Argument2, | 
 
 
 
 
 | 1007 | /*IN*/ PVIDEO_HW_INITIALIZATION_DATA  HwInitializationData, | 
 
 
 
 
 | 1008 | /*IN*/ PVOID  HwContext); | 
 
 
 
 
 | 1009 |  | 
 
 
 
 
 | 1010 | VPAPI | 
 
 
 
 
 | 1011 | VP_STATUS | 
 
 
 
 
 | 1012 | DDKAPI | 
 
 
 
 
 | 1013 | VideoPortInt10( | 
 
 
 
 
 | 1014 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1015 | /*IN*/ PVIDEO_X86_BIOS_ARGUMENTS  BiosArguments); | 
 
 
 
 
 | 1016 |  | 
 
 
 
 
 | 1017 | VPAPI | 
 
 
 
 
 | 1018 | LONG | 
 
 
 
 
 | 1019 | DDKFASTAPI | 
 
 
 
 
 | 1020 | VideoPortInterlockedDecrement( | 
 
 
 
 
 | 1021 | /*IN*/ PLONG  Addend); | 
 
 
 
 
 | 1022 |  | 
 
 
 
 
 | 1023 | VPAPI | 
 
 
 
 
 | 1024 | LONG | 
 
 
 
 
 | 1025 | DDKFASTAPI | 
 
 
 
 
 | 1026 | VideoPortInterlockedExchange( | 
 
 
 
 
 | 1027 | /*IN OUT*/ PLONG  Target, | 
 
 
 
 
 | 1028 | /*IN*/ LONG  Value); | 
 
 
 
 
 | 1029 |  | 
 
 
 
 
 | 1030 | VPAPI | 
 
 
 
 
 | 1031 | LONG | 
 
 
 
 
 | 1032 | DDKFASTAPI | 
 
 
 
 
 | 1033 | VideoPortInterlockedIncrement( | 
 
 
 
 
 | 1034 | /*IN*/ PLONG  Addend); | 
 
 
 
 
 | 1035 |  | 
 
 
 
 
 | 1036 | typedef enum _VP_LOCK_OPERATION { | 
 
 
 
 
 | 1037 | VpReadAccess = 0, | 
 
 
 
 
 | 1038 | VpWriteAccess, | 
 
 
 
 
 | 1039 | VpModifyAccess | 
 
 
 
 
 | 1040 | } VP_LOCK_OPERATION; | 
 
 
 
 
 | 1041 |  | 
 
 
 
 
 | 1042 | VPAPI | 
 
 
 
 
 | 1043 | PVOID | 
 
 
 
 
 | 1044 | DDKAPI | 
 
 
 
 
 | 1045 | VideoPortLockBuffer( | 
 
 
 
 
 | 1046 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1047 | /*IN*/ PVOID  BaseAddress, | 
 
 
 
 
 | 1048 | /*IN*/ ULONG  Length, | 
 
 
 
 
 | 1049 | /*IN*/ VP_LOCK_OPERATION  Operation); | 
 
 
 
 
 | 1050 |  | 
 
 
 
 
 | 1051 | VPAPI | 
 
 
 
 
 | 1052 | BOOLEAN | 
 
 
 
 
 | 1053 | DDKAPI | 
 
 
 
 
 | 1054 | VideoPortLockPages( | 
 
 
 
 
 | 1055 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1056 | /*IN OUT*/ PVIDEO_REQUEST_PACKET  pVrp, | 
 
 
 
 
 | 1057 | /*IN OUT*/ PEVENT  pUEvent, | 
 
 
 
 
 | 1058 | /*IN*/ PEVENT  pDisplayEvent, | 
 
 
 
 
 | 1059 | /*IN*/ DMA_FLAGS  DmaFlags); | 
 
 
 
 
 | 1060 |  | 
 
 
 
 
 | 1061 | VPAPI | 
 
 
 
 
 | 1062 | VOID | 
 
 
 
 
 | 1063 | DDKAPI | 
 
 
 
 
 | 1064 | VideoPortLogError( | 
 
 
 
 
 | 1065 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1066 | /*IN*/ PVIDEO_REQUEST_PACKET  Vrp  /*OPTIONAL*/, | 
 
 
 
 
 | 1067 | /*IN*/ VP_STATUS  ErrorCode, | 
 
 
 
 
 | 1068 | /*IN*/ ULONG  UniqueId); | 
 
 
 
 
 | 1069 |  | 
 
 
 
 
 | 1070 | VPAPI | 
 
 
 
 
 | 1071 | VP_STATUS | 
 
 
 
 
 | 1072 | DDKAPI | 
 
 
 
 
 | 1073 | VideoPortMapBankedMemory( | 
 
 
 
 
 | 1074 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1075 | /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress, | 
 
 
 
 
 | 1076 | /*IN OUT*/ PULONG  Length, | 
 
 
 
 
 | 1077 | PULONG  InIoSpace, | 
 
 
 
 
 | 1078 | PVOID  *VirtualAddress, | 
 
 
 
 
 | 1079 | ULONG  BankLength, | 
 
 
 
 
 | 1080 | UCHAR  ReadWriteBank, | 
 
 
 
 
 | 1081 | PBANKED_SECTION_ROUTINE  BankRoutine, | 
 
 
 
 
 | 1082 | PVOID  Context); | 
 
 
 
 
 | 1083 |  | 
 
 
 
 
 | 1084 | VPAPI | 
 
 
 
 
 | 1085 | PDMA | 
 
 
 
 
 | 1086 | DDKAPI | 
 
 
 
 
 | 1087 | VideoPortMapDmaMemory( | 
 
 
 
 
 | 1088 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1089 | /*IN*/ PVIDEO_REQUEST_PACKET  pVrp, | 
 
 
 
 
 | 1090 | /*IN*/ PHYSICAL_ADDRESS  BoardAddress, | 
 
 
 
 
 | 1091 | /*IN*/ PULONG  Length, | 
 
 
 
 
 | 1092 | /*IN*/ PULONG  InIoSpace, | 
 
 
 
 
 | 1093 | /*IN*/ PVOID  MappedUserEvent, | 
 
 
 
 
 | 1094 | /*IN*/ PVOID  DisplayDriverEvent, | 
 
 
 
 
 | 1095 | /*IN OUT*/ PVOID  *VirtualAddress); | 
 
 
 
 
 | 1096 |  | 
 
 
 
 
 | 1097 | VPAPI | 
 
 
 
 
 | 1098 | VP_STATUS | 
 
 
 
 
 | 1099 | DDKAPI | 
 
 
 
 
 | 1100 | VideoPortMapMemory( | 
 
 
 
 
 | 1101 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1102 | /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress, | 
 
 
 
 
 | 1103 | /*IN OUT*/ PULONG  Length, | 
 
 
 
 
 | 1104 | /*IN*/ PULONG  InIoSpace, | 
 
 
 
 
 | 1105 | /*IN OUT*/ PVOID  *VirtualAddress); | 
 
 
 
 
 | 1106 |  | 
 
 
 
 
 | 1107 | VPAPI | 
 
 
 
 
 | 1108 | VOID | 
 
 
 
 
 | 1109 | DDKAPI | 
 
 
 
 
 | 1110 | VideoPortMoveMemory( | 
 
 
 
 
 | 1111 | /*IN*/ PVOID  Destination, | 
 
 
 
 
 | 1112 | /*IN*/ PVOID  Source, | 
 
 
 
 
 | 1113 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 1114 |  | 
 
 
 
 
 | 1115 | VPAPI | 
 
 
 
 
 | 1116 | VOID | 
 
 
 
 
 | 1117 | DDKAPI | 
 
 
 
 
 | 1118 | VideoPortPutDmaAdapter( | 
 
 
 
 
 | 1119 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1120 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter); | 
 
 
 
 
 | 1121 |  | 
 
 
 
 
 | 1122 | VPAPI | 
 
 
 
 
 | 1123 | LONGLONG | 
 
 
 
 
 | 1124 | DDKAPI | 
 
 
 
 
 | 1125 | VideoPortQueryPerformanceCounter( | 
 
 
 
 
 | 1126 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1127 | /*OUT*/ PLONGLONG  PerformanceFrequency  /*OPTIONAL*/); | 
 
 
 
 
 | 1128 |  | 
 
 
 
 
 | 1129 | /* VideoPortQueryServices.ServicesType constants */ | 
 
 
 
 
 | 1130 | typedef enum _VIDEO_PORT_SERVICES { | 
 
 
 
 
 | 1131 | VideoPortServicesAGP = 1, | 
 
 
 
 
 | 1132 | VideoPortServicesI2C, | 
 
 
 
 
 | 1133 | VideoPortServicesHeadless, | 
 
 
 
 
 | 1134 | VideoPortServicesInt10 | 
 
 
 
 
 | 1135 | } VIDEO_PORT_SERVICES; | 
 
 
 
 
 | 1136 |  | 
 
 
 
 
 | 1137 | VPAPI | 
 
 
 
 
 | 1138 | VP_STATUS | 
 
 
 
 
 | 1139 | DDKAPI | 
 
 
 
 
 | 1140 | VideoPortQueryServices( | 
 
 
 
 
 | 1141 | /*IN*/ PVOID HwDeviceExtension, | 
 
 
 
 
 | 1142 | /*IN*/ VIDEO_PORT_SERVICES ServicesType, | 
 
 
 
 
 | 1143 | /*IN OUT*/ PINTERFACE Interface); | 
 
 
 
 
 | 1144 |  | 
 
 
 
 
 | 1145 | VPAPI | 
 
 
 
 
 | 1146 | VOID | 
 
 
 
 
 | 1147 | DDKAPI | 
 
 
 
 
 | 1148 | VideoPortQuerySystemTime( | 
 
 
 
 
 | 1149 | /*OUT*/ PLARGE_INTEGER  CurrentTime); | 
 
 
 
 
 | 1150 |  | 
 
 
 
 
 | 1151 | VPAPI | 
 
 
 
 
 | 1152 | BOOLEAN | 
 
 
 
 
 | 1153 | DDKAPI | 
 
 
 
 
 | 1154 | VideoPortQueueDpc( | 
 
 
 
 
 | 1155 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1156 | /*IN*/ PMINIPORT_DPC_ROUTINE  CallbackRoutine, | 
 
 
 
 
 | 1157 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 1158 |  | 
 
 
 
 
 | 1159 | VPAPI | 
 
 
 
 
 | 1160 | VOID | 
 
 
 
 
 | 1161 | DDKAPI | 
 
 
 
 
 | 1162 | VideoPortReadPortBufferUchar( | 
 
 
 
 
 | 1163 | /*IN*/ PUCHAR  Port, | 
 
 
 
 
 | 1164 | /*OUT*/ PUCHAR  Buffer, | 
 
 
 
 
 | 1165 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1166 |  | 
 
 
 
 
 | 1167 | VPAPI | 
 
 
 
 
 | 1168 | VOID | 
 
 
 
 
 | 1169 | DDKAPI | 
 
 
 
 
 | 1170 | VideoPortReadPortBufferUlong( | 
 
 
 
 
 | 1171 | /*IN*/ PULONG  Port, | 
 
 
 
 
 | 1172 | /*OUT*/ PULONG  Buffer, | 
 
 
 
 
 | 1173 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1174 |  | 
 
 
 
 
 | 1175 | VPAPI | 
 
 
 
 
 | 1176 | VOID | 
 
 
 
 
 | 1177 | DDKAPI | 
 
 
 
 
 | 1178 | VideoPortReadPortBufferUshort( | 
 
 
 
 
 | 1179 | /*IN*/ PUSHORT  Port, | 
 
 
 
 
 | 1180 | /*OUT*/ PUSHORT  Buffer, | 
 
 
 
 
 | 1181 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1182 |  | 
 
 
 
 
 | 1183 | VPAPI | 
 
 
 
 
 | 1184 | UCHAR | 
 
 
 
 
 | 1185 | DDKAPI | 
 
 
 
 
 | 1186 | VideoPortReadPortUchar( | 
 
 
 
 
 | 1187 | /*IN*/ PUCHAR  Port); | 
 
 
 
 
 | 1188 |  | 
 
 
 
 
 | 1189 | VPAPI | 
 
 
 
 
 | 1190 | ULONG | 
 
 
 
 
 | 1191 | DDKAPI | 
 
 
 
 
 | 1192 | VideoPortReadPortUlong( | 
 
 
 
 
 | 1193 | /*IN*/ PULONG  Port); | 
 
 
 
 
 | 1194 |  | 
 
 
 
 
 | 1195 | VPAPI | 
 
 
 
 
 | 1196 | USHORT | 
 
 
 
 
 | 1197 | DDKAPI | 
 
 
 
 
 | 1198 | VideoPortReadPortUshort( | 
 
 
 
 
 | 1199 | /*IN*/ PUSHORT  Port); | 
 
 
 
 
 | 1200 |  | 
 
 
 
 
 | 1201 | VPAPI | 
 
 
 
 
 | 1202 | VOID | 
 
 
 
 
 | 1203 | DDKAPI | 
 
 
 
 
 | 1204 | VideoPortReadRegisterBufferUchar( | 
 
 
 
 
 | 1205 | /*IN*/ PUCHAR  Register, | 
 
 
 
 
 | 1206 | /*OUT*/ PUCHAR  Buffer, | 
 
 
 
 
 | 1207 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1208 |  | 
 
 
 
 
 | 1209 | VPAPI | 
 
 
 
 
 | 1210 | VOID | 
 
 
 
 
 | 1211 | DDKAPI | 
 
 
 
 
 | 1212 | VideoPortReadRegisterBufferUlong( | 
 
 
 
 
 | 1213 | /*IN*/ PULONG  Register, | 
 
 
 
 
 | 1214 | /*OUT*/ PULONG  Buffer, | 
 
 
 
 
 | 1215 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1216 |  | 
 
 
 
 
 | 1217 | VPAPI | 
 
 
 
 
 | 1218 | VOID | 
 
 
 
 
 | 1219 | DDKAPI | 
 
 
 
 
 | 1220 | VideoPortReadRegisterBufferUshort( | 
 
 
 
 
 | 1221 | /*IN*/ PUSHORT  Register, | 
 
 
 
 
 | 1222 | /*OUT*/ PUSHORT  Buffer, | 
 
 
 
 
 | 1223 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1224 |  | 
 
 
 
 
 | 1225 | VPAPI | 
 
 
 
 
 | 1226 | UCHAR | 
 
 
 
 
 | 1227 | DDKAPI | 
 
 
 
 
 | 1228 | VideoPortReadRegisterUchar( | 
 
 
 
 
 | 1229 | /*IN*/ PUCHAR  Register); | 
 
 
 
 
 | 1230 |  | 
 
 
 
 
 | 1231 | VPAPI | 
 
 
 
 
 | 1232 | ULONG | 
 
 
 
 
 | 1233 | DDKAPI | 
 
 
 
 
 | 1234 | VideoPortReadRegisterUlong( | 
 
 
 
 
 | 1235 | /*IN*/ PULONG  Register); | 
 
 
 
 
 | 1236 |  | 
 
 
 
 
 | 1237 | VPAPI | 
 
 
 
 
 | 1238 | USHORT | 
 
 
 
 
 | 1239 | DDKAPI | 
 
 
 
 
 | 1240 | VideoPortReadRegisterUshort( | 
 
 
 
 
 | 1241 | /*IN*/ PUSHORT  Register); | 
 
 
 
 
 | 1242 |  | 
 
 
 
 
 | 1243 | VPAPI | 
 
 
 
 
 | 1244 | LONG | 
 
 
 
 
 | 1245 | DDKAPI | 
 
 
 
 
 | 1246 | VideoPortReadStateEvent( | 
 
 
 
 
 | 1247 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1248 | /*IN*/ PEVENT  pEvent); | 
 
 
 
 
 | 1249 |  | 
 
 
 
 
 | 1250 | VPAPI | 
 
 
 
 
 | 1251 | VOID | 
 
 
 
 
 | 1252 | DDKAPI | 
 
 
 
 
 | 1253 | VideoPortReleaseBuffer( | 
 
 
 
 
 | 1254 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1255 | /*IN*/ PVOID  Buffer); | 
 
 
 
 
 | 1256 |  | 
 
 
 
 
 | 1257 | VPAPI | 
 
 
 
 
 | 1258 | VOID | 
 
 
 
 
 | 1259 | DDKAPI | 
 
 
 
 
 | 1260 | VideoPortReleaseCommonBuffer( | 
 
 
 
 
 | 1261 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1262 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter, | 
 
 
 
 
 | 1263 | /*IN*/ ULONG  Length, | 
 
 
 
 
 | 1264 | /*IN*/ PHYSICAL_ADDRESS  LogicalAddress, | 
 
 
 
 
 | 1265 | /*IN*/ PVOID  VirtualAddress, | 
 
 
 
 
 | 1266 | /*IN*/ BOOLEAN  CacheEnabled); | 
 
 
 
 
 | 1267 |  | 
 
 
 
 
 | 1268 | VPAPI | 
 
 
 
 
 | 1269 | VOID | 
 
 
 
 
 | 1270 | DDKAPI | 
 
 
 
 
 | 1271 | VideoPortReleaseDeviceLock( | 
 
 
 
 
 | 1272 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 1273 |  | 
 
 
 
 
 | 1274 | VPAPI | 
 
 
 
 
 | 1275 | VOID | 
 
 
 
 
 | 1276 | DDKAPI | 
 
 
 
 
 | 1277 | VideoPortReleaseSpinLock( | 
 
 
 
 
 | 1278 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1279 | /*IN*/ PSPIN_LOCK  SpinLock, | 
 
 
 
 
 | 1280 | /*IN*/ UCHAR  NewIrql); | 
 
 
 
 
 | 1281 |  | 
 
 
 
 
 | 1282 | VPAPI | 
 
 
 
 
 | 1283 | VOID | 
 
 
 
 
 | 1284 | DDKAPI | 
 
 
 
 
 | 1285 | VideoPortReleaseSpinLockFromDpcLevel( | 
 
 
 
 
 | 1286 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1287 | /*IN*/ PSPIN_LOCK  SpinLock); | 
 
 
 
 
 | 1288 |  | 
 
 
 
 
 | 1289 | VPAPI | 
 
 
 
 
 | 1290 | BOOLEAN | 
 
 
 
 
 | 1291 | DDKAPI | 
 
 
 
 
 | 1292 | VideoPortScanRom( | 
 
 
 
 
 | 1293 | PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1294 | PUCHAR  RomBase, | 
 
 
 
 
 | 1295 | ULONG  RomLength, | 
 
 
 
 
 | 1296 | PUCHAR  String); | 
 
 
 
 
 | 1297 |  | 
 
 
 
 
 | 1298 | VPAPI | 
 
 
 
 
 | 1299 | ULONG | 
 
 
 
 
 | 1300 | DDKAPI | 
 
 
 
 
 | 1301 | VideoPortSetBusData( | 
 
 
 
 
 | 1302 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1303 | /*IN*/ BUS_DATA_TYPE  BusDataType, | 
 
 
 
 
 | 1304 | /*IN*/ ULONG  SlotNumber, | 
 
 
 
 
 | 1305 | /*IN*/ PVOID  Buffer, | 
 
 
 
 
 | 1306 | /*IN*/ ULONG  Offset, | 
 
 
 
 
 | 1307 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 1308 |  | 
 
 
 
 
 | 1309 | VPAPI | 
 
 
 
 
 | 1310 | VOID | 
 
 
 
 
 | 1311 | DDKAPI | 
 
 
 
 
 | 1312 | VideoPortSetBytesUsed( | 
 
 
 
 
 | 1313 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1314 | /*IN OUT*/ PDMA  pDma, | 
 
 
 
 
 | 1315 | /*IN*/ ULONG  BytesUsed); | 
 
 
 
 
 | 1316 |  | 
 
 
 
 
 | 1317 | VPAPI | 
 
 
 
 
 | 1318 | VOID | 
 
 
 
 
 | 1319 | DDKAPI | 
 
 
 
 
 | 1320 | VideoPortSetDmaContext( | 
 
 
 
 
 | 1321 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1322 | /*OUT*/ PDMA  pDma, | 
 
 
 
 
 | 1323 | /*IN*/ PVOID  InstanceContext); | 
 
 
 
 
 | 1324 |  | 
 
 
 
 
 | 1325 | VPAPI | 
 
 
 
 
 | 1326 | LONG | 
 
 
 
 
 | 1327 | DDKAPI | 
 
 
 
 
 | 1328 | VideoPortSetEvent( | 
 
 
 
 
 | 1329 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1330 | /*IN*/ PEVENT  pEvent); | 
 
 
 
 
 | 1331 |  | 
 
 
 
 
 | 1332 | VPAPI | 
 
 
 
 
 | 1333 | VP_STATUS | 
 
 
 
 
 | 1334 | DDKAPI | 
 
 
 
 
 | 1335 | VideoPortSetRegistryParameters( | 
 
 
 
 
 | 1336 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1337 | /*IN*/ PWSTR  ValueName, | 
 
 
 
 
 | 1338 | /*IN*/ PVOID  ValueData, | 
 
 
 
 
 | 1339 | /*IN*/ ULONG  ValueLength); | 
 
 
 
 
 | 1340 |  | 
 
 
 
 
 | 1341 | VPAPI | 
 
 
 
 
 | 1342 | VP_STATUS | 
 
 
 
 
 | 1343 | DDKAPI | 
 
 
 
 
 | 1344 | VideoPortSetTrappedEmulatorPorts( | 
 
 
 
 
 | 1345 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1346 | /*IN*/ ULONG  NumAccessRanges, | 
 
 
 
 
 | 1347 | /*IN*/ PVIDEO_ACCESS_RANGE  AccessRange); | 
 
 
 
 
 | 1348 |  | 
 
 
 
 
 | 1349 | VPAPI | 
 
 
 
 
 | 1350 | BOOLEAN | 
 
 
 
 
 | 1351 | DDKAPI | 
 
 
 
 
 | 1352 | VideoPortSignalDmaComplete( | 
 
 
 
 
 | 1353 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1354 | /*IN*/ PVOID  pDmaHandle); | 
 
 
 
 
 | 1355 |  | 
 
 
 
 
 | 1356 | VPAPI | 
 
 
 
 
 | 1357 | VOID | 
 
 
 
 
 | 1358 | DDKAPI | 
 
 
 
 
 | 1359 | VideoPortStallExecution( | 
 
 
 
 
 | 1360 | /*IN*/ ULONG  Microseconds); | 
 
 
 
 
 | 1361 |  | 
 
 
 
 
 | 1362 | VPAPI | 
 
 
 
 
 | 1363 | VP_STATUS | 
 
 
 
 
 | 1364 | DDKAPI | 
 
 
 
 
 | 1365 | VideoPortStartDma( | 
 
 
 
 
 | 1366 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1367 | /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter, | 
 
 
 
 
 | 1368 | /*IN*/ PVOID  Mdl, | 
 
 
 
 
 | 1369 | /*IN*/ ULONG  Offset, | 
 
 
 
 
 | 1370 | /*IN OUT*/ PULONG  pLength, | 
 
 
 
 
 | 1371 | /*IN*/ PEXECUTE_DMA  ExecuteDmaRoutine, | 
 
 
 
 
 | 1372 | /*IN*/ PVOID  Context, | 
 
 
 
 
 | 1373 | /*IN*/ BOOLEAN  WriteToDevice); | 
 
 
 
 
 | 1374 |  | 
 
 
 
 
 | 1375 | VPAPI | 
 
 
 
 
 | 1376 | VOID | 
 
 
 
 
 | 1377 | DDKAPI | 
 
 
 
 
 | 1378 | VideoPortStartTimer( | 
 
 
 
 
 | 1379 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 1380 |  | 
 
 
 
 
 | 1381 | VPAPI | 
 
 
 
 
 | 1382 | VOID | 
 
 
 
 
 | 1383 | DDKAPI | 
 
 
 
 
 | 1384 | VideoPortStopTimer( | 
 
 
 
 
 | 1385 | /*IN*/ PVOID  HwDeviceExtension); | 
 
 
 
 
 | 1386 |  | 
 
 
 
 
 | 1387 | /* VideoPortSynchronizeExecution.Priority constants */ | 
 
 
 
 
 | 1388 | typedef enum VIDEO_SYNCHRONIZE_PRIORITY { | 
 
 
 
 
 | 1389 | VpLowPriority = 0, | 
 
 
 
 
 | 1390 | VpMediumPriority, | 
 
 
 
 
 | 1391 | VpHighPriority | 
 
 
 
 
 | 1392 | } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; | 
 
 
 
 
 | 1393 |  | 
 
 
 
 
 | 1394 | VPAPI | 
 
 
 
 
 | 1395 | BOOLEAN | 
 
 
 
 
 | 1396 | DDKAPI | 
 
 
 
 
 | 1397 | VideoPortSynchronizeExecution( | 
 
 
 
 
 | 1398 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1399 | /*IN*/ VIDEO_SYNCHRONIZE_PRIORITY  Priority, | 
 
 
 
 
 | 1400 | /*IN*/ PMINIPORT_SYNCHRONIZE_ROUTINE  SynchronizeRoutine, | 
 
 
 
 
 | 1401 | /*IN*/ PVOID  Context); | 
 
 
 
 
 | 1402 |  | 
 
 
 
 
 | 1403 | VPAPI | 
 
 
 
 
 | 1404 | VOID | 
 
 
 
 
 | 1405 | DDKAPI | 
 
 
 
 
 | 1406 | VideoPortUnLockBuffer( | 
 
 
 
 
 | 1407 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1408 | /*IN*/ PVOID  Mdl); | 
 
 
 
 
 | 1409 |  | 
 
 
 
 
 | 1410 | VPAPI | 
 
 
 
 
 | 1411 | BOOLEAN | 
 
 
 
 
 | 1412 | DDKAPI | 
 
 
 
 
 | 1413 | VideoPortUnlockPages( | 
 
 
 
 
 | 1414 | /*IN*/ PVOID  hwDeviceExtension, | 
 
 
 
 
 | 1415 | /*IN OUT*/ PDMA  pDma); | 
 
 
 
 
 | 1416 |  | 
 
 
 
 
 | 1417 | VPAPI | 
 
 
 
 
 | 1418 | BOOLEAN | 
 
 
 
 
 | 1419 | DDKAPI | 
 
 
 
 
 | 1420 | VideoPortUnmapDmaMemory( | 
 
 
 
 
 | 1421 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1422 | /*IN*/ PVOID  VirtualAddress, | 
 
 
 
 
 | 1423 | /*IN*/ HANDLE  ProcessHandle, | 
 
 
 
 
 | 1424 | /*IN*/ PDMA  BoardMemoryHandle); | 
 
 
 
 
 | 1425 |  | 
 
 
 
 
 | 1426 | VPAPI | 
 
 
 
 
 | 1427 | VP_STATUS | 
 
 
 
 
 | 1428 | DDKAPI | 
 
 
 
 
 | 1429 | VideoPortUnmapMemory( | 
 
 
 
 
 | 1430 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1431 | /*IN OUT*/ PVOID  VirtualAddress, | 
 
 
 
 
 | 1432 | /*IN*/ HANDLE  ProcessHandle); | 
 
 
 
 
 | 1433 |  | 
 
 
 
 
 | 1434 | VPAPI | 
 
 
 
 
 | 1435 | VP_STATUS | 
 
 
 
 
 | 1436 | DDKAPI | 
 
 
 
 
 | 1437 | VideoPortVerifyAccessRanges( | 
 
 
 
 
 | 1438 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1439 | /*IN*/ ULONG  NumAccessRanges, | 
 
 
 
 
 | 1440 | /*IN*/ PVIDEO_ACCESS_RANGE  AccessRanges); | 
 
 
 
 
 | 1441 |  | 
 
 
 
 
 | 1442 | VPAPI | 
 
 
 
 
 | 1443 | VP_STATUS | 
 
 
 
 
 | 1444 | DDKAPI | 
 
 
 
 
 | 1445 | VideoPortWaitForSingleObject( | 
 
 
 
 
 | 1446 | /*IN*/ PVOID  HwDeviceExtension, | 
 
 
 
 
 | 1447 | /*IN*/ PVOID  Object, | 
 
 
 
 
 | 1448 | /*IN*/ PLARGE_INTEGER  Timeout /*OPTIONAL*/); | 
 
 
 
 
 | 1449 |  | 
 
 
 
 
 | 1450 | VPAPI | 
 
 
 
 
 | 1451 | VOID | 
 
 
 
 
 | 1452 | DDKAPI | 
 
 
 
 
 | 1453 | VideoPortWritePortBufferUchar( | 
 
 
 
 
 | 1454 | /*IN*/ PUCHAR  Port, | 
 
 
 
 
 | 1455 | /*IN*/ PUCHAR  Buffer, | 
 
 
 
 
 | 1456 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1457 |  | 
 
 
 
 
 | 1458 | VPAPI | 
 
 
 
 
 | 1459 | VOID | 
 
 
 
 
 | 1460 | DDKAPI | 
 
 
 
 
 | 1461 | VideoPortWritePortBufferUlong( | 
 
 
 
 
 | 1462 | /*IN*/ PULONG  Port, | 
 
 
 
 
 | 1463 | /*IN*/ PULONG  Buffer, | 
 
 
 
 
 | 1464 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1465 |  | 
 
 
 
 
 | 1466 | VPAPI | 
 
 
 
 
 | 1467 | VOID | 
 
 
 
 
 | 1468 | DDKAPI | 
 
 
 
 
 | 1469 | VideoPortWritePortBufferUshort( | 
 
 
 
 
 | 1470 | /*IN*/ PUSHORT  Port, | 
 
 
 
 
 | 1471 | /*IN*/ PUSHORT  Buffer, | 
 
 
 
 
 | 1472 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1473 |  | 
 
 
 
 
 | 1474 | VPAPI | 
 
 
 
 
 | 1475 | VOID | 
 
 
 
 
 | 1476 | DDKAPI | 
 
 
 
 
 | 1477 | VideoPortWritePortUchar( | 
 
 
 
 
 | 1478 | /*IN*/ PUCHAR  Port, | 
 
 
 
 
 | 1479 | /*IN*/ UCHAR  Value); | 
 
 
 
 
 | 1480 |  | 
 
 
 
 
 | 1481 | VPAPI | 
 
 
 
 
 | 1482 | VOID | 
 
 
 
 
 | 1483 | DDKAPI | 
 
 
 
 
 | 1484 | VideoPortWritePortUlong( | 
 
 
 
 
 | 1485 | /*IN*/ PULONG  Port, | 
 
 
 
 
 | 1486 | /*IN*/ ULONG  Value); | 
 
 
 
 
 | 1487 |  | 
 
 
 
 
 | 1488 | VPAPI | 
 
 
 
 
 | 1489 | VOID | 
 
 
 
 
 | 1490 | DDKAPI | 
 
 
 
 
 | 1491 | VideoPortWritePortUshort( | 
 
 
 
 
 | 1492 | /*IN*/ PUSHORT  Port, | 
 
 
 
 
 | 1493 | /*IN*/ USHORT  Value); | 
 
 
 
 
 | 1494 |  | 
 
 
 
 
 | 1495 | VPAPI | 
 
 
 
 
 | 1496 | VOID | 
 
 
 
 
 | 1497 | DDKAPI | 
 
 
 
 
 | 1498 | VideoPortWriteRegisterBufferUchar( | 
 
 
 
 
 | 1499 | /*IN*/ PUCHAR  Register, | 
 
 
 
 
 | 1500 | /*IN*/ PUCHAR  Buffer, | 
 
 
 
 
 | 1501 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1502 |  | 
 
 
 
 
 | 1503 | VPAPI | 
 
 
 
 
 | 1504 | VOID | 
 
 
 
 
 | 1505 | DDKAPI | 
 
 
 
 
 | 1506 | VideoPortWriteRegisterBufferUlong( | 
 
 
 
 
 | 1507 | /*IN*/ PULONG  Register, | 
 
 
 
 
 | 1508 | /*IN*/ PULONG  Buffer, | 
 
 
 
 
 | 1509 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1510 |  | 
 
 
 
 
 | 1511 | VPAPI | 
 
 
 
 
 | 1512 | VOID | 
 
 
 
 
 | 1513 | DDKAPI | 
 
 
 
 
 | 1514 | VideoPortWriteRegisterBufferUshort( | 
 
 
 
 
 | 1515 | /*IN*/ PUSHORT  Register, | 
 
 
 
 
 | 1516 | /*IN*/ PUSHORT  Buffer, | 
 
 
 
 
 | 1517 | /*IN*/ ULONG  Count); | 
 
 
 
 
 | 1518 |  | 
 
 
 
 
 | 1519 | VPAPI | 
 
 
 
 
 | 1520 | VOID | 
 
 
 
 
 | 1521 | DDKAPI | 
 
 
 
 
 | 1522 | VideoPortWriteRegisterUchar( | 
 
 
 
 
 | 1523 | /*IN*/ PUCHAR  Register, | 
 
 
 
 
 | 1524 | /*IN*/ UCHAR  Value); | 
 
 
 
 
 | 1525 |  | 
 
 
 
 
 | 1526 | VPAPI | 
 
 
 
 
 | 1527 | VOID | 
 
 
 
 
 | 1528 | DDKAPI | 
 
 
 
 
 | 1529 | VideoPortWriteRegisterUlong( | 
 
 
 
 
 | 1530 | /*IN*/ PULONG  Register, | 
 
 
 
 
 | 1531 | /*IN*/ ULONG  Value); | 
 
 
 
 
 | 1532 |  | 
 
 
 
 
 | 1533 | VPAPI | 
 
 
 
 
 | 1534 | VOID | 
 
 
 
 
 | 1535 | DDKAPI | 
 
 
 
 
 | 1536 | VideoPortWriteRegisterUshort( | 
 
 
 
 
 | 1537 | /*IN*/ PUSHORT  Register, | 
 
 
 
 
 | 1538 | /*IN*/ USHORT  Value); | 
 
 
 
 
 | 1539 |  | 
 
 
 
 
 | 1540 | VPAPI | 
 
 
 
 
 | 1541 | VOID | 
 
 
 
 
 | 1542 | DDKAPI | 
 
 
 
 
 | 1543 | VideoPortZeroDeviceMemory( | 
 
 
 
 
 | 1544 | /*IN*/ PVOID  Destination, | 
 
 
 
 
 | 1545 | /*IN*/ ULONG  Length); | 
 
 
 
 
 | 1546 |  | 
 
 
 
 
 | 1547 | VPAPI | 
 
 
 
 
 | 1548 | VOID | 
 
 
 
 
 | 1549 | DDKAPI | 
 
 
 
 
 | 1550 | VideoPortZeroMemory( | 
 
 
 
 
 | 1551 | /*IN*/ PVOID  Destination, | 
 
 
 
 
 | 1552 | /*2IN*/ ULONG  Length); | 
 
 
 
 
 | 1553 |  | 
 
 
 
 
 | 1554 | #ifdef DBG | 
 
 
 
 
 | 1555 | #define VideoDebugPrint(x) VideoPortDebugPrint x | 
 
 
 
 
 | 1556 | #else | 
 
 
 
 
 | 1557 | #define VideoDebugPrint(x) | 
 
 
 
 
 | 1558 | #endif | 
 
 
 
 
 | 1559 |  | 
 
 
 
 
 | 1560 | #ifdef __cplusplus | 
 
 
 
 
 | 1561 | } | 
 
 
 
 
 | 1562 | #endif | 
 
 
 
 
 | 1563 |  | 
 
 
 
 
 | 1564 | #endif /* defined __WINDDI_H */ | 
 
 
 
 
 | 1565 |  | 
 
 
 
 
 | 1566 | #endif /* __VIDEO_H */ |