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