source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/video.h@ 1166

Last change on this file since 1166 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

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