mingw-5.1.4/win32/include/ddk/video.h
changeset 0 76b1f169d9fe
equal deleted inserted replaced
-1:000000000000 0:76b1f169d9fe
       
     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 */