Implemented vfs_volume_info_get() for proper df(1) entry.
[reactos.git] / include / ddk / ntddvid.h
1 /*
2  * NTDDVID.H - Video Port and MiniPort driver interface
3  */
4
5 #include <ddk/miniport.h>
6
7 /*
8  * the rough idea:
9  *  init:
10  *    miniport driver defines entrypoint thusly:
11  *      ULONG  DriverEntry(PVOID Context1, PVOID Context2);
12  *    miniport allocates and initializes a VIDEO_HW_INIT_DATA struct
13  *    miniport calls VideoPortInitialize
14  *    video port driver handles init of DriverObject (Context1)
15  *    video port driver calls back into HwVidFindAdapter entry point
16  *    video port driver finishes up and returns the status code that
17  *      the miniport driver should return.
18  *  io requests:
19  *    video port driver reformats IRP into VRP
20  *    video port driver calls back into HwVidStartIO entry point
21  *    minimum IoControlCodes that must be handles by the miniport:
22  *      IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
23  *      IOCTL_VIDEO_QUERY_AVAIL_MODES
24  *      IOCTL_VIDEO_SET_CURRENT_MODE
25  *      IOCTL_VIDEO_MAP_MEMORY
26  *      IOCTL_VIDEO_RESET_DEVICE
27  *  interrupts are handled the same as KM drivers.
28  */
29
30 typedef LONG VP_STATUS, *PVP_STATUS;
31
32 // Bit definitions for Attribute Flags
33 #define VIDEO_MODE_COLOR          0x0001
34 #define VIDEO_MODE_GRAPHICS       0x0002
35 #define VIDEO_MODE_PALETTE_DRIVEN 0x0004
36
37 #define VIDEO_MEMORY_SPACE_MEMORY    0x00
38 #define VIDEO_MEMORY_SPACE_IO        0x01
39 #define VIDEO_MEMORY_SPACE_USER_MODE 0x02
40 #define VIDEO_MEMORY_SPACE_DENSE     0x04
41 #define VIDEO_MEMORY_SPACE_P6CACHE   0x08
42
43 typedef struct _VIDEO_POINTER_CAPABILITIES
44 {
45   ULONG  Flags;
46   ULONG  MaxWidth;
47   ULONG  MaxHeight;
48   ULONG  HWPtrBitmapStart;
49   ULONG  HWPtrBitmapEnd;
50 } VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
51
52 typedef struct _VIDEO_POINTER_ATTRIBUTES
53 {
54   ULONG  Flags;
55   ULONG  Width;
56   ULONG  Height;
57   ULONG  WidthInBytes;
58   ULONG  Enable;
59   SHORT  Column;
60   SHORT  Row;
61   UCHAR  Pixels[1];
62 } VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
63
64 typedef enum _VIDEO_BANK_TYPE
65 {
66   VideoNotBanked = 0,
67   VideoBanked1RW,
68   VideoBanked1R1W,
69   VideoBanked2RW,
70   NumVideoBankTypes
71 } VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
72
73 typedef struct _VIDEO_BANK_SELECT
74 {
75   ULONG  Length;
76   ULONG  Size;
77   ULONG  BankingFlags;
78   ULONG  BankingType;
79   ULONG  PlanarHCBankingType;
80   ULONG  BitmapWidthInBytes;
81   ULONG  BitmapSize;
82   ULONG  Granularity;
83   ULONG  PlanarHCGranularity;
84   ULONG  CodeOffset;
85   ULONG  PlanarHCBankCodeOffset;
86   ULONG  PlanarHCEnableCodeOffset;
87   ULONG  PlanarHCDisableCodeOffset;
88 } VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
89
90 typedef struct _VIDEO_CLUTDATA
91 {
92   UCHAR  Red;
93   UCHAR  Green;
94   UCHAR  Blue;
95   UCHAR  Unused;
96 } VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
97
98 typedef struct _VIDEO_NUM_MODES
99 {
100   ULONG  NumModes;
101   ULONG  ModeInformationLength;
102 } VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
103
104 typedef struct _VIDEO_MODE_INFORMATION
105 {
106   ULONG  Length;
107   ULONG  ModeIndex;
108   ULONG  VisScreenWidth;
109   ULONG  VisScreenHeight;
110   ULONG  ScreenStride;
111   ULONG  NumberOfPlanes;
112   ULONG  BitsPerPlane;
113   ULONG  Frequency;
114   ULONG  XMillimeter;
115   ULONG  YMillimeter;
116   ULONG  NumberRedBits;
117   ULONG  NumberGreenBits;
118   ULONG  NumberBlueBits;
119   ULONG  RedMask;
120   ULONG  GreenMask;
121   ULONG  BlueMask;
122   ULONG  AttributeFlags;
123   ULONG  VideoMemoryBitmapWidth;
124   ULONG  VideoMemoryBitmapHeight;
125   ULONG  DriverSpecificAttributeFlags;
126 } VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
127
128 typedef enum _VIDEO_DEVICE_DATA_TYPE
129 {
130   VpMachineData,
131   VpCmosData,
132   VpBusData,
133   VpControllerData,
134   VpMonitorData
135 } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
136
137 typedef enum _VIDEO_SYNCHRONIZE_PRIORITY
138 {
139   VpLowPriority,
140   VpMediumPriority,
141   VpHighPriority
142 } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
143
144 typedef struct _STATUS_BLOCK
145 {
146   VP_STATUS  Status;
147   ULONG  Information;
148 } STATUS_BLOCK, *PSTATUS_BLOCK;
149
150 typedef struct _VIDEO_REQUEST_PACKET
151 {
152   ULONG  IoControlCode;
153   PSTATUS_BLOCK  StatusBlock;
154   PVOID  InputBuffer;
155   ULONG  InputBufferLength;
156   PVOID  OutputBuffer;
157   ULONG  OutputBufferLength;
158 } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
159
160 #define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES       CTL_CODE(FILE_DEVICE_VIDEO,  0, METHOD_BUFFERED, FILE_ANY_ACCESS)
161 #define IOCTL_VIDEO_QUERY_AVAIL_MODES           CTL_CODE(FILE_DEVICE_VIDEO,  1, METHOD_BUFFERED, FILE_ANY_ACCESS)
162 #define IOCTL_VIDEO_QUERY_CURRENT_MODE          CTL_CODE(FILE_DEVICE_VIDEO,  2, METHOD_BUFFERED, FILE_ANY_ACCESS)
163 #define IOCTL_VIDEO_SET_CURRENT_MODE            CTL_CODE(FILE_DEVICE_VIDEO,  3, METHOD_BUFFERED, FILE_ANY_ACCESS)
164 #define IOCTL_VIDEO_RESET_DEVICE                CTL_CODE(FILE_DEVICE_VIDEO,  4, METHOD_BUFFERED, FILE_ANY_ACCESS)
165 #define IOCTL_VIDEO_MAP_VIDEO_MEMORY            CTL_CODE(FILE_DEVICE_VIDEO,  5, METHOD_BUFFERED, FILE_ANY_ACCESS)
166 #define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY          CTL_CODE(FILE_DEVICE_VIDEO,  6, METHOD_BUFFERED, FILE_ANY_ACCESS)
167 #define IOCTL_VIDEO_SHARE_VIDEO_MEMORY          CTL_CODE(FILE_DEVICE_VIDEO,  7, METHOD_BUFFERED, FILE_ANY_ACCESS)
168 #define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY        CTL_CODE(FILE_DEVICE_VIDEO,  8, METHOD_BUFFERED, FILE_ANY_ACCESS)
169 #define IOCTL_VIDEO_GET_PUBLIC_ACCESS_RANGES    CTL_CODE(FILE_DEVICE_VIDEO,  9, METHOD_BUFFERED, FILE_ANY_ACCESS)
170 #define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES   CTL_CODE(FILE_DEVICE_VIDEO,  10, METHOD_BUFFERED, FILE_ANY_ACCESS)
171 #define IOCTL_VIDEO_GET_POWER_MANAGEMENT        CTL_CODE(FILE_DEVICE_VIDEO,  11, METHOD_BUFFERED, FILE_ANY_ACCESS)
172 #define IOCTL_VIDEO_SET_POWER_MANAGEMENT        CTL_CODE(FILE_DEVICE_VIDEO,  12, METHOD_BUFFERED, FILE_ANY_ACCESS)
173 #define IOCTL_VIDEO_COLOR_CAPABILITIES          CTL_CODE(FILE_DEVICE_VIDEO,  13, METHOD_BUFFERED, FILE_ANY_ACCESS)
174 #define IOCTL_VIDEO_SET_COLOR_REGISTERS         CTL_CODE(FILE_DEVICE_VIDEO,  14, METHOD_BUFFERED, FILE_ANY_ACCESS)
175 #define IOCTL_VIDEO_DISABLE_POINTER             CTL_CODE(FILE_DEVICE_VIDEO,  15, METHOD_BUFFERED, FILE_ANY_ACCESS)
176 #define IOCTL_VIDEO_ENABLE_POINTER              CTL_CODE(FILE_DEVICE_VIDEO,  16, METHOD_BUFFERED, FILE_ANY_ACCESS)
177 #define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES  CTL_CODE(FILE_DEVICE_VIDEO,  17, METHOD_BUFFERED, FILE_ANY_ACCESS)
178 #define IOCTL_VIDEO_QUERY_POINTER_ATTR          CTL_CODE(FILE_DEVICE_VIDEO,  18, METHOD_BUFFERED, FILE_ANY_ACCESS)
179 #define IOCTL_VIDEO_SET_POINTER_ATTR            CTL_CODE(FILE_DEVICE_VIDEO,  19, METHOD_BUFFERED, FILE_ANY_ACCESS)
180 #define IOCTL_VIDEO_QUERY_POINTER_POSITION      CTL_CODE(FILE_DEVICE_VIDEO,  20, METHOD_BUFFERED, FILE_ANY_ACCESS)
181 #define IOCTL_VIDEO_SET_POINTER_POSITION        CTL_CODE(FILE_DEVICE_VIDEO,  21, METHOD_BUFFERED, FILE_ANY_ACCESS)
182 #define IOCTL_VIDEO_SAVE_HARDWARE_STATE         CTL_CODE(FILE_DEVICE_VIDEO,  22, METHOD_BUFFERED, FILE_ANY_ACCESS)
183 #define IOCTL_VIDEO_RESTORE_HARDWARE_STATE      CTL_CODE(FILE_DEVICE_VIDEO,  23, METHOD_BUFFERED, FILE_ANY_ACCESS)
184 #define IOCTL_VIDEO_DISABLE_CURSOR              CTL_CODE(FILE_DEVICE_VIDEO,  24, METHOD_BUFFERED, FILE_ANY_ACCESS)
185 #define IOCTL_VIDEO_ENABLE_CURSOR               CTL_CODE(FILE_DEVICE_VIDEO,  25, METHOD_BUFFERED, FILE_ANY_ACCESS)
186 #define IOCTL_VIDEO_QUERY_CURSOR_ATTR           CTL_CODE(FILE_DEVICE_VIDEO,  26, METHOD_BUFFERED, FILE_ANY_ACCESS)
187 #define IOCTL_VIDEO_SET_CURSOR_ATTR             CTL_CODE(FILE_DEVICE_VIDEO,  27, METHOD_BUFFERED, FILE_ANY_ACCESS)
188 #define IOCTL_VIDEO_QUERY_CURSOR_POSITION       CTL_CODE(FILE_DEVICE_VIDEO,  28, METHOD_BUFFERED, FILE_ANY_ACCESS)
189 #define IOCTL_VIDEO_SET_CURSOR_POSITION         CTL_CODE(FILE_DEVICE_VIDEO,  29, METHOD_BUFFERED, FILE_ANY_ACCESS)
190 #define IOCTL_VIDEO_GET_BANK_SELECT_CODE        CTL_CODE(FILE_DEVICE_VIDEO,  30, METHOD_BUFFERED, FILE_ANY_ACCESS)
191 #define IOCTL_VIDEO_SET_PALETTE_REGISTERS       CTL_CODE(FILE_DEVICE_VIDEO,  31, METHOD_BUFFERED, FILE_ANY_ACCESS)
192 #define IOCTL_VIDEO_LOAD_AND_SET_FONT           CTL_CODE(FILE_DEVICE_VIDEO,  32, METHOD_BUFFERED, FILE_ANY_ACCESS)
193
194 typedef struct _VIDEO_PORT_CONFIG_INFO
195 {
196   ULONG  Length;
197   ULONG  SystemIoBusNumber;
198   INTERFACE_TYPE  AdapterInterfaceType;
199   ULONG  BusInterruptLevel;
200   ULONG  BusInterruptVector;
201   KINTERRUPT_MODE  InterruptMode;
202   ULONG  NumEmulatorAccessEntries;
203   PEMULATOR_ACCESS_ENTRY  EmulatorAccessEntries;
204   ULONG  EmulatorAccessEntriesContext;
205   PHYSICAL_ADDRESS  VdmPhysicalVideoMemoryAddress;
206   ULONG  VdmPhysicalVideoMemoryLength;
207   ULONG  HardwareStateSize;
208   ULONG  DmaChannel;
209   ULONG  DmaPort;
210   UCHAR  DmaShareable;
211   UCHAR  InterruptShareable;
212   BOOLEAN  Master;
213   DMA_WIDTH  DmaWidth;
214   DMA_SPEED  DmaSpeed;
215   BOOLEAN  bMapBuffers;
216   BOOLEAN  NeedPhysicalAddresses;
217   BOOLEAN  DemandMode;
218   ULONG  MaximumTransferLength;
219   ULONG  NumberOfPhysicalBreaks;
220   BOOLEAN  ScatterGather;
221   ULONG  MaximumScatterGatherChunkSize;
222 } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
223
224 typedef VP_STATUS STDCALL
225 (*PVIDEO_HW_FIND_ADAPTER)(PVOID  HwDeviceExtension,
226                           PVOID  HwContext,
227                           PWSTR  ArgumentString,
228                           PVIDEO_PORT_CONFIG_INFO  ConfigInfo,
229                           PUCHAR  Again);
230
231 typedef BOOLEAN STDCALL
232 (*PVIDEO_HW_INITIALIZE)(PVOID  HwDeviceExtension);
233
234 typedef BOOLEAN STDCALL
235 (*PVIDEO_HW_INTERRUPT)(PVOID  HwDeviceExtension);
236
237 typedef BOOLEAN STDCALL
238 (*PVIDEO_HW_START_IO)(PVOID  HwDeviceExtension,
239                       PVIDEO_REQUEST_PACKET  RequestPacket);
240
241 typedef BOOLEAN STDCALL
242 (*PVIDEO_HW_RESET_HW)(PVOID  HwDeviceExtension,
243                       ULONG  Columns,
244                       ULONG  Rows);
245
246 typedef VOID STDCALL
247 (*PVIDEO_HW_TIMER)(PVOID  HwDeviceExtension);
248
249 typedef struct _VIDEO_HW_INITIALIZATION_DATA
250 {
251   ULONG  HwInitDataSize;
252   INTERFACE_TYPE  AdapterInterfaceType;
253   PVIDEO_HW_FIND_ADAPTER  HwFindAdapter;
254   PVIDEO_HW_INITIALIZE  HwInitialize;
255   PVIDEO_HW_INTERRUPT  HwInterrupt;
256   PVIDEO_HW_START_IO  HwStartIO;
257   ULONG  HwDeviceExtensionSize;
258   ULONG  StartingDeviceNumber;
259   PVIDEO_HW_RESET_HW  HwResetHw;
260   PVIDEO_HW_TIMER  HwTimer;
261 } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
262
263 typedef VP_STATUS STDCALL
264 (*PMINIPORT_GET_REGISTRY_ROUTINE)(PVOID  HwDeviceExtension,
265                                   PVOID  Context,
266                                   PWSTR  ValueName,
267                                   PVOID  ValueData,
268                                   ULONG  ValueLength);
269
270 typedef VP_STATUS STDCALL
271 (*PMINIPORT_QUERY_DEVICE_ROUTINE)(PVOID  HwDeviceExtension,
272                                   PVOID  Context,
273                                   VIDEO_DEVICE_DATA_TYPE  DeviceDataType,
274                                   PVOID  Identifier,
275                                   ULONG  IdentiferLength,
276                                   PVOID  ConfigurationData,
277                                   ULONG  ConfigurationDataLength,
278                                   PVOID  ComponentInformation,
279                                   ULONG  ComponentInformationLength);
280
281 typedef BOOLEAN STDCALL
282 (*PMINIPORT_SYNCHRONIZE_ROUTINE)(PVOID Context);
283
284 typedef struct _VIDEO_ACCESS_RANGE
285 {
286   PHYSICAL_ADDRESS  RangeStart;
287   ULONG  RangeLength;
288   UCHAR  RangeInIoSpace;
289   UCHAR  RangeVisible;
290   UCHAR  RangeShareable;
291 } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
292
293 typedef struct _VIDEO_X86_BIOS_ARGUMENTS
294 {
295   ULONG  Eax;
296   ULONG  Ebx;
297   ULONG  Ecx;
298   ULONG  Edx;
299   ULONG  Esi;
300   ULONG  Edi;
301   ULONG  Ebp;
302 } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
303
304 typedef VOID STDCALL
305 (*PBANKED_SECTION_ROUTINE)(IN ULONG  ReadBank,
306                            IN ULONG  WriteBank,
307                            IN PVOID  Context);
308
309 typedef struct
310 {
311   USHORT  NumEntries;
312   USHORT  FirstEntry;
313   union
314     {
315       VIDEO_CLUTDATA  RgbArray;
316       ULONG  RgbLong;
317     } LookupTable[1];
318 } VIDEO_CLUT, *PVIDEO_CLUT;
319
320 typedef struct _VIDEO_MEMORY
321 {
322   PVOID RequestedVirtualAddress;
323 } VIDEO_MEMORY, *PVIDEO_MEMORY;
324
325 typedef struct _VIDEO_MEMORY_INFORMATION
326 {
327   PVOID  VideoRamBase;
328   ULONG  VideoRamLength;
329   PVOID  FrameBufferBase;
330   ULONG  FrameBufferLength;
331 } VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
332
333 typedef struct _VIDEO_MODE
334 {
335   ULONG  RequestedMode;
336 } VIDEO_MODE, *PVIDEO_MODE;
337
338 typedef struct _VIDEO_SHARE_MEMORY
339 {
340   HANDLE  ProcessHandle;
341   ULONG  ViewOffset;
342   ULONG  ViewSize;
343   PVOID  RequestedVirtualAddress;
344 } VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
345
346 ULONG STDCALL VideoPortCompareMemory(IN PVOID  Source1, IN PVOID  Source2, IN ULONG  Length);
347 VOID VideoPortDebugPrint(IN ULONG DebugPrintLevel, IN PCHAR DebugMessage, ...);
348 VP_STATUS STDCALL VideoPortDisableInterrupt(IN PVOID  HwDeviceExtension);
349 VP_STATUS STDCALL VideoPortEnableInterrupt(IN PVOID  HwDeviceExtension);
350 VOID STDCALL VideoPortFreeDeviceBase(IN PVOID  HwDeviceExtension, IN PVOID  MappedAddress);
351 ULONG STDCALL VideoPortGetBusData(IN PVOID  HwDeviceExtension,
352                           IN BUS_DATA_TYPE  BusDataType,
353                           IN ULONG  SlotNumber,
354                           OUT PVOID  Buffer,
355                           IN ULONG  Offset,
356                           IN ULONG  Length);
357 UCHAR STDCALL VideoPortGetCurrentIrql(VOID);
358 PVOID STDCALL VideoPortGetDeviceBase(IN PVOID  HwDeviceExtension,
359                              IN PHYSICAL_ADDRESS  IoAddress,
360                              IN ULONG  NumberOfUchars,
361                              IN UCHAR  InIoSpace);
362 VP_STATUS STDCALL VideoPortGetDeviceData(IN PVOID  HwDeviceExtension,
363                                  IN VIDEO_DEVICE_DATA_TYPE  DeviceDataType,
364                                  IN PMINIPORT_QUERY_DEVICE_ROUTINE  CallbackRoutine,
365                                  IN PVOID Context);
366 VP_STATUS STDCALL VideoPortGetAccessRanges(IN PVOID  HwDeviceExtension,
367                                    IN ULONG  NumRequestedResources,
368                                    IN PIO_RESOURCE_DESCRIPTOR  RequestedResources OPTIONAL,
369                                    IN ULONG  NumAccessRanges,
370                                    IN PVIDEO_ACCESS_RANGE  AccessRanges,
371                                    IN PVOID  VendorId,
372                                    IN PVOID  DeviceId,
373                                    IN PULONG  Slot);
374 VP_STATUS STDCALL VideoPortGetRegistryParameters(IN PVOID  HwDeviceExtension,
375                                          IN PWSTR  ParameterName,
376                                          IN UCHAR  IsParameterFileName,
377                                          IN PMINIPORT_GET_REGISTRY_ROUTINE  GetRegistryRoutine,
378                                          IN PVOID  Context);
379 ULONG STDCALL VideoPortInitialize(IN PVOID  Context1,
380                           IN PVOID  Context2,
381                           IN PVIDEO_HW_INITIALIZATION_DATA  HwInitializationData,
382                           IN PVOID  HwContext);
383 VP_STATUS STDCALL VideoPortInt10(IN PVOID  HwDeviceExtension,
384                          IN PVIDEO_X86_BIOS_ARGUMENTS  BiosArguments);
385 VOID STDCALL VideoPortLogError(IN PVOID  HwDeviceExtension,
386                        IN PVIDEO_REQUEST_PACKET  Vrp OPTIONAL,
387                        IN VP_STATUS  ErrorCode,
388                        IN ULONG  UniqueId);
389 VP_STATUS STDCALL VideoPortMapBankedMemory(IN PVOID  HwDeviceExtension,
390                                    IN PHYSICAL_ADDRESS  PhysicalAddress,
391                                    IN PULONG  Length,
392                                    IN PULONG  InIoSpace,
393                                    OUT PVOID  *VirtualAddress,
394                                    IN ULONG  BankLength,
395                                    IN UCHAR  ReadWriteBank,
396                                    IN PBANKED_SECTION_ROUTINE  BankRoutine,
397                                    IN PVOID  Context);
398 VP_STATUS STDCALL VideoPortMapMemory(IN PVOID  HwDeviceExtension,
399                              IN PHYSICAL_ADDRESS  PhysicalAddress,
400                              IN PULONG  Length,
401                              IN PULONG  InIoSpace,
402                              OUT PVOID  *VirtualAddress);
403 VOID STDCALL VideoPortMoveMemory(OUT PVOID  Destination,
404                          IN PVOID  Source,
405                          IN ULONG  Length);
406 UCHAR STDCALL VideoPortReadPortUchar(IN PUCHAR  Port);
407 USHORT STDCALL VideoPortReadPortUshort(IN PUSHORT Port);
408 ULONG STDCALL VideoPortReadPortUlong(IN PULONG Port);
409 VOID STDCALL VideoPortReadPortBufferUchar(IN PUCHAR  Port, OUT PUCHAR  Buffer, IN ULONG  Count);
410 VOID STDCALL VideoPortReadPortBufferUshort(IN PUSHORT Port, OUT PUSHORT Buffer, IN ULONG Count);
411 VOID STDCALL VideoPortReadPortBufferUlong(IN PULONG Port, OUT PULONG Buffer, IN ULONG Count);
412 UCHAR STDCALL VideoPortReadRegisterUchar(IN PUCHAR Register);
413 USHORT STDCALL VideoPortReadRegisterUshort(IN PUSHORT Register);
414 ULONG STDCALL VideoPortReadRegisterUlong(IN PULONG Register);
415 VOID STDCALL VideoPortReadRegisterBufferUchar(IN PUCHAR  Register, OUT PUCHAR  Buffer, IN ULONG  Count);
416 VOID STDCALL VideoPortReadRegisterBufferUshort(IN PUSHORT  Register, OUT PUSHORT  Buffer, IN ULONG  Count);
417 VOID STDCALL VideoPortReadRegisterBufferUlong(IN PULONG  Register, OUT PULONG  Buffer, IN ULONG  Count);
418 BOOLEAN STDCALL VideoPortScanRom(IN PVOID  HwDeviceExtension, 
419                          IN PUCHAR  RomBase,
420                          IN ULONG  RomLength,
421                          IN PUCHAR  String);
422 ULONG STDCALL VideoPortSetBusData(IN PVOID  HwDeviceExtension,
423                           IN BUS_DATA_TYPE  BusDataType,
424                           IN ULONG  SlotNumber,
425                           IN PVOID  Buffer,
426                           IN ULONG  Offset,
427                           IN ULONG  Length);
428 VP_STATUS STDCALL VideoPortSetRegistryParameters(IN PVOID  HwDeviceExtension,
429                                          IN PWSTR  ValueName,
430                                          IN PVOID  ValueData,
431                                          IN ULONG  ValueLength);
432 VP_STATUS STDCALL VideoPortSetTrappedEmulatorPorts(IN PVOID  HwDeviceExtension,
433                                            IN ULONG  NumAccessRanges,
434                                            IN PVIDEO_ACCESS_RANGE  AccessRange);
435 VOID STDCALL VideoPortStallExecution(IN ULONG  Microseconds);
436 VOID STDCALL VideoPortStartTimer(IN PVOID  HwDeviceExtension);
437 VOID STDCALL VideoPortStopTimer(IN PVOID  HwDeviceExtension);
438 BOOLEAN STDCALL VideoPortSynchronizeExecution(IN PVOID  HwDeviceExtension,
439                                       IN VIDEO_SYNCHRONIZE_PRIORITY  Priority,
440                                       IN PMINIPORT_SYNCHRONIZE_ROUTINE  SynchronizeRoutine,
441                                       OUT PVOID  Context);
442 VP_STATUS STDCALL VideoPortUnmapMemory(IN PVOID  HwDeviceExtension,
443                                IN PVOID  VirtualAddress,
444                                IN HANDLE  ProcessHandle);
445 VP_STATUS STDCALL VideoPortVerifyAccessRanges(IN PVOID  HwDeviceExtension,
446                                       IN ULONG  NumAccessRanges,
447                                       IN PVIDEO_ACCESS_RANGE  AccessRanges);
448 VOID STDCALL VideoPortWritePortUchar(IN PUCHAR  Port, IN UCHAR  Value);
449 VOID STDCALL VideoPortWritePortUshort(IN PUSHORT  Port, IN USHORT  Value);
450 VOID STDCALL VideoPortWritePortUlong(IN PULONG Port, IN ULONG Value);
451 VOID STDCALL VideoPortWritePortBufferUchar(IN PUCHAR  Port, IN PUCHAR  Buffer, IN ULONG  Count);
452 VOID STDCALL VideoPortWritePortBufferUshort(IN PUSHORT  Port, IN PUSHORT  Buffer, IN ULONG  Count);
453 VOID STDCALL VideoPortWritePortBufferUlong(IN PULONG  Port, IN PULONG  Buffer, IN ULONG  Count);
454 VOID STDCALL VideoPortWriteRegisterUchar(IN PUCHAR  Register, IN UCHAR  Value);
455 VOID STDCALL VideoPortWriteRegisterUshort(IN PUSHORT  Register, IN USHORT  Value);
456 VOID STDCALL VideoPortWriteRegisterUlong(IN PULONG  Register, IN ULONG  Value);
457 VOID STDCALL VideoPortWriteRegisterBufferUchar(IN PUCHAR  Register, IN PUCHAR  Buffer, IN ULONG  Count);
458 VOID STDCALL VideoPortWriteRegisterBufferUshort(IN PUSHORT  Register, IN PUSHORT  Buffer, IN ULONG  Count);
459 VOID STDCALL VideoPortWriteRegisterBufferUlong(IN PULONG  Register, IN PULONG  Buffer, IN ULONG  Count);
460 VOID STDCALL VideoPortZeroMemory(OUT PVOID  Destination, IN ULONG  Length);
461 VOID STDCALL VideoPortZeroDeviceMemory(OUT PVOID  Destination, IN ULONG  Length);
462
463