43 *AccessRangeCount = 0;
50 DeviceExtension->SystemIoBusNumber,
51 DeviceExtension->SystemIoSlotNumber,
60 DriverExtension->InitializationData.HwGetLegacyResources(PciConfig.VendorID,
67 *AccessRanges =
DriverExtension->InitializationData.HwLegacyResourceList;
68 *AccessRangeCount =
DriverExtension->InitializationData.HwLegacyResourceCount;
71 INFO_(VIDEOPRT,
"Got %d legacy access ranges\n", *AccessRangeCount);
86 ULONG AccessRangeCount, ListSize,
i;
99 if (!AccessRangeCount)
102 return Irp->IoStatus.Status;
120 ResList->
List[0].
Count += AccessRangeCount;
125 Irp->IoStatus.Information = 0;
145 ResList->
List[0].
Count = AccessRangeCount;
150 for (
i = 0;
i < AccessRangeCount;
i++)
153 CurrentDescriptor->
Option = 0;
155 if (AccessRanges[
i].RangeInIoSpace)
163 CurrentDescriptor->
Flags = 0;
170 CurrentDescriptor->
u.
Port.Alignment = 1;
181 CurrentDescriptor->
u.
Memory.Alignment = 1;
218 WARN_(VIDEOPRT,
"ZwOpenSection() failed! (0x%x)\n",
Status);
224 Status = ZwMapViewOfSection(hMemObj,
237 WARN_(VIDEOPRT,
"ZwMapViewOfSection() failed! (0x%x)\n",
Status);
259 INFO_(VIDEOPRT,
"- IoAddress: %lx\n", IoAddress.u.LowPart);
260 INFO_(VIDEOPRT,
"- NumberOfUchars: %lx\n", NumberOfUchars);
261 INFO_(VIDEOPRT,
"- InIoSpace: %x\n", InIoSpace);
266 INFO_(VIDEOPRT,
"VIDEO_MEMORY_SPACE_P6CACHE not supported, turning off\n");
272 INFO_(VIDEOPRT,
"ProcessHandle is not NULL (0x%x) but InIoSpace does not have " 273 "VIDEO_MEMORY_SPACE_USER_MODE set! Setting " 274 "VIDEO_MEMORY_SPACE_USER_MODE.\n",
280 INFO_(VIDEOPRT,
"ProcessHandle is NULL (0x%x) but InIoSpace does have " 281 "VIDEO_MEMORY_SPACE_USER_MODE set! Setting ProcessHandle " 282 "to NtCurrentProcess()\n",
288 !
IsListEmpty(&DeviceExtension->AddressMappingListHead))
290 Entry = DeviceExtension->AddressMappingListHead.Flink;
291 while (
Entry != &DeviceExtension->AddressMappingListHead)
298 NumberOfUchars <= AddressMapping->NumberOfUchars)
314 DeviceExtension->AdapterInterfaceType,
315 DeviceExtension->SystemIoBusNumber,
340 MappedAddress =
NULL;
348 WARN_(VIDEOPRT,
"IntVideoPortMapPhysicalMemory() failed! (0x%x)\n", NtStatus);
353 INFO_(VIDEOPRT,
"Mapped user address = 0x%08x\n", MappedAddress);
363 if (MappedAddress !=
NULL)
376 if (AddressMapping ==
NULL)
377 return MappedAddress;
386 &DeviceExtension->AddressMappingListHead,
387 &AddressMapping->
List);
390 return MappedAddress;
408 Entry = DeviceExtension->AddressMappingListHead.Flink;
409 while (
Entry != &DeviceExtension->AddressMappingListHead)
441 WARN_(VIDEOPRT,
"Warning: Mapping for address 0x%p not found!\n", MappedAddress);
458 TRACE_(VIDEOPRT,
"VideoPortGetDeviceBase\n");
477 TRACE_(VIDEOPRT,
"VideoPortFreeDeviceBase\n");
499 TRACE_(VIDEOPRT,
"VideoPortMapBankedMemory\n");
520 TRACE_(VIDEOPRT,
"VideoPortMapMemory\n");
545 TRACE_(VIDEOPRT,
"VideoPortFreeDeviceBase\n");
561 IN ULONG NumRequestedResources,
571 ULONG FunctionNumber;
575 UINT AssignedCount = 0;
584 ULONG LegacyAccessRangeCount;
590 TRACE_(VIDEOPRT,
"VideoPortGetAccessRanges(%d, %p, %d, %p)\n", NumRequestedResources, RequestedResources, NumAccessRanges, AccessRanges);
596 if (NumRequestedResources == 0)
619 VendorIdToFind = VendorId !=
NULL ? *(
PUSHORT)VendorId : 0;
620 DeviceIdToFind = DeviceId !=
NULL ? *(
PUSHORT)DeviceId : 0;
622 if (VendorIdToFind == 0 && DeviceIdToFind == 0)
628 INFO_(VIDEOPRT,
"Looking for VendorId 0x%04x DeviceId 0x%04x\n",
629 VendorIdToFind, DeviceIdToFind);
634 PciSlotNumber.
u.
bits.Reserved = 0;
638 for (FunctionNumber = 0; FunctionNumber <
PCI_MAX_FUNCTION; FunctionNumber++)
640 INFO_(VIDEOPRT,
"- Function number: %d\n", FunctionNumber);
641 PciSlotNumber.
u.
bits.FunctionNumber = FunctionNumber;
650 INFO_(VIDEOPRT,
"- Slot 0x%02x (Device %d Function %d) VendorId 0x%04x " 653 PciSlotNumber.
u.
bits.DeviceNumber,
654 PciSlotNumber.
u.
bits.FunctionNumber,
658 if ((VendorIdToFind == 0 ||
Config.VendorID == VendorIdToFind) &&
659 (DeviceIdToFind == 0 ||
Config.DeviceID == DeviceIdToFind))
661 DeviceAndVendorFound =
TRUE;
666 if (DeviceAndVendorFound)
break;
670 WARN_(VIDEOPRT,
"Didn't find device.\n");
686 WARN_(VIDEOPRT,
"HalAssignSlotResources failed with status %x.\n",
Status);
694 &LegacyAccessRanges, &LegacyAccessRangeCount);
698 if (NumAccessRanges < LegacyAccessRangeCount)
700 ERR_(VIDEOPRT,
"Too many legacy access ranges found\n");
705 AssignedCount = LegacyAccessRangeCount;
721 ResReqList->
List[0].
Count = NumRequestedResources;
752 INFO_(VIDEOPRT,
"InterfaceType %u BusNumber List %u Device BusNumber %u Version %u Revision %u\n",
765 AssignedCount >= NumAccessRanges)
767 ERR_(VIDEOPRT,
"Too many access ranges found\n");
772 INFO_(VIDEOPRT,
"Memory range starting at 0x%08x length 0x%08x\n",
774 AccessRanges[AssignedCount].RangeStart =
Descriptor->u.Memory.Start;
775 AccessRanges[AssignedCount].RangeLength =
Descriptor->u.Memory.Length;
776 AccessRanges[AssignedCount].RangeInIoSpace = 0;
777 AccessRanges[AssignedCount].RangeVisible = 0;
778 AccessRanges[AssignedCount].RangeShareable =
780 AccessRanges[AssignedCount].RangePassive = 0;
785 INFO_(VIDEOPRT,
"Port range starting at 0x%04x length %d\n",
787 AccessRanges[AssignedCount].RangeStart =
Descriptor->u.Port.Start;
788 AccessRanges[AssignedCount].RangeLength =
Descriptor->u.Port.Length;
789 AccessRanges[AssignedCount].RangeInIoSpace = 1;
790 AccessRanges[AssignedCount].RangeVisible = 0;
791 AccessRanges[AssignedCount].RangeShareable =
793 AccessRanges[AssignedCount].RangePassive = 0;
834 ULONG ResourceListSize;
837 TRACE_(VIDEOPRT,
"VideoPortVerifyAccessRanges\n");
847 WARN_(VIDEOPRT,
"ExAllocatePool() failed\n");
857 ResourceList->List[0].PartialResourceList.Count = NumAccessRanges;
858 for (
i = 0;
i < NumAccessRanges;
i++, AccessRanges++)
860 PartialDescriptor = &
ResourceList->List[0].PartialResourceList.PartialDescriptors[
i];
861 if (AccessRanges->RangeInIoSpace)
864 PartialDescriptor->
u.
Port.Start = AccessRanges->RangeStart;
865 PartialDescriptor->
u.
Port.Length = AccessRanges->RangeLength;
870 PartialDescriptor->
u.
Memory.Start = AccessRanges->RangeStart;
871 PartialDescriptor->
u.
Memory.Length = AccessRanges->RangeLength;
873 if (AccessRanges->RangeShareable)
877 PartialDescriptor->
Flags = 0;
910 TRACE_(VIDEOPRT,
"VideoPortGetDeviceData\n");
926 TRACE_(VIDEOPRT,
"VideoPortAllocatePool\n");
952 TRACE_(VIDEOPRT,
"VideoPortAllocateBuffer\n");
966 TRACE_(VIDEOPRT,
"VideoPortReleaseBuffer\n");
1009 pVrp->OutputBuffer =
NULL;
1023 pVrp->OutputBuffer =
Buffer;
1024 pVrp->OutputBufferLength = pVrp->InputBufferLength;
1081 TRACE_(VIDEOPRT,
"VideoPortGetBusData\n");
1085 if (BusDataType !=
Cmos)
1116 TRACE_(VIDEOPRT,
"VideoPortSetBusData\n");
1120 if (BusDataType !=
Cmos)
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
#define ERROR_INVALID_PARAMETER
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define VIDEO_MEMORY_SPACE_DENSE
VP_STATUS NTAPI VideoPortAllocateBuffer(IN PVOID HwDeviceExtension, IN ULONG Size, OUT PVOID *Buffer)
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID NTAPI VideoPortFreePool(IN PVOID HwDeviceExtension, IN PVOID Ptr)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
NTSTATUS NTAPI IntVideoPortGetLegacyResources(IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, IN PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension, OUT PVIDEO_ACCESS_RANGE *AccessRanges, OUT PULONG AccessRangeCount)
ULONG NTAPI VideoPortGetBusData(IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, IN ULONG SlotNumber, OUT PVOID Buffer, IN ULONG Offset, IN ULONG Length)
struct _IO_RESOURCE_DESCRIPTOR::@1529::@1530 Port
#define OBJ_CASE_INSENSITIVE
IN BOOLEAN OUT PSTR Buffer
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG _In_ ULONG Protect
#define ERROR_INVALID_FUNCTION
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
#define VIDEO_MEMORY_SPACE_P6CACHE
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
enum _BUS_DATA_TYPE BUS_DATA_TYPE
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
VOID NTAPI VideoPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
PHYSICAL_ADDRESS IoAddress
NTSTATUS NTAPI IoReportResourceForDetection(IN PDRIVER_OBJECT DriverObject, IN PCM_RESOURCE_LIST DriverList OPTIONAL, IN ULONG DriverListSize OPTIONAL, IN PDEVICE_OBJECT DeviceObject OPTIONAL, IN PCM_RESOURCE_LIST DeviceList OPTIONAL, IN ULONG DeviceListSize OPTIONAL, OUT PBOOLEAN ConflictDetected)
struct _VIDEO_PORT_DEVICE_EXTENSTION * PVIDEO_PORT_DEVICE_EXTENSION
PVOID NTAPI VideoPortLockBuffer(IN PVOID HwDeviceExtension, IN PVOID BaseAddress, IN ULONG Length, IN VP_LOCK_OPERATION Operation)
VP_STATUS NTAPI VideoPortMapMemory(IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS PhysicalAddress, IN PULONG Length, IN PULONG InIoSpace, OUT PVOID *VirtualAddress)
#define ERROR_NOT_ENOUGH_MEMORY
PCM_RESOURCE_LIST AllocatedResources
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
union _PCI_SLOT_NUMBER::@3802 u
#define VIDEO_PORT_GET_DEVICE_EXTENSION(MiniportExtension)
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_opt_ PCUNICODE_STRING UnicodeString
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@378 u
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
#define OBJ_KERNEL_HANDLE
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR
NTSTATUS NTAPI IntVideoPortMapPhysicalMemory(IN HANDLE Process, IN PHYSICAL_ADDRESS PhysicalAddress, IN ULONG SizeInBytes, IN ULONG Protect, IN OUT PVOID *VirtualAddress OPTIONAL)
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CmResourceTypePort
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
VP_STATUS NTAPI VideoPortGetAccessRanges(IN PVOID HwDeviceExtension, IN ULONG NumRequestedResources, IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL, IN ULONG NumAccessRanges, IN PVIDEO_ACCESS_RANGE AccessRanges, IN PVOID VendorId, IN PVOID DeviceId, OUT PULONG Slot)
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine
CM_PARTIAL_RESOURCE_LIST PartialResourceList
_In_ PDEVICE_OBJECT DeviceObject
#define SECTION_ALL_ACCESS
VOID(NTAPI * PBANKED_SECTION_ROUTINE)(IN ULONG ReadBank, IN ULONG WriteBank, IN PVOID Context)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define TAG_VIDEO_PORT_BUFFER
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@378::@380 Port
PDEVICE_OBJECT PhysicalDeviceObject
#define VIDEO_RANGE_PASSIVE_DECODE
INTERFACE_TYPE InterfaceType
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@378::@383 Memory
#define VIDEO_RANGE_10_BIT_DECODE
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
VP_STATUS(NTAPI * PMINIPORT_QUERY_DEVICE_ROUTINE)(IN PVOID HwDeviceExtension, IN PVOID Context, IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, IN PVOID Identifier, IN ULONG IdentifierLength, IN PVOID ConfigurationData, IN ULONG ConfigurationDataLength, IN OUT PVOID ComponentInformation, IN ULONG ComponentInformationLength)
VP_STATUS NTAPI VideoPortSetTrappedEmulatorPorts(IN PVOID HwDeviceExtension, IN ULONG NumAccessRanges, IN PVIDEO_ACCESS_RANGE AccessRange)
NTHALAPI NTSTATUS NTAPI HalAssignSlotResources(PUNICODE_STRING, PUNICODE_STRING, PDRIVER_OBJECT, PDEVICE_OBJECT, INTERFACE_TYPE, ULONG, ULONG, PCM_RESOURCE_LIST *)
#define CM_RESOURCE_PORT_10_BIT_DECODE
enum _VP_LOCK_OPERATION VP_LOCK_OPERATION
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
union _IO_RESOURCE_DESCRIPTOR::@1529 u
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
PVOID NTAPI VideoPortAllocatePool(IN PVOID HwDeviceExtension, IN VP_POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
#define NtCurrentProcess()
struct _IO_RESOURCE_DESCRIPTOR IO_RESOURCE_DESCRIPTOR
IO_RESOURCE_DESCRIPTOR Descriptors[1]
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
BOOLEAN NTAPI VideoPortLockPages(IN PVOID HwDeviceExtension, IN OUT PVIDEO_REQUEST_PACKET pVrp, IN PEVENT pUEvent, IN PEVENT pDisplayEvent, IN DMA_FLAGS DmaFlags)
VP_STATUS NTAPI VideoPortUnmapMemory(IN PVOID HwDeviceExtension, IN PVOID VirtualAddress, IN HANDLE ProcessHandle)
#define NT_SUCCESS(StatCode)
#define STATUS_NO_SUCH_DEVICE
#define CM_RESOURCE_PORT_PASSIVE_DECODE
VOID NTAPI IoFreeMdl(PMDL Mdl)
struct _PCI_SLOT_NUMBER::@3802::@3803 bits
#define ExAllocatePoolWithTag(hernya, size, tag)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
struct _IO_RESOURCE_DESCRIPTOR * PIO_RESOURCE_DESCRIPTOR
ULONG NTAPI HalGetBusDataByOffset(IN BUS_DATA_TYPE BusDataType, IN ULONG BusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
ULONG NTAPI VideoPortSetBusData(IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
#define ExAllocatePool(type, size)
_Must_inspect_result_ _In_ WDFCMRESLIST List
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
VOID NTAPI VideoPortUnlockBuffer(IN PVOID HwDeviceExtension, IN PVOID Mdl)
enum _VP_POOL_TYPE VP_POOL_TYPE
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
BOOLEAN NTAPI HalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PHYSICAL_ADDRESS BusAddress, IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress)
INTERFACE_TYPE InterfaceType
PDRIVER_OBJECT DriverObject
PMDL NTAPI IoAllocateMdl(IN PVOID VirtualAddress, IN ULONG Length, IN BOOLEAN SecondaryBuffer, IN BOOLEAN ChargeQuota, IN PIRP Irp)
_In_ ULONG _In_ ULONG Offset
VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN LOCK_OPERATION Operation)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PVOID NTAPI VideoPortGetDeviceBase(IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfUchars, IN UCHAR InIoSpace)
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
VOID NTAPI VideoPortReleaseBuffer(IN PVOID HwDeviceExtension, IN PVOID Ptr)
enum _VIDEO_DEVICE_DATA_TYPE VIDEO_DEVICE_DATA_TYPE
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
#define CmResourceTypeInterrupt
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
#define VIDEO_MEMORY_SPACE_USER_MODE
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
PPCI_DRIVER_EXTENSION DriverExtension
enum _DMA_FLAGS DMA_FLAGS
VP_STATUS NTAPI VideoPortVerifyAccessRanges(IN PVOID HwDeviceExtension, IN ULONG NumAccessRanges, IN PVIDEO_ACCESS_RANGE AccessRanges)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTHALAPI ULONG NTAPI HalGetBusData(BUS_DATA_TYPE, ULONG, ULONG, PVOID, ULONG)
#define RtlZeroMemory(Destination, Length)
_In_ FLT_SET_CONTEXT_OPERATION Operation
#define InitializeObjectAttributes(p, n, a, r, s)
struct _LARGE_INTEGER::@2247 u
#define RtlCopyMemory(Destination, Source, Length)
UNICODE_STRING RegistryPath
struct _IO_RESOURCE_DESCRIPTOR::@1529::@1531 Memory
_In_ PCHAR _In_ ULONG DeviceNumber
NTSYSAPI NTSTATUS NTAPI ZwOpenSection(_Out_ PHANDLE SectionHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
#define CmResourceTypeMemory
_In_ HANDLE ProcessHandle
INTERFACE_TYPE AdapterInterfaceType
ULONG NTAPI HalSetBusDataByOffset(IN BUS_DATA_TYPE BusDataType, IN ULONG BusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
NTSTATUS NTAPI IntVideoPortFilterResourceRequirements(IN PDEVICE_OBJECT DeviceObject, IN PIO_STACK_LOCATION IrpStack, IN PIRP Irp)
#define ERROR_DEV_NOT_EXIST
VP_STATUS NTAPI VideoPortMapBankedMemory(IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS PhysicalAddress, IN PULONG Length, IN PULONG InIoSpace, OUT PVOID *VirtualAddress, IN ULONG BankLength, IN UCHAR ReadWriteBank, IN PBANKED_SECTION_ROUTINE BankRoutine, IN PVOID Context)
base of all file and directory entries
PDEVICE_OBJECT DeviceObject
NTSTATUS NTAPI IoAssignResources(IN PUNICODE_STRING RegistryPath, IN PUNICODE_STRING DriverClassName, IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT DeviceObject, IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources, IN OUT PCM_RESOURCE_LIST *AllocatedResources)
PVOID NTAPI IntVideoPortMapMemory(IN PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension, IN PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfUchars, IN ULONG InIoSpace, IN HANDLE ProcessHandle, OUT VP_STATUS *Status)
PHYSICAL_ADDRESS RangeStart
VOID NTAPI IntVideoPortUnmapMemory(IN PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension, IN PVOID MappedAddress)
VP_STATUS NTAPI VideoPortGetDeviceData(IN PVOID HwDeviceExtension, IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, IN PVOID Context)
PULONG MinorVersion OPTIONAL