ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

video.h
Go to the documentation of this file.
00001 /*
00002  * video.h
00003  *
00004  * Video port and miniport driver interface
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #pragma once
00024 
00025 #define __VIDEO_H__
00026 
00027 #include "ntddvdeo.h"
00028 #include "videoagp.h"
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 #ifndef _NTOSDEF_
00035 
00036 #ifdef PAGED_CODE
00037 #undef PAGED_CODE
00038 #endif
00039 
00040 #if defined(_MSC_VER)
00041 #define ALLOC_PRAGMA 1
00042 #endif
00043 
00044 #if defined(_VIDEOPORT_)
00045 #define VPAPI
00046 #else
00047 #define VPAPI DECLSPEC_IMPORT
00048 #endif
00049 
00050 #if DBG
00051 #define PAGED_CODE() \
00052   if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) { \
00053     VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \
00054     ASSERT(FALSE); \
00055   }
00056 #else
00057 #define PAGED_CODE()
00058 #endif /* DBG */
00059 
00060 ULONG
00061 NTAPI
00062 DriverEntry(
00063   PVOID Context1,
00064   PVOID Context2);
00065 
00066 #else
00067 
00068 #define VPAPI
00069 
00070 #endif /* _NTOSDEF_ */
00071 
00072 #if DBG
00073 #define VideoDebugPrint(x) VideoPortDebugPrint x
00074 #else
00075 #define VideoDebugPrint(x)
00076 #endif
00077 
00078 #define GET_VIDEO_PHYSICAL_ADDRESS(scatterList,                        \
00079                                    VirtualAddress,                     \
00080                                    InputBuffer,                        \
00081                                    pLength,                            \
00082                                    Address)                            \
00083   do {                                                                 \
00084     ULONG_PTR byteOffset;                                              \
00085                                                                        \
00086     byteOffset = (PCHAR) VirtualAddress - (PCHAR)InputBuffer;          \
00087     while (byteOffset >= scatterList->Length) {                        \
00088       byteOffset -= scatterList->Length;                               \
00089       scatterList++;                                                   \
00090     }                                                                  \
00091     *pLength = scatterList->Length - byteOffset;                       \
00092     Address = (ULONG_PTR) (scatterList->PhysicalAddress + byteOffset); \
00093   } while (0)
00094 
00095 #define GET_VIDEO_SCATTERGATHER(ppDma) (**(PVRB_SG **)ppDma)
00096 
00097 /* VIDEO_ACCESS_RANGE.RangePassive */
00098 #define VIDEO_RANGE_PASSIVE_DECODE        1
00099 #define VIDEO_RANGE_10_BIT_DECODE         2
00100 
00101 #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO FIELD_OFFSET(VIDEO_PORT_CONFIG_INFO, Master)
00102 #define SIZE_OF_WXP_VIDEO_PORT_CONFIG_INFO sizeof(VIDEO_PORT_CONFIG_INFO)
00103 
00104 #define SET_USER_EVENT    0x01
00105 #define SET_DISPLAY_EVENT 0x02
00106 
00107 #define EVENT_TYPE_MASK                   1
00108 #define SYNCHRONIZATION_EVENT             0
00109 #define NOTIFICATION_EVENT                1
00110 
00111 #define INITIAL_EVENT_STATE_MASK          2
00112 #define INITIAL_EVENT_NOT_SIGNALED        0
00113 #define INITIAL_EVENT_SIGNALED            2
00114 
00115 #define DISPLAY_ADAPTER_HW_ID             0xFFFFFFFF
00116 
00117 #define VIDEO_INVALID_CHILD_ID            0xFFFFFFFF
00118 
00119 #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, HwStartDma)
00120 #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA FIELD_OFFSET(VIDEO_HW_INITIALIZATION_DATA, Reserved)
00121 #define SIZE_OF_WXP_VIDEO_HW_INITIALIZATION_DATA (SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA + sizeof(ULONG))
00122 
00123 #define VIDEO_PORT_AGP_INTERFACE_VERSION_1                 1
00124 #define VIDEO_PORT_AGP_INTERFACE_VERSION_2                 2
00125 #define VIDEO_PORT_I2C_INTERFACE_VERSION_1                 1
00126 #define VIDEO_PORT_I2C_INTERFACE_VERSION_2                 2
00127 #define VIDEO_PORT_INT10_INTERFACE_VERSION_1               1
00128 #define VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE_VERSION_1  1
00129 #define VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1        1
00130 
00131 /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */
00132 #define VIDEO_MEMORY_SPACE_MEMORY         0x00
00133 #define VIDEO_MEMORY_SPACE_IO             0x01
00134 #define VIDEO_MEMORY_SPACE_USER_MODE      0x02
00135 #define VIDEO_MEMORY_SPACE_DENSE          0x04
00136 #define VIDEO_MEMORY_SPACE_P6CACHE        0x08
00137 
00138 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */
00139 #define VIDEO_ENUM_MORE_DEVICES           ERROR_CONTINUE
00140 #define VIDEO_ENUM_NO_MORE_DEVICES        ERROR_NO_MORE_DEVICES
00141 #define VIDEO_ENUM_INVALID_DEVICE         ERROR_INVALID_NAME
00142 
00143 #define DEVICE_VGA_ENABLED                1
00144 
00145 /* VideoPortCheckForDeviceExistence.Flags constants */
00146 #define CDE_USE_SUBSYSTEM_IDS             0x00000001
00147 #define CDE_USE_REVISION                  0x00000002
00148 
00149 #define BUGCHECK_DATA_SIZE_RESERVED       48
00150 
00151 #define VIDEO_DEBUG_REPORT_MAX_SIZE       0x8000
00152 
00153 typedef LONG VP_STATUS, *PVP_STATUS;
00154 typedef ULONG DMA_EVENT_FLAGS;
00155 
00156 typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK;
00157 typedef struct _VIDEO_DEBUG_REPORT *PVIDEO_DEBUG_REPORT;
00158 typedef struct __DMA_PARAMETERS *PDMA;
00159 typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER;
00160 
00161 typedef PVOID
00162 (NTAPI *PVIDEO_PORT_GET_PROC_ADDRESS)(
00163   IN PVOID HwDeviceExtension,
00164   IN PUCHAR FunctionName);
00165 
00166 typedef struct _VIDEO_PORT_CONFIG_INFO {
00167   ULONG Length;
00168   ULONG SystemIoBusNumber;
00169   INTERFACE_TYPE AdapterInterfaceType;
00170   ULONG BusInterruptLevel;
00171   ULONG BusInterruptVector;
00172   KINTERRUPT_MODE InterruptMode;
00173   ULONG NumEmulatorAccessEntries;
00174   PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
00175   ULONG_PTR EmulatorAccessEntriesContext;
00176   PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
00177   ULONG VdmPhysicalVideoMemoryLength;
00178   ULONG HardwareStateSize;
00179   ULONG DmaChannel;
00180   ULONG DmaPort;
00181   UCHAR DmaShareable;
00182   UCHAR InterruptShareable;
00183   BOOLEAN Master;
00184   DMA_WIDTH DmaWidth;
00185   DMA_SPEED DmaSpeed;
00186   BOOLEAN bMapBuffers;
00187   BOOLEAN NeedPhysicalAddresses;
00188   BOOLEAN DemandMode;
00189   ULONG MaximumTransferLength;
00190   ULONG NumberOfPhysicalBreaks;
00191   BOOLEAN ScatterGather;
00192   ULONG MaximumScatterGatherChunkSize;
00193   PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress;
00194   PWSTR DriverRegistryPath;
00195   ULONGLONG SystemMemorySize;
00196 } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
00197 
00198 typedef VP_STATUS
00199 (NTAPI *PVIDEO_HW_FIND_ADAPTER)(
00200   IN PVOID HwDeviceExtension,
00201   IN PVOID HwContext,
00202   IN PWSTR ArgumentString,
00203   IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo,
00204   OUT PUCHAR Again);
00205 
00206 typedef BOOLEAN
00207 (NTAPI *PVIDEO_HW_INITIALIZE)(
00208   IN PVOID HwDeviceExtension);
00209 
00210 typedef BOOLEAN
00211 (NTAPI *PVIDEO_HW_INTERRUPT)(
00212   IN PVOID HwDeviceExtension);
00213 
00214 typedef struct _VIDEO_ACCESS_RANGE {
00215   PHYSICAL_ADDRESS RangeStart;
00216   ULONG RangeLength;
00217   UCHAR RangeInIoSpace;
00218   UCHAR RangeVisible;
00219   UCHAR RangeShareable;
00220   UCHAR RangePassive;
00221 } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
00222 
00223 typedef VOID
00224 (NTAPI *PVIDEO_HW_LEGACYRESOURCES)(
00225   IN ULONG VendorId,
00226   IN ULONG DeviceId,
00227   IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList,
00228   IN OUT PULONG LegacyResourceCount);
00229 
00230 typedef enum _HW_DMA_RETURN {
00231   DmaAsyncReturn,
00232   DmaSyncReturn
00233 } HW_DMA_RETURN, *PHW_DMA_RETURN;
00234 
00235 typedef HW_DMA_RETURN
00236 (NTAPI *PVIDEO_HW_START_DMA)(
00237   PVOID HwDeviceExtension,
00238   PDMA pDma);
00239 
00240 typedef struct _VP_SCATTER_GATHER_ELEMENT {
00241   PHYSICAL_ADDRESS Address;
00242   ULONG Length;
00243   ULONG_PTR Reserved;
00244 } VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT;
00245 
00246 typedef struct _VP_SCATTER_GATHER_LIST {
00247   ULONG NumberOfElements;
00248   ULONG_PTR Reserved;
00249   VP_SCATTER_GATHER_ELEMENT Elements[0];
00250 } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST;
00251 
00252 typedef VOID
00253 (NTAPI *PEXECUTE_DMA)(
00254   IN PVOID HwDeviceExtension,
00255   IN PVP_DMA_ADAPTER VpDmaAdapter,
00256   IN PVP_SCATTER_GATHER_LIST SGList,
00257   IN PVOID Context);
00258 
00259 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */
00260 typedef struct _VIDEO_CHILD_ENUM_INFO {
00261   ULONG Size;
00262   ULONG ChildDescriptorSize;
00263   ULONG ChildIndex;
00264   ULONG ACPIHwId;
00265   PVOID ChildHwDeviceExtension;
00266 } VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO;
00267 
00268 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */
00269 typedef enum _VIDEO_CHILD_TYPE {
00270   Monitor = 1,
00271   NonPrimaryChip,
00272   VideoChip,
00273   Other
00274 } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE;
00275 
00276 typedef VP_STATUS
00277 (NTAPI *PVIDEO_HW_GET_CHILD_DESCRIPTOR)(
00278   IN PVOID HwDeviceExtension,
00279   IN PVIDEO_CHILD_ENUM_INFO ChildEnumInfo,
00280   OUT PVIDEO_CHILD_TYPE VideoChildType,
00281   OUT PUCHAR pChildDescriptor,
00282   OUT PULONG UId,
00283   OUT PULONG pUnused);
00284 
00285 typedef VP_STATUS
00286 (NTAPI *PVIDEO_HW_POWER_SET)(
00287   IN PVOID HwDeviceExtension,
00288   IN ULONG HwId,
00289   IN PVIDEO_POWER_MANAGEMENT VideoPowerControl);
00290 
00291 typedef VP_STATUS
00292 (NTAPI *PVIDEO_HW_POWER_GET)(
00293   IN PVOID HwDeviceExtension,
00294   IN ULONG HwId,
00295   IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl);
00296 
00297 typedef struct _QUERY_INTERFACE {
00298   CONST GUID *InterfaceType;
00299   USHORT Size;
00300   USHORT Version;
00301   PINTERFACE Interface;
00302   PVOID InterfaceSpecificData;
00303 } QUERY_INTERFACE, *PQUERY_INTERFACE;
00304 
00305 typedef VP_STATUS
00306 (NTAPI *PVIDEO_HW_QUERY_INTERFACE)(
00307   IN PVOID HwDeviceExtension,
00308   IN OUT PQUERY_INTERFACE QueryInterface);
00309 
00310 typedef VP_STATUS
00311 (NTAPI *PVIDEO_HW_CHILD_CALLBACK)(
00312   PVOID HwDeviceExtension,
00313   PVOID ChildDeviceExtension);
00314 
00315 typedef BOOLEAN
00316 (NTAPI *PVIDEO_HW_RESET_HW)(
00317   IN PVOID HwDeviceExtension,
00318   IN ULONG Columns,
00319   IN ULONG Rows);
00320 
00321 typedef struct _STATUS_BLOCK {
00322   _ANONYMOUS_UNION union {
00323     VP_STATUS Status;
00324     PVOID Pointer;
00325   } DUMMYUNIONNAME;
00326   ULONG_PTR Information;
00327 } STATUS_BLOCK, *PSTATUS_BLOCK;
00328 
00329 typedef struct _VIDEO_REQUEST_PACKET {
00330   ULONG IoControlCode;
00331   PSTATUS_BLOCK StatusBlock;
00332   PVOID InputBuffer;
00333   ULONG InputBufferLength;
00334   PVOID OutputBuffer;
00335   ULONG OutputBufferLength;
00336 } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
00337 
00338 typedef BOOLEAN
00339 (NTAPI *PVIDEO_HW_START_IO)(
00340   IN PVOID HwDeviceExtension,
00341   IN PVIDEO_REQUEST_PACKET RequestPacket);
00342 
00343 typedef VOID
00344 (NTAPI *PVIDEO_HW_TIMER)(
00345   IN PVOID HwDeviceExtension);
00346 
00347 typedef VOID
00348 (NTAPI *PVIDEO_WRITE_CLOCK_LINE)(
00349   PVOID HwDeviceExtension,
00350   UCHAR Data);
00351 
00352 typedef VOID
00353 (NTAPI *PVIDEO_WRITE_DATA_LINE)(
00354   PVOID HwDeviceExtension,
00355   UCHAR Data);
00356 
00357 typedef BOOLEAN
00358 (NTAPI *PVIDEO_READ_CLOCK_LINE)(
00359   PVOID HwDeviceExtension);
00360 
00361 typedef BOOLEAN
00362 (NTAPI *PVIDEO_READ_DATA_LINE)(
00363   PVOID HwDeviceExtension);
00364 
00365 typedef VOID
00366 (NTAPI *PVIDEO_WAIT_VSYNC_ACTIVE)(
00367   PVOID HwDeviceExtension);
00368 
00369 typedef struct _I2C_CALLBACKS {
00370   IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine;
00371   IN PVIDEO_WRITE_DATA_LINE WriteDataLine;
00372   IN PVIDEO_READ_CLOCK_LINE ReadClockLine;
00373   IN PVIDEO_READ_DATA_LINE ReadDataLine;
00374 } I2C_CALLBACKS, *PI2C_CALLBACKS;
00375 
00376 typedef BOOLEAN
00377 (NTAPI *PI2C_START)(
00378   IN PVOID HwDeviceExtension,
00379   IN PI2C_CALLBACKS I2CCallbacks);
00380 
00381 typedef BOOLEAN
00382 (NTAPI *PI2C_STOP)(
00383   IN PVOID HwDeviceExtension,
00384   IN PI2C_CALLBACKS I2CCallbacks);
00385 
00386 typedef BOOLEAN
00387 (NTAPI *PI2C_WRITE)(
00388   IN PVOID HwDeviceExtension,
00389   IN PI2C_CALLBACKS I2CCallbacks,
00390   IN PUCHAR Buffer,
00391   IN ULONG Length);
00392 
00393 typedef BOOLEAN
00394 (NTAPI *PI2C_READ)(
00395   IN PVOID HwDeviceExtension,
00396   IN PI2C_CALLBACKS I2CCallbacks,
00397   OUT PUCHAR Buffer,
00398   IN ULONG Length);
00399 
00400 typedef struct _VIDEO_I2C_CONTROL {
00401   IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine;
00402   IN PVIDEO_WRITE_DATA_LINE WriteDataLine;
00403   IN PVIDEO_READ_CLOCK_LINE ReadClockLine;
00404   IN PVIDEO_READ_DATA_LINE ReadDataLine;
00405   IN ULONG I2CDelay;
00406 } VIDEO_I2C_CONTROL, *PVIDEO_I2C_CONTROL;
00407 
00408 typedef BOOLEAN
00409 (NTAPI *PI2C_START_2)(
00410   IN PVOID HwDeviceExtension,
00411   IN PVIDEO_I2C_CONTROL I2CControl);
00412 
00413 typedef BOOLEAN
00414 (NTAPI *PI2C_STOP_2)(
00415   IN PVOID HwDeviceExtension,
00416   IN PVIDEO_I2C_CONTROL I2CControl);
00417 
00418 typedef BOOLEAN
00419 (NTAPI *PI2C_WRITE_2)(
00420   IN PVOID HwDeviceExtension,
00421   IN PVIDEO_I2C_CONTROL I2CControl,
00422   IN PUCHAR Buffer,
00423   IN ULONG Length);
00424 
00425 typedef BOOLEAN
00426 (NTAPI *PI2C_READ_2)(
00427   IN PVOID HwDeviceExtension,
00428   IN PVIDEO_I2C_CONTROL I2CControl,
00429   OUT PUCHAR Buffer,
00430   IN ULONG Length,
00431   IN BOOLEAN EndOfRead);
00432 
00433 typedef struct _INT10_BIOS_ARGUMENTS {
00434   ULONG Eax;
00435   ULONG Ebx;
00436   ULONG Ecx;
00437   ULONG Edx;
00438   ULONG Esi;
00439   ULONG Edi;
00440   ULONG Ebp;
00441   USHORT SegDs;
00442   USHORT SegEs;
00443 } INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS;
00444 
00445 typedef VP_STATUS
00446 (NTAPI *PINT10_CALL_BIOS)(
00447   IN PVOID Context,
00448   IN OUT PINT10_BIOS_ARGUMENTS BiosArguments);
00449 
00450 typedef VP_STATUS
00451 (NTAPI *PINT10_ALLOCATE_BUFFER)(
00452   IN PVOID Context,
00453   OUT PUSHORT Seg,
00454   OUT PUSHORT Off,
00455   IN OUT PULONG Length);
00456 
00457 typedef VP_STATUS
00458 (NTAPI *PINT10_FREE_BUFFER)(
00459   IN PVOID Context,
00460   IN USHORT Seg,
00461   IN USHORT Off);
00462 
00463 typedef VP_STATUS
00464 (NTAPI *PINT10_READ_MEMORY)(
00465   IN PVOID Context,
00466   IN USHORT Seg,
00467   IN USHORT Off,
00468   OUT PVOID Buffer,
00469   IN ULONG Length);
00470 
00471 typedef VP_STATUS
00472 (NTAPI *PINT10_WRITE_MEMORY)(
00473   IN PVOID Context,
00474   IN USHORT Seg,
00475   IN USHORT Off,
00476   IN PVOID Buffer,
00477   IN ULONG Length);
00478 
00479 typedef VP_STATUS
00480 (NTAPI *PROTECT_WC_MEMORY)(
00481   IN PVOID Context,
00482   IN PVOID HwDeviceExtension);
00483 
00484 typedef VP_STATUS
00485 (NTAPI *RESTORE_WC_MEMORY)(
00486   IN PVOID Context,
00487   IN PVOID HwDeviceExtension);
00488 
00489 typedef enum _VIDEO_DEVICE_DATA_TYPE {
00490   VpMachineData = 0,
00491   VpCmosData,
00492   VpBusData,
00493   VpControllerData,
00494   VpMonitorData
00495 } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
00496 
00497 typedef VP_STATUS
00498 (NTAPI *PMINIPORT_QUERY_DEVICE_ROUTINE)(
00499   IN PVOID HwDeviceExtension,
00500   IN PVOID Context,
00501   IN VIDEO_DEVICE_DATA_TYPE DeviceDataType,
00502   IN PVOID Identifier,
00503   IN ULONG IdentifierLength,
00504   IN PVOID ConfigurationData,
00505   IN ULONG ConfigurationDataLength,
00506   IN OUT PVOID ComponentInformation,
00507   IN ULONG ComponentInformationLength);
00508 
00509 typedef VP_STATUS
00510 (NTAPI *PMINIPORT_GET_REGISTRY_ROUTINE)(
00511   IN PVOID HwDeviceExtension,
00512   IN PVOID Context,
00513   IN OUT PWSTR ValueName,
00514   IN OUT PVOID ValueData,
00515   IN ULONG ValueLength);
00516 
00517 typedef VOID
00518 (NTAPI *PMINIPORT_DPC_ROUTINE)(
00519   IN PVOID HwDeviceExtension,
00520   IN PVOID Context);
00521 
00522 typedef BOOLEAN
00523 (NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)(
00524   IN PVOID Context);
00525 
00526 typedef VOID
00527 (NTAPI *PVIDEO_BUGCHECK_CALLBACK)(
00528   IN PVOID HwDeviceExtension,
00529   IN ULONG BugcheckCode,
00530   IN PUCHAR Buffer,
00531   IN ULONG BufferSize);
00532 
00533 /* VideoPortSynchronizeExecution.Priority constants */
00534 typedef enum VIDEO_SYNCHRONIZE_PRIORITY {
00535   VpLowPriority = 0,
00536   VpMediumPriority,
00537   VpHighPriority
00538 } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
00539 
00540 /* VideoPortAllocatePool.PoolType constants */
00541 typedef enum _VP_POOL_TYPE {
00542   VpNonPagedPool = 0,
00543   VpPagedPool,
00544   VpNonPagedPoolCacheAligned = 4,
00545   VpPagedPoolCacheAligned
00546 } VP_POOL_TYPE, *PVP_POOL_TYPE;
00547 
00548 typedef enum _DMA_FLAGS {
00549   VideoPortUnlockAfterDma = 1,
00550   VideoPortKeepPagesLocked,
00551   VideoPortDmaInitOnly
00552 } DMA_FLAGS;
00553 
00554 typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA {
00555   INTERFACE_TYPE InterfaceType;
00556   ULONG BusNumber;
00557   USHORT Version;
00558   USHORT Revision;
00559   USHORT Irql;
00560   USHORT Vector;
00561   ULONG ControlBase;
00562   ULONG ControlSize;
00563   ULONG CursorBase;
00564   ULONG CursorSize;
00565   ULONG FrameBase;
00566   ULONG FrameSize;
00567 } VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA;
00568 
00569 typedef struct _VIDEO_X86_BIOS_ARGUMENTS {
00570   ULONG Eax;
00571   ULONG Ebx;
00572   ULONG Ecx;
00573   ULONG Edx;
00574   ULONG Esi;
00575   ULONG Edi;
00576   ULONG Ebp;
00577 } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
00578 
00579 typedef enum VIDEO_DEBUG_LEVEL {
00580   Error = 0,
00581   Warn,
00582   Trace,
00583   Info
00584 } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL;
00585 
00586 #ifndef _NTOS_
00587 
00588 typedef VP_STATUS
00589 (NTAPI *PDRIVER_IO_PORT_UCHAR)(
00590   IN ULONG_PTR Context,
00591   IN ULONG Port,
00592   IN UCHAR AccessMode,
00593   IN PUCHAR Data);
00594 
00595 typedef VP_STATUS
00596 (NTAPI *PDRIVER_IO_PORT_UCHAR_STRING)(
00597   IN ULONG_PTR Context,
00598   IN ULONG Port,
00599   IN UCHAR AccessMode,
00600   IN PUCHAR Data,
00601   IN ULONG DataLength);
00602 
00603 typedef VP_STATUS
00604 (NTAPI *PDRIVER_IO_PORT_ULONG)(
00605   IN ULONG_PTR Context,
00606   IN ULONG Port,
00607   IN UCHAR AccessMode,
00608   IN PULONG Data);
00609 
00610 typedef VP_STATUS
00611 (NTAPI *PDRIVER_IO_PORT_ULONG_STRING)(
00612   IN ULONG_PTR Context,
00613   IN ULONG Port,
00614   IN UCHAR AccessMode,
00615   IN PULONG Data,
00616   IN ULONG DataLength);
00617 
00618 typedef VP_STATUS
00619 (NTAPI *PDRIVER_IO_PORT_USHORT)(
00620   IN ULONG_PTR Context,
00621   IN ULONG Port,
00622   IN UCHAR AccessMode,
00623   IN PUSHORT Data);
00624 
00625 typedef VP_STATUS
00626 (NTAPI *PDRIVER_IO_PORT_USHORT_STRING)(
00627   IN ULONG_PTR Context,
00628   IN ULONG Port,
00629   IN UCHAR AccessMode,
00630   IN PUSHORT Data,
00631   IN ULONG DataLength);
00632 
00633 #endif /* _NTOS_ */
00634 
00635 typedef struct __VRB_SG {
00636   __int64 PhysicalAddress;
00637   ULONG Length;
00638 } VRB_SG, *PVRB_SG;
00639 
00640 typedef enum _VP_LOCK_OPERATION {
00641   VpReadAccess = 0,
00642   VpWriteAccess,
00643   VpModifyAccess
00644 } VP_LOCK_OPERATION;
00645 
00646 typedef struct _VP_DEVICE_DESCRIPTION {
00647   BOOLEAN ScatterGather;
00648   BOOLEAN Dma32BitAddresses;
00649   BOOLEAN Dma64BitAddresses;
00650   ULONG MaximumLength;
00651 } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION;
00652 
00653 typedef struct _VIDEO_CHILD_STATE {
00654   ULONG Id;
00655   ULONG State;
00656 } VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE;
00657 
00658 typedef struct _VIDEO_CHILD_STATE_CONFIGURATION {
00659   ULONG Count;
00660   VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY];
00661 } VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION;
00662 
00663 typedef struct _VIDEO_HW_INITIALIZATION_DATA {
00664   ULONG HwInitDataSize;
00665   INTERFACE_TYPE AdapterInterfaceType;
00666   PVIDEO_HW_FIND_ADAPTER HwFindAdapter;
00667   PVIDEO_HW_INITIALIZE HwInitialize;
00668   PVIDEO_HW_INTERRUPT HwInterrupt;
00669   PVIDEO_HW_START_IO HwStartIO;
00670   ULONG HwDeviceExtensionSize;
00671   ULONG StartingDeviceNumber;
00672   PVIDEO_HW_RESET_HW HwResetHw;
00673   PVIDEO_HW_TIMER HwTimer;
00674   PVIDEO_HW_START_DMA HwStartDma;
00675   PVIDEO_HW_POWER_SET HwSetPowerState;
00676   PVIDEO_HW_POWER_GET HwGetPowerState;
00677   PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor;
00678   PVIDEO_HW_QUERY_INTERFACE HwQueryInterface;
00679   ULONG HwChildDeviceExtensionSize;
00680   PVIDEO_ACCESS_RANGE HwLegacyResourceList;
00681   ULONG HwLegacyResourceCount;
00682   PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources;
00683   BOOLEAN AllowEarlyEnumeration;
00684   ULONG Reserved;
00685 } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
00686 
00687 typedef struct _I2C_FNC_TABLE {
00688   IN ULONG Size;
00689   IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine;
00690   IN PVIDEO_WRITE_DATA_LINE WriteDataLine;
00691   IN PVIDEO_READ_CLOCK_LINE ReadClockLine;
00692   IN PVIDEO_READ_DATA_LINE ReadDataLine;
00693   IN PVIDEO_WAIT_VSYNC_ACTIVE WaitVsync;
00694   PVOID Reserved;
00695 } I2C_FNC_TABLE, *PI2C_FNC_TABLE;
00696 
00697 typedef struct _DDC_CONTROL {
00698   IN ULONG Size;
00699   IN I2C_CALLBACKS I2CCallbacks;
00700   IN UCHAR EdidSegment;
00701 } DDC_CONTROL, *PDDC_CONTROL;
00702 
00703 /* VideoPortQueryServices.ServicesType constants */
00704 typedef enum _VIDEO_PORT_SERVICES {
00705   VideoPortServicesAGP = 1,
00706   VideoPortServicesI2C,
00707   VideoPortServicesHeadless,
00708   VideoPortServicesInt10,
00709   VideoPortServicesDebugReport,
00710   VideoPortServicesWCMemoryProtection
00711 } VIDEO_PORT_SERVICES;
00712 
00713 typedef struct _VIDEO_PORT_AGP_INTERFACE {
00714   SHORT Size;
00715   SHORT Version;
00716   PVOID Context;
00717   PINTERFACE_REFERENCE InterfaceReference;
00718   PINTERFACE_DEREFERENCE InterfaceDereference;
00719   PAGP_RESERVE_PHYSICAL AgpReservePhysical;
00720   PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
00721   PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
00722   PAGP_FREE_PHYSICAL AgpFreePhysical;
00723   PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
00724   PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
00725   PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
00726   PAGP_FREE_VIRTUAL AgpFreeVirtual;
00727   ULONGLONG AgpAllocationLimit;
00728 } VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE;
00729 
00730 typedef struct _VIDEO_PORT_AGP_INTERFACE_2 {
00731   IN USHORT Size;
00732   IN USHORT Version;
00733   OUT PVOID Context;
00734   OUT PINTERFACE_REFERENCE InterfaceReference;
00735   OUT PINTERFACE_DEREFERENCE InterfaceDereference;
00736   OUT PAGP_RESERVE_PHYSICAL AgpReservePhysical;
00737   OUT PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
00738   OUT PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
00739   OUT PAGP_FREE_PHYSICAL AgpFreePhysical;
00740   OUT PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
00741   OUT PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
00742   OUT PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
00743   OUT PAGP_FREE_VIRTUAL AgpFreeVirtual;
00744   OUT ULONGLONG AgpAllocationLimit;
00745   OUT PAGP_SET_RATE AgpSetRate;
00746 } VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2;
00747 
00748 typedef struct _VIDEO_PORT_I2C_INTERFACE {
00749   USHORT Size;
00750   USHORT Version;
00751   PVOID Context;
00752   PINTERFACE_REFERENCE InterfaceReference;
00753   PINTERFACE_DEREFERENCE InterfaceDereference;
00754   PI2C_START I2CStart;
00755   PI2C_STOP I2CStop;
00756   PI2C_WRITE I2CWrite;
00757   PI2C_READ I2CRead;
00758 } VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE;
00759 
00760 typedef struct _VIDEO_PORT_I2C_INTERFACE_2 {
00761   IN USHORT Size;
00762   IN USHORT Version;
00763   OUT PVOID Context;
00764   OUT PINTERFACE_REFERENCE InterfaceReference;
00765   OUT PINTERFACE_DEREFERENCE InterfaceDereference;
00766   OUT PI2C_START_2 I2CStart;
00767   OUT PI2C_STOP_2 I2CStop;
00768   OUT PI2C_WRITE_2 I2CWrite;
00769   OUT PI2C_READ_2 I2CRead;
00770 } VIDEO_PORT_I2C_INTERFACE_2, *PVIDEO_PORT_I2C_INTERFACE_2;
00771 
00772 typedef struct _VIDEO_PORT_INT10_INTERFACE {
00773   IN USHORT Size;
00774   IN USHORT Version;
00775   OUT PVOID Context;
00776   OUT PINTERFACE_REFERENCE InterfaceReference;
00777   OUT PINTERFACE_DEREFERENCE InterfaceDereference;
00778   OUT PINT10_ALLOCATE_BUFFER Int10AllocateBuffer;
00779   OUT PINT10_FREE_BUFFER Int10FreeBuffer;
00780   OUT PINT10_READ_MEMORY Int10ReadMemory;
00781   OUT PINT10_WRITE_MEMORY Int10WriteMemory;
00782   OUT PINT10_CALL_BIOS Int10CallBios;
00783 } VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE;
00784 
00785 typedef struct _VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE {
00786   IN USHORT Size;
00787   IN USHORT Version;
00788   OUT PVOID Context;
00789   OUT PINTERFACE_REFERENCE InterfaceReference;
00790   OUT PINTERFACE_DEREFERENCE InterfaceDereference;
00791   OUT PROTECT_WC_MEMORY VideoPortProtectWCMemory;
00792   OUT RESTORE_WC_MEMORY VideoPortRestoreWCMemory;
00793 } VIDEO_PORT_WCMEMORYPROTECTION_INTERFACE, *PVIDEO_PORT_WCMEMORYPROTECTION_INTERFACE;
00794 
00795 typedef struct _VPOSVERSIONINFO {
00796   IN ULONG Size;
00797   OUT ULONG MajorVersion;
00798   OUT ULONG MinorVersion;
00799   OUT ULONG BuildNumber;
00800   OUT USHORT ServicePackMajor;
00801   OUT USHORT ServicePackMinor;
00802 } VPOSVERSIONINFO, *PVPOSVERSIONINFO;
00803 
00804 typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE {
00805   IN USHORT Size;
00806   IN USHORT Version;
00807   OUT PVOID Context;
00808   OUT PINTERFACE_REFERENCE InterfaceReference;
00809   OUT PINTERFACE_DEREFERENCE InterfaceDereference;
00810   OUT PVIDEO_DEBUG_REPORT (*DbgReportCreate)(
00811     IN PVOID HwDeviceExtension,
00812     IN ULONG ulCode,
00813     IN ULONG_PTR ulpArg1,
00814     IN ULONG_PTR ulpArg2,
00815     IN ULONG_PTR ulpArg3,
00816     IN ULONG_PTR ulpArg4
00817   );
00818   OUT BOOLEAN (*DbgReportSecondaryData)(
00819     IN OUT PVIDEO_DEBUG_REPORT pReport,
00820     IN PVOID pvData,
00821     IN ULONG ulDataSize
00822   );
00823   OUT VOID (*DbgReportComplete)(
00824     IN OUT PVIDEO_DEBUG_REPORT pReport
00825   );
00826 } VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE;
00827 
00828 /* Video port functions for miniports */
00829 
00830 VPAPI
00831 VP_STATUS
00832 NTAPI
00833 VideoPortAllocateBuffer(
00834   IN PVOID HwDeviceExtension,
00835   IN ULONG Size,
00836   OUT PVOID *Buffer);
00837 
00838 VPAPI
00839 VOID
00840 NTAPI
00841 VideoPortAcquireDeviceLock(
00842   IN PVOID HwDeviceExtension);
00843 
00844 VPAPI
00845 ULONG
00846 NTAPI
00847 VideoPortCompareMemory(
00848   IN PVOID Source1,
00849   IN PVOID Source2,
00850   IN SIZE_T Length);
00851 
00852 VPAPI
00853 BOOLEAN
00854 NTAPI
00855 VideoPortDDCMonitorHelper(
00856   IN PVOID HwDeviceExtension,
00857   IN PVOID DDCControl,
00858   IN OUT PUCHAR EdidBuffer,
00859   IN ULONG EdidBufferSize);
00860 
00861 VPAPI
00862 VOID
00863 __cdecl
00864 VideoPortDebugPrint(
00865   IN VIDEO_DEBUG_LEVEL DebugPrintLevel,
00866   IN PSTR DebugMessage,
00867   IN ...);
00868 
00869 VPAPI
00870 VP_STATUS
00871 NTAPI
00872 VideoPortDisableInterrupt(
00873   IN PVOID HwDeviceExtension);
00874 
00875 VPAPI
00876 VP_STATUS
00877 NTAPI
00878 VideoPortEnableInterrupt(
00879   IN PVOID HwDeviceExtension);
00880 
00881 VPAPI
00882 VP_STATUS
00883 NTAPI
00884 VideoPortEnumerateChildren(
00885   IN PVOID HwDeviceExtension,
00886   IN PVOID Reserved);
00887 
00888 VPAPI
00889 VOID
00890 NTAPI
00891 VideoPortFreeDeviceBase(
00892   IN PVOID HwDeviceExtension,
00893   IN PVOID MappedAddress);
00894 
00895 VPAPI
00896 VP_STATUS
00897 NTAPI
00898 VideoPortGetAccessRanges(
00899   IN PVOID HwDeviceExtension,
00900   IN ULONG NumRequestedResources,
00901   IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL,
00902   IN ULONG NumAccessRanges,
00903   OUT PVIDEO_ACCESS_RANGE AccessRanges,
00904   IN PVOID VendorId,
00905   IN PVOID DeviceId,
00906   OUT PULONG Slot);
00907 
00908 VPAPI
00909 PVOID
00910 NTAPI
00911 VideoPortGetAssociatedDeviceExtension(
00912   IN PVOID DeviceObject);
00913 
00914 VPAPI
00915 ULONG
00916 NTAPI
00917 VideoPortGetBusData(
00918   IN PVOID HwDeviceExtension,
00919   IN BUS_DATA_TYPE BusDataType,
00920   IN ULONG SlotNumber,
00921   IN OUT PVOID Buffer,
00922   IN ULONG Offset,
00923   IN ULONG Length);
00924 
00925 VPAPI
00926 UCHAR
00927 NTAPI
00928 VideoPortGetCurrentIrql(VOID);
00929 
00930 VPAPI
00931 PVOID
00932 NTAPI
00933 VideoPortGetDeviceBase(
00934   IN PVOID HwDeviceExtension,
00935   IN PHYSICAL_ADDRESS IoAddress,
00936   IN ULONG NumberOfUchars,
00937   IN UCHAR InIoSpace);
00938 
00939 VPAPI
00940 VP_STATUS
00941 NTAPI
00942 VideoPortGetDeviceData(
00943   IN PVOID HwDeviceExtension,
00944   IN VIDEO_DEVICE_DATA_TYPE DeviceDataType,
00945   IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine,
00946   IN PVOID Context);
00947 
00948 VPAPI
00949 VP_STATUS
00950 NTAPI
00951 VideoPortGetRegistryParameters(
00952   IN PVOID HwDeviceExtension,
00953   IN PWSTR ParameterName,
00954   IN UCHAR IsParameterFileName,
00955   IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine,
00956   IN PVOID Context);
00957 
00958 VPAPI
00959 PVOID
00960 NTAPI
00961 VideoPortGetRomImage(
00962   IN PVOID HwDeviceExtension,
00963   IN PVOID Unused1,
00964   IN ULONG Unused2,
00965   IN ULONG Length);
00966 
00967 VPAPI
00968 VP_STATUS
00969 NTAPI
00970 VideoPortGetVgaStatus(
00971   IN PVOID HwDeviceExtension,
00972   OUT PULONG VgaStatus);
00973 
00974 VPAPI
00975 LONG
00976 FASTCALL
00977 VideoPortInterlockedDecrement(
00978   IN PLONG Addend);
00979 
00980 VPAPI
00981 LONG
00982 FASTCALL
00983 VideoPortInterlockedExchange(
00984   IN OUT PLONG Target,
00985   IN LONG Value);
00986 
00987 VPAPI
00988 LONG
00989 FASTCALL
00990 VideoPortInterlockedIncrement(
00991   IN PLONG Addend);
00992 
00993 VPAPI
00994 ULONG
00995 NTAPI
00996 VideoPortInitialize(
00997   IN PVOID Argument1,
00998   IN PVOID Argument2,
00999   IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData,
01000   IN PVOID HwContext);
01001 
01002 VPAPI
01003 VP_STATUS
01004 NTAPI
01005 VideoPortInt10(
01006   IN PVOID HwDeviceExtension,
01007   IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
01008 
01009 VPAPI
01010 VOID
01011 NTAPI
01012 VideoPortLogError(
01013   IN PVOID HwDeviceExtension,
01014   IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL,
01015   IN VP_STATUS ErrorCode,
01016   IN ULONG UniqueId);
01017 
01018 VPAPI
01019 VP_STATUS
01020 NTAPI
01021 VideoPortMapBankedMemory(
01022   IN PVOID HwDeviceExtension,
01023   IN PHYSICAL_ADDRESS PhysicalAddress,
01024   IN OUT PULONG Length,
01025   PULONG InIoSpace,
01026   PVOID *VirtualAddress,
01027   ULONG BankLength,
01028   UCHAR ReadWriteBank,
01029   PBANKED_SECTION_ROUTINE BankRoutine,
01030   PVOID Context);
01031 
01032 VPAPI
01033 VP_STATUS
01034 NTAPI
01035 VideoPortMapMemory(
01036   IN PVOID HwDeviceExtension,
01037   IN PHYSICAL_ADDRESS PhysicalAddress,
01038   IN OUT PULONG Length,
01039   IN PULONG InIoSpace,
01040   IN OUT PVOID *VirtualAddress);
01041 
01042 VPAPI
01043 VOID
01044 NTAPI
01045 VideoPortMoveMemory(
01046   IN PVOID Destination,
01047   IN PVOID Source,
01048   IN ULONG Length);
01049 
01050 VPAPI
01051 LONGLONG
01052 NTAPI
01053 VideoPortQueryPerformanceCounter(
01054   IN PVOID HwDeviceExtension,
01055   OUT PLONGLONG PerformanceFrequency OPTIONAL);
01056 
01057 VPAPI
01058 VP_STATUS
01059 NTAPI
01060 VideoPortQueryServices(
01061   IN PVOID HwDeviceExtension,
01062   IN VIDEO_PORT_SERVICES ServicesType,
01063   IN OUT PINTERFACE Interface);
01064 
01065 VPAPI
01066 BOOLEAN
01067 NTAPI
01068 VideoPortQueueDpc(
01069   IN PVOID HwDeviceExtension,
01070   IN PMINIPORT_DPC_ROUTINE CallbackRoutine,
01071   IN PVOID Context);
01072 
01073 VPAPI
01074 VOID
01075 NTAPI
01076 VideoPortReadPortBufferUchar(
01077   IN PUCHAR Port,
01078   OUT PUCHAR Buffer,
01079   IN ULONG Count);
01080 
01081 VPAPI
01082 VOID
01083 NTAPI
01084 VideoPortReadPortBufferUlong(
01085   IN PULONG Port,
01086   OUT PULONG Buffer,
01087   IN ULONG Count);
01088 
01089 VPAPI
01090 VOID
01091 NTAPI
01092 VideoPortReadPortBufferUshort(
01093   IN PUSHORT Port,
01094   OUT PUSHORT Buffer,
01095   IN ULONG Count);
01096 
01097 VPAPI
01098 UCHAR
01099 NTAPI
01100 VideoPortReadPortUchar(
01101   IN PUCHAR Port);
01102 
01103 VPAPI
01104 ULONG
01105 NTAPI
01106 VideoPortReadPortUlong(
01107   IN PULONG Port);
01108 
01109 VPAPI
01110 USHORT
01111 NTAPI
01112 VideoPortReadPortUshort(
01113   IN PUSHORT Port);
01114 
01115 VPAPI
01116 VOID
01117 NTAPI
01118 VideoPortReadRegisterBufferUchar(
01119   IN PUCHAR Register,
01120   OUT PUCHAR Buffer,
01121   IN ULONG Count);
01122 
01123 VPAPI
01124 VOID
01125 NTAPI
01126 VideoPortReadRegisterBufferUlong(
01127   IN PULONG Register,
01128   OUT PULONG Buffer,
01129   IN ULONG Count);
01130 
01131 VPAPI
01132 VOID
01133 NTAPI
01134 VideoPortReadRegisterBufferUshort(
01135   IN PUSHORT Register,
01136   OUT PUSHORT Buffer,
01137   IN ULONG Count);
01138 
01139 VPAPI
01140 UCHAR
01141 NTAPI
01142 VideoPortReadRegisterUchar(
01143   IN PUCHAR Register);
01144 
01145 VPAPI
01146 ULONG
01147 NTAPI
01148 VideoPortReadRegisterUlong(
01149   IN PULONG Register);
01150 
01151 VPAPI
01152 USHORT
01153 NTAPI
01154 VideoPortReadRegisterUshort(
01155   IN PUSHORT Register);
01156 
01157 VPAPI
01158 VOID
01159 NTAPI
01160 VideoPortReleaseBuffer(
01161   IN PVOID HwDeviceExtension,
01162   IN PVOID Buffer);
01163 
01164 VPAPI
01165 VOID
01166 NTAPI
01167 VideoPortReleaseDeviceLock(
01168   IN PVOID HwDeviceExtension);
01169 
01170 VPAPI
01171 BOOLEAN
01172 NTAPI
01173 VideoPortScanRom(
01174   PVOID HwDeviceExtension,
01175   PUCHAR RomBase,
01176   ULONG RomLength,
01177   PUCHAR String);
01178 
01179 VPAPI
01180 ULONG
01181 NTAPI
01182 VideoPortSetBusData(
01183   IN PVOID HwDeviceExtension,
01184   IN BUS_DATA_TYPE BusDataType,
01185   IN ULONG SlotNumber,
01186   IN PVOID Buffer,
01187   IN ULONG Offset,
01188   IN ULONG Length);
01189 
01190 VPAPI
01191 VP_STATUS
01192 NTAPI
01193 VideoPortSetRegistryParameters(
01194   IN PVOID HwDeviceExtension,
01195   IN PWSTR ValueName,
01196   IN PVOID ValueData,
01197   IN ULONG ValueLength);
01198 
01199 VPAPI
01200 VP_STATUS
01201 NTAPI
01202 VideoPortSetTrappedEmulatorPorts(
01203   IN PVOID HwDeviceExtension,
01204   IN ULONG NumAccessRanges,
01205   IN PVIDEO_ACCESS_RANGE AccessRange);
01206 
01207 VPAPI
01208 VOID
01209 NTAPI
01210 VideoPortStallExecution(
01211   IN ULONG Microseconds);
01212 
01213 VPAPI
01214 VOID
01215 NTAPI
01216 VideoPortStartTimer(
01217   IN PVOID HwDeviceExtension);
01218 
01219 VPAPI
01220 VOID
01221 NTAPI
01222 VideoPortStopTimer(
01223   IN PVOID HwDeviceExtension);
01224 
01225 VPAPI
01226 BOOLEAN
01227 NTAPI
01228 VideoPortSynchronizeExecution(
01229   IN PVOID HwDeviceExtension,
01230   IN VIDEO_SYNCHRONIZE_PRIORITY Priority,
01231   IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine,
01232   IN PVOID Context);
01233 
01234 VPAPI
01235 VP_STATUS
01236 NTAPI
01237 VideoPortUnmapMemory(
01238   IN PVOID HwDeviceExtension,
01239   IN OUT PVOID VirtualAddress,
01240   IN HANDLE ProcessHandle);
01241 
01242 VPAPI
01243 VP_STATUS
01244 NTAPI
01245 VideoPortVerifyAccessRanges(
01246   IN PVOID HwDeviceExtension,
01247   IN ULONG NumAccessRanges,
01248   IN PVIDEO_ACCESS_RANGE AccessRanges);
01249 
01250 VPAPI
01251 VOID
01252 NTAPI
01253 VideoPortWritePortBufferUchar(
01254   IN PUCHAR Port,
01255   IN PUCHAR Buffer,
01256   IN ULONG Count);
01257 
01258 VPAPI
01259 VOID
01260 NTAPI
01261 VideoPortWritePortBufferUlong(
01262   IN PULONG Port,
01263   IN PULONG Buffer,
01264   IN ULONG Count);
01265 
01266 VPAPI
01267 VOID
01268 NTAPI
01269 VideoPortWritePortBufferUshort(
01270   IN PUSHORT Port,
01271   IN PUSHORT Buffer,
01272   IN ULONG Count);
01273 
01274 VPAPI
01275 VOID
01276 NTAPI
01277 VideoPortWritePortUchar(
01278   IN PUCHAR Port,
01279   IN UCHAR Value);
01280 
01281 VPAPI
01282 VOID
01283 NTAPI
01284 VideoPortWritePortUlong(
01285   IN PULONG Port,
01286   IN ULONG Value);
01287 
01288 VPAPI
01289 VOID
01290 NTAPI
01291 VideoPortWritePortUshort(
01292   IN PUSHORT Port,
01293   IN USHORT Value);
01294 
01295 VPAPI
01296 VOID
01297 NTAPI
01298 VideoPortWriteRegisterBufferUchar(
01299   IN PUCHAR Register,
01300   IN PUCHAR Buffer,
01301   IN ULONG Count);
01302 
01303 VPAPI
01304 VOID
01305 NTAPI
01306 VideoPortWriteRegisterBufferUlong(
01307   IN PULONG Register,
01308   IN PULONG Buffer,
01309   IN ULONG Count);
01310 
01311 VPAPI
01312 VOID
01313 NTAPI
01314 VideoPortWriteRegisterBufferUshort(
01315   IN PUSHORT Register,
01316   IN PUSHORT Buffer,
01317   IN ULONG Count);
01318 
01319 VPAPI
01320 VOID
01321 NTAPI
01322 VideoPortWriteRegisterUchar(
01323   IN PUCHAR Register,
01324   IN UCHAR Value);
01325 
01326 VPAPI
01327 VOID
01328 NTAPI
01329 VideoPortWriteRegisterUlong(
01330   IN PULONG Register,
01331   IN ULONG Value);
01332 
01333 VPAPI
01334 VOID
01335 NTAPI
01336 VideoPortWriteRegisterUshort(
01337   IN PUSHORT Register,
01338   IN USHORT Value);
01339 
01340 VPAPI
01341 VOID
01342 NTAPI
01343 VideoPortZeroDeviceMemory(
01344   IN PVOID Destination,
01345   IN ULONG Length);
01346 
01347 VPAPI
01348 VOID
01349 NTAPI
01350 VideoPortZeroMemory(
01351   IN PVOID Destination,
01352   IN ULONG Length);
01353 
01354 VPAPI
01355 PVOID
01356 NTAPI
01357 VideoPortAllocateContiguousMemory(
01358   IN PVOID HwDeviceExtension,
01359   IN ULONG NumberOfBytes,
01360   IN PHYSICAL_ADDRESS HighestAcceptableAddress);
01361 
01362 VPAPI
01363 PVOID
01364 NTAPI
01365 VideoPortGetCommonBuffer(
01366   IN PVOID HwDeviceExtension,
01367   IN ULONG DesiredLength,
01368   IN ULONG Alignment,
01369   OUT PPHYSICAL_ADDRESS LogicalAddress,
01370   OUT PULONG pActualLength,
01371   IN BOOLEAN CacheEnabled);
01372 
01373 VPAPI
01374 VOID
01375 NTAPI
01376 VideoPortFreeCommonBuffer(
01377   IN PVOID HwDeviceExtension,
01378   IN ULONG Length,
01379   IN PVOID VirtualAddress,
01380   IN PHYSICAL_ADDRESS LogicalAddress,
01381   IN BOOLEAN CacheEnabled);
01382 
01383 VPAPI
01384 PDMA
01385 NTAPI
01386 VideoPortDoDma(
01387   IN PVOID HwDeviceExtension,
01388   IN PDMA pDma,
01389   IN DMA_FLAGS DmaFlags);
01390 
01391 VPAPI
01392 BOOLEAN
01393 NTAPI
01394 VideoPortLockPages(
01395   IN PVOID HwDeviceExtension,
01396   IN OUT PVIDEO_REQUEST_PACKET pVrp,
01397   IN OUT PEVENT pUEvent,
01398   IN PEVENT pDisplayEvent,
01399   IN DMA_FLAGS DmaFlags);
01400 
01401 VPAPI
01402 BOOLEAN
01403 NTAPI
01404 VideoPortUnlockPages(
01405   IN PVOID hwDeviceExtension,
01406   IN OUT PDMA pDma);
01407 
01408 VPAPI
01409 BOOLEAN
01410 NTAPI
01411 VideoPortSignalDmaComplete(
01412   IN PVOID HwDeviceExtension,
01413   IN PDMA pDmaHandle);
01414 
01415 VPAPI
01416 PVOID
01417 NTAPI
01418 VideoPortGetMdl(
01419   IN PVOID HwDeviceExtension,
01420   IN PDMA pDma);
01421 
01422 VPAPI
01423 PVOID
01424 NTAPI
01425 VideoPortGetDmaContext(
01426   IN PVOID HwDeviceExtension,
01427   IN PDMA pDma);
01428 
01429 VPAPI
01430 VOID
01431 NTAPI
01432 VideoPortSetDmaContext(
01433   IN PVOID HwDeviceExtension,
01434   OUT PDMA pDma,
01435   IN PVOID InstanceContext);
01436 
01437 VPAPI
01438 ULONG
01439 NTAPI
01440 VideoPortGetBytesUsed(
01441   IN PVOID HwDeviceExtension,
01442   IN PDMA pDma);
01443 
01444 VPAPI
01445 VOID
01446 NTAPI
01447 VideoPortSetBytesUsed(
01448   IN PVOID HwDeviceExtension,
01449   IN OUT PDMA pDma,
01450   IN ULONG BytesUsed);
01451 
01452 VPAPI
01453 PDMA
01454 NTAPI
01455 VideoPortAssociateEventsWithDmaHandle(
01456   IN PVOID HwDeviceExtension,
01457   IN OUT PVIDEO_REQUEST_PACKET pVrp,
01458   IN PVOID MappedUserEvent,
01459   IN PVOID DisplayDriverEvent);
01460 
01461 VPAPI
01462 PDMA
01463 NTAPI
01464 VideoPortMapDmaMemory(
01465   IN PVOID HwDeviceExtension,
01466   IN PVIDEO_REQUEST_PACKET pVrp,
01467   IN PHYSICAL_ADDRESS BoardAddress,
01468   IN PULONG Length,
01469   IN PULONG InIoSpace,
01470   IN PVOID MappedUserEvent,
01471   IN PVOID DisplayDriverEvent,
01472   IN OUT PVOID *VirtualAddress);
01473 
01474 VPAPI
01475 BOOLEAN
01476 NTAPI
01477 VideoPortUnmapDmaMemory(
01478   IN PVOID HwDeviceExtension,
01479   IN PVOID VirtualAddress,
01480   IN HANDLE ProcessHandle,
01481   IN PDMA BoardMemoryHandle);
01482 
01483 VPAPI
01484 VP_STATUS
01485 NTAPI
01486 VideoPortCreateSecondaryDisplay(
01487   IN PVOID HwDeviceExtension,
01488   IN OUT PVOID *SecondaryDeviceExtension,
01489   IN ULONG ulFlag);
01490 
01491 VPAPI
01492 PVP_DMA_ADAPTER
01493 NTAPI
01494 VideoPortGetDmaAdapter(
01495   IN PVOID HwDeviceExtension,
01496   IN PVP_DEVICE_DESCRIPTION VpDeviceDescription);
01497 
01498 VPAPI
01499 VOID
01500 NTAPI
01501 VideoPortPutDmaAdapter(
01502   IN PVOID HwDeviceExtension,
01503   IN PVP_DMA_ADAPTER VpDmaAdapter);
01504 
01505 VPAPI
01506 PVOID
01507 NTAPI
01508 VideoPortAllocateCommonBuffer(
01509   IN PVOID HwDeviceExtension,
01510   IN PVP_DMA_ADAPTER VpDmaAdapter,
01511   IN ULONG DesiredLength,
01512   OUT PPHYSICAL_ADDRESS LogicalAddress,
01513   IN BOOLEAN CacheEnabled,
01514   PVOID Reserved);
01515 
01516 VPAPI
01517 VOID
01518 NTAPI
01519 VideoPortReleaseCommonBuffer(
01520   IN PVOID HwDeviceExtension,
01521   IN PVP_DMA_ADAPTER VpDmaAdapter,
01522   IN ULONG Length,
01523   IN PHYSICAL_ADDRESS LogicalAddress,
01524   IN PVOID VirtualAddress,
01525   IN BOOLEAN CacheEnabled);
01526 
01527 VPAPI
01528 PVOID
01529 NTAPI
01530 VideoPortLockBuffer(
01531   IN PVOID HwDeviceExtension,
01532   IN PVOID BaseAddress,
01533   IN ULONG Length,
01534   IN VP_LOCK_OPERATION Operation);
01535 
01536 VPAPI
01537 VOID
01538 NTAPI
01539 VideoPortUnLockBuffer(
01540   IN PVOID HwDeviceExtension,
01541   IN PVOID Mdl);
01542 
01543 VPAPI
01544 VP_STATUS
01545 NTAPI
01546 VideoPortStartDma(
01547   IN PVOID HwDeviceExtension,
01548   IN PVP_DMA_ADAPTER VpDmaAdapter,
01549   IN PVOID Mdl,
01550   IN ULONG Offset,
01551   IN OUT PULONG pLength,
01552   IN PEXECUTE_DMA ExecuteDmaRoutine,
01553   IN PVOID Context,
01554   IN BOOLEAN WriteToDevice);
01555 
01556 VPAPI
01557 VP_STATUS
01558 NTAPI
01559 VideoPortCompleteDma(
01560   IN PVOID HwDeviceExtension,
01561   IN PVP_DMA_ADAPTER VpDmaAdapter,
01562   IN PVP_SCATTER_GATHER_LIST VpScatterGather,
01563   IN BOOLEAN WriteToDevice);
01564 
01565 VPAPI
01566 VP_STATUS
01567 NTAPI
01568 VideoPortCreateEvent(
01569   IN PVOID HwDeviceExtension,
01570   IN ULONG EventFlag,
01571   IN PVOID Unused,
01572   OUT PEVENT *ppEvent);
01573 
01574 VPAPI
01575 VP_STATUS
01576 NTAPI
01577 VideoPortDeleteEvent(
01578   IN PVOID HwDeviceExtension,
01579   IN PEVENT pEvent);
01580 
01581 VPAPI
01582 LONG
01583 NTAPI
01584 VideoPortSetEvent(
01585   IN PVOID HwDeviceExtension,
01586   IN PEVENT pEvent);
01587 
01588 VPAPI
01589 VOID
01590 NTAPI
01591 VideoPortClearEvent(
01592   IN PVOID HwDeviceExtension,
01593   IN PEVENT pEvent);
01594 
01595 VPAPI
01596 LONG
01597 NTAPI
01598 VideoPortReadStateEvent(
01599   IN PVOID HwDeviceExtension,
01600   IN PEVENT pEvent);
01601 
01602 VPAPI
01603 VP_STATUS
01604 NTAPI
01605 VideoPortWaitForSingleObject(
01606   IN PVOID HwDeviceExtension,
01607   IN PVOID Object,
01608   IN PLARGE_INTEGER Timeout OPTIONAL);
01609 
01610 VPAPI
01611 PVOID
01612 NTAPI
01613 VideoPortAllocatePool(
01614   IN PVOID HwDeviceExtension,
01615   IN VP_POOL_TYPE PoolType,
01616   IN SIZE_T NumberOfBytes,
01617   IN ULONG Tag);
01618 
01619 VPAPI
01620 VOID
01621 NTAPI
01622 VideoPortFreePool(
01623   IN PVOID HwDeviceExtension,
01624   IN PVOID Ptr);
01625 
01626 VPAPI
01627 VP_STATUS
01628 NTAPI
01629 VideoPortCreateSpinLock(
01630   IN PVOID HwDeviceExtension,
01631   OUT PSPIN_LOCK *SpinLock);
01632 
01633 VPAPI
01634 VP_STATUS
01635 NTAPI
01636 VideoPortDeleteSpinLock(
01637   IN PVOID HwDeviceExtension,
01638   IN PSPIN_LOCK SpinLock);
01639 
01640 VPAPI
01641 VOID
01642 NTAPI
01643 VideoPortAcquireSpinLock(
01644   IN PVOID HwDeviceExtension,
01645   IN PSPIN_LOCK SpinLock,
01646   OUT PUCHAR OldIrql);
01647 
01648 VPAPI
01649 VOID
01650 NTAPI
01651 VideoPortAcquireSpinLockAtDpcLevel(
01652   IN PVOID HwDeviceExtension,
01653   IN PSPIN_LOCK SpinLock);
01654 
01655 VPAPI
01656 VOID
01657 NTAPI
01658 VideoPortReleaseSpinLock(
01659   IN PVOID HwDeviceExtension,
01660   IN PSPIN_LOCK SpinLock,
01661   IN UCHAR NewIrql);
01662 
01663 VPAPI
01664 VOID
01665 NTAPI
01666 VideoPortReleaseSpinLockFromDpcLevel(
01667   IN PVOID HwDeviceExtension,
01668   IN PSPIN_LOCK SpinLock);
01669 
01670 VPAPI
01671 VOID
01672 NTAPI
01673 VideoPortQuerySystemTime(
01674   OUT PLARGE_INTEGER CurrentTime);
01675 
01676 VPAPI
01677 BOOLEAN
01678 NTAPI
01679 VideoPortCheckForDeviceExistence(
01680   IN PVOID HwDeviceExtension,
01681   IN USHORT VendorId,
01682   IN USHORT DeviceId,
01683   IN UCHAR RevisionId,
01684   IN USHORT SubVendorId,
01685   IN USHORT SubSystemId,
01686   IN ULONG Flags);
01687 
01688 VPAPI
01689 ULONG
01690 NTAPI
01691 VideoPortGetAssociatedDeviceID(
01692   IN PVOID DeviceObject);
01693 
01694 VPAPI
01695 VP_STATUS
01696 NTAPI
01697 VideoPortFlushRegistry(
01698   PVOID HwDeviceExtension);
01699 
01700 VPAPI
01701 VP_STATUS
01702 NTAPI
01703 VideoPortGetVersion(
01704   IN PVOID HwDeviceExtension,
01705   IN OUT PVPOSVERSIONINFO pVpOsVersionInfo);
01706 
01707 VPAPI
01708 BOOLEAN
01709 NTAPI
01710 VideoPortIsNoVesa(VOID);
01711 
01712 VPAPI
01713 VP_STATUS
01714 NTAPI
01715 VideoPortRegisterBugcheckCallback(
01716   IN PVOID HwDeviceExtension,
01717   IN ULONG BugcheckCode,
01718   IN PVIDEO_BUGCHECK_CALLBACK Callback,
01719   IN ULONG BugcheckDataSize);
01720 
01721 VPAPI
01722 PVIDEO_DEBUG_REPORT
01723 NTAPI
01724 VideoPortDbgReportCreate(
01725   IN PVOID HwDeviceExtension,
01726   IN ULONG ulCode,
01727   IN ULONG_PTR ulpArg1,
01728   IN ULONG_PTR ulpArg2,
01729   IN ULONG_PTR ulpArg3,
01730   IN ULONG_PTR ulpArg4);
01731 
01732 VPAPI
01733 BOOLEAN
01734 NTAPI
01735 VideoPortDbgReportSecondaryData(
01736   IN OUT PVIDEO_DEBUG_REPORT pReport,
01737   IN PVOID pvData,
01738   IN ULONG ulDataSize);
01739 
01740 VPAPI
01741 VOID
01742 NTAPI
01743 VideoPortDbgReportComplete(
01744   IN OUT PVIDEO_DEBUG_REPORT pReport);
01745 
01746 #ifdef __cplusplus
01747 }
01748 #endif

Generated on Sat May 26 2012 04:17:51 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.