13#define NDEBUG_USBPORT_CORE
14#define NDEBUG_USBPORT_INTERRUPT
15#define NDEBUG_USBPORT_TIMER
35 DPRINT(
"USBPORT_FindUSB2Controller: FdoDevice - %p\n", FdoDevice);
56 USB2FdoEntry = USB2FdoEntry->
Flink;
70 DPRINT(
"USBPORT_AddUSB1Fdo: FdoDevice - %p\n", FdoDevice);
86 DPRINT(
"USBPORT_AddUSB2Fdo: FdoDevice - %p\n", FdoDevice);
103 DPRINT(
"USBPORT_RemoveUSBxFdo: FdoDevice - %p\n", FdoDevice);
124 DPRINT(
"USBPORT_IsCompanionFdoExtension: USB2Fdo - %p, USB1FdoExtension - %p\n",
128 USB2FdoExtension = USB2FdoDevice->DeviceExtension;
130 return USB2FdoExtension->
BusNumber == USB1FdoExtension->BusNumber &&
131 USB2FdoExtension->
PciDeviceNumber == USB1FdoExtension->PciDeviceNumber;
142 ULONG NumControllers = 0;
147 DPRINT(
"USBPORT_FindCompanionControllers: USB2Fdo - %p, IsObRefer - %x, IsFDOs - %x\n",
171 DPRINT(
"USBPORT_FindCompanionControllers: NumControllers - %x\n",
183 if (!ControllersList)
190 ControllersList->
Count = NumControllers;
227 return ControllersList;
234 DPRINT(
"USBPORT_NtStatusToMpStatus: NtStatus - %x\n", NtStatus);
259 DPRINT(
"USBPORT_SetRegistryKeyValue: ValueNameString - %S\n",
310 DPRINT(
"USBPORT_GetRegistryKeyValue: UseDriverKey - %x, SourceString - %S, LengthStr - %x, Buffer - %p, BufferLength - %x\n",
384 DPRINT(
"USBPORT_GetMiniportRegistryKeyValue: MiniPortExtension - %p, UseDriverKey - %x, SourceString - %S, LengthStr - %x, Buffer - %p, BufferLength - %x\n",
417 ULONG BytesReadWrite;
419 DPRINT(
"USBPORT_GetSetConfigSpaceData ...\n");
429 BytesReadWrite = (*
FdoExtension->BusInterface.GetBusData)
438 BytesReadWrite = (*
FdoExtension->BusInterface.SetBusData)
446 if (BytesReadWrite ==
Length)
466 DPRINT(
"USBPORT_ReadWriteConfigSpace: ...\n");
492 DPRINT1(
"USBPORT_USBDStatusToNtStatus: Urb - %p, USBDStatus - %x\n",
498 Urb->UrbHeader.Status = USBDStatus;
548 DPRINT(
"USBPORT_Wait: Milliseconds - %x\n", Milliseconds);
563 DPRINT_INT(
"USBPORT_MiniportInterrupts: IsEnable - %p\n", IsEnable);
598 DPRINT_INT(
"USBPORT_SoftInterruptDpc: ...\n");
640 DPRINT_CORE(
"USBPORT_InvalidateControllerHandler: Invalidate Type - %x\n",
648 DPRINT1(
"USBPORT_InvalidateControllerHandler: INVALIDATE_CONTROLLER_RESET UNIMPLEMENTED. FIXME.\n");
652 DPRINT1(
"USBPORT_InvalidateControllerHandler: INVALIDATE_CONTROLLER_SURPRISE_REMOVE UNIMPLEMENTED. FIXME.\n");
676 DPRINT(
"USBPORT_InvalidateController: Invalidate Type - %x\n",
Type);
695 DPRINT1(
"USBPORT_NotifyDoubleBuffer: UNIMPLEMENTED. FIXME.\n");
709 DPRINT(
"USBPORT_WorkerRequestDpc: ...\n");
734 DPRINT_CORE(
"USBPORT_DoneTransfer: Transfer - %p\n", Transfer);
736 Endpoint = Transfer->Endpoint;
810 if (IsHasTransfers && !TransferCount)
845 DPRINT_CORE(
"USBPORT_QueueDoneTransfer: Transfer - %p, USBDStatus - %p\n",
849 FdoDevice = Transfer->Endpoint->FdoDevice;
853 Transfer->USBDStatus = USBDStatus;
856 &Transfer->TransferLink,
952 DPRINT_CORE(
"USBPORT_IsrDpcHandler: IsDpcHandler - %x\n", IsDpcHandler);
980 DPRINT_CORE(
"USBPORT_IsrDpcHandler: Endpoint - %p\n", Endpoint);
989 if (ControllerSuspended)
992 EndpointReady =
TRUE;
1004 EndpointReady =
TRUE;
1020 DPRINT_CORE(
"USBPORT_IsrDpcHandler: Endpoint->StateLast - %x\n",
1040 else if (!ControllerSuspended)
1076 DPRINT_INT(
"USBPORT_IsrDpc: DeferredContext - %p, SystemArgument2 - %p\n",
1124 DPRINT_INT(
"USBPORT_InterruptService: FdoExtension[%p]->Flags - %08X\n",
1172 DPRINT_CORE(
"USBPORT_WorkerThreadHandler: ...\n");
1204 DPRINT_CORE(
"USBPORT_WorkerThreadHandler: Endpoint - %p\n", Endpoint);
1263 PVOID RootHubInitContext;
1267 DPRINT(
"USBPORT_DoRootHubCallback: FdoDevice - %p\n", FdoDevice);
1276 RootHubInitCallback =
PdoExtension->RootHubInitCallback;
1281 if (RootHubInitCallback)
1283 RootHubInitCallback(RootHubInitContext);
1287 DPRINT(
"USBPORT_DoRootHubCallback: exit\n");
1303 DPRINT(
"USBPORT_SynchronizeRootHubCallback: FdoDevice - %p, Usb2FdoDevice - %p\n",
1310 if (Usb2FdoDevice ==
NULL &&
1319 DPRINT(
"USBPORT_SynchronizeRootHubCallback: exit\n");
1325 DPRINT(
"USBPORT_SynchronizeRootHubCallback: FdoExtension->Flags - %p\n",
1345 FdoExtension->Flags &= ~USBPORT_FLAG_PWR_AND_CHIRP_LOCK;
1356 if (CompanionControllersList)
1360 for (ix = 0; ix < CompanionControllersList->
Count; ++ix)
1362 CompanionFdoExtension = ((*Entry)->DeviceExtension);
1381 Usb2FdoExtension = Usb2FdoDevice->DeviceExtension;
1398 DPRINT(
"USBPORT_SynchronizeRootHubCallback: exit\n");
1413 FdoDevice = StartContext;
1467 DPRINT(
"USBPORT_CreateWorkerThread ...\n");
1495 DPRINT(
"USBPORT_StopWorkerThread ...\n");
1516 DPRINT_TIMER(
"USBPORT_SynchronizeControllersStart: FdoDevice - %p\n",
1536 DPRINT_TIMER(
"USBPORT_SynchronizeControllersStart: Flags - %p\n",
1545 DPRINT_TIMER(
"USBPORT_SynchronizeControllersStart: USB2FdoDevice - %p\n",
1564 USB2FdoDevice =
NULL;
1586 DPRINT_TIMER(
"USBPORT_SynchronizeControllersStart: exit\n");
1605 DPRINT_TIMER(
"USBPORT_TimerDpc: Dpc - %p, DeferredContext - %p\n",
1617 DPRINT_TIMER(
"USBPORT_TimerDpc: Flags - %p, TimerFlags - %p\n",
1656 DPRINT_TIMER(
"USBPORT_TimerDpc: USBPORT_TimeoutAllEndpoints UNIMPLEMENTED.\n");
1658 DPRINT_TIMER(
"USBPORT_TimerDpc: USBPORT_CheckIdleEndpoints UNIMPLEMENTED.\n");
1670 DPRINT(
"USBPORT_TimerDpc: IdleLockCounter - %x, IdleQueueItem - %p\n",
1715 ULONG TimeIncrement;
1718 DPRINT_TIMER(
"USBPORT_StartTimer: FdoDevice - %p, Time - %x\n",
1732 DueTime.QuadPart -= 10000 *
Time + (TimeIncrement - 1);
1756 ULONG StartBufferPA;
1758 DPRINT(
"USBPORT_AllocateCommonBuffer: FdoDevice - %p, BufferLength - %p\n",
1782 StartBufferVA = BaseVA & ~(
PAGE_SIZE - 1);
1790 HeaderBuffer->
BaseVA = BaseVA;
1800 return HeaderBuffer;
1812 DPRINT(
"USBPORT_FreeCommonBuffer: ...\n");
1820 HeaderBuffer->Length,
1821 HeaderBuffer->LogicalAddress,
1822 (
PVOID)HeaderBuffer->VirtualAddress,
1835 DPRINT(
"USBPORT_FindMiniPort: ...\n");
1849 DPRINT(
"USBPORT_FindMiniPort: find MiniPortInterface - %p\n",
1860 return MiniPortInterface;
1874 WCHAR CharDeviceName[64];
1882 DPRINT(
"USBPORT_AddDevice: DriverObject - %p, PhysicalDeviceObject - %p\n",
1888 if (!MiniPortInterface)
1890 DPRINT(
"USBPORT_AddDevice: USBPORT_FindMiniPort not found MiniPortInterface\n");
1898 sizeof(CharDeviceName),
1899 L"\\Device\\USBFDO-%d",
1934 DPRINT1(
"USBPORT_AddDevice: failed to create %wZ, Status %x\n",
1942 DPRINT(
"USBPORT_AddDevice: created device %p <%wZ>, Status %x\n",
1972 DPRINT(
"USBPORT_AddDevice: Usb2Extension - %p\n",
2009 DPRINT1(
"USBPORT_Unload: FIXME!\n");
2013 if (!MiniPortInterface)
2015 DPRINT(
"USBPORT_Unload: CRITICAL ERROR!!! Not found MiniPortInterface\n");
2019 DPRINT1(
"USBPORT_Unload: UNIMPLEMENTED. FIXME.\n");
2038 DPRINT_CORE(
"USBPORT_MiniportCompleteTransfer: USBDStatus - %x, TransferLength - %x\n",
2044 TransferParameters);
2075 DPRINT1(
"USBPORT_MiniportCompleteTransfer: SplitTransfer->Flags - %X\n",
2076 SplitTransfer->
Flags);
2100 DPRINT(
"USBPORT_AsyncTimerDpc: ...\n");
2103 FdoDevice = AsyncCallbackData->
FdoDevice;
2125 DPRINT(
"USBPORT_RequestAsyncCallback: ...\n");
2136 if (!AsyncCallbackData)
2138 DPRINT1(
"USBPORT_RequestAsyncCallback: Not allocated AsyncCallbackData!\n");
2150 AsyncCallbackData->
FdoDevice = FdoDevice;
2179 DPRINT_CORE(
"USBPORT_GetMappedVirtualAddress ...\n");
2213 if (!MiniPortEndpoint)
2252 DPRINT(
"USBPORT_CompleteTransfer: Urb - %p, TransferStatus - %X\n",
2256 UrbTransfer = &
Urb->UrbControlTransfer;
2257 Transfer = UrbTransfer->
hca.Reserved8[0];
2269 DmaOperations =
FdoExtension->DmaAdapter->DmaOperations;
2283 if (!IsFlushSuccess)
2285 DPRINT(
"USBPORT_CompleteTransfer: no FlushAdapterBuffers !!!\n");
2301 Urb->UrbHeader.UsbdFlags |= ~USBD_FLAG_ALLOCATED_MDL;
2304 Urb->UrbControlTransfer.hca.Reserved8[0] =
NULL;
2305 Urb->UrbHeader.UsbdFlags |= ~USBD_FLAG_ALLOCATED_TRANSFER;
2314 DPRINT1(
"USBPORT_CompleteTransfer: Irp - %p complete with Status - %lx\n",
2322 Irp->IoStatus.Information = 0;
2361 ULONG TransferLength;
2382 Mdl =
Urb->UrbControlTransfer.TransferBufferMDL;
2385 sgList = &Transfer->
SgList;
2401 PhAddress = DmaOperations->
MapTransfer(DmaAdapter,
2408 DPRINT_CORE(
"USBPORT_MapTransfer: PhAddress.LowPart - %p, PhAddress.HighPart - %x, TransferLength - %x\n",
2414 SgCurrentLength = TransferLength;
2420 if (ElementLength > SgCurrentLength)
2421 ElementLength = SgCurrentLength;
2423 DPRINT_CORE(
"USBPORT_MapTransfer: PhAddress.LowPart - %p, HighPart - %x, ElementLength - %x\n",
2431 (TransferLength - SgCurrentLength);
2433 PhAddress.
LowPart += ElementLength;
2434 SgCurrentLength -= ElementLength;
2438 while (SgCurrentLength);
2442 DPRINT1(
"USBPORT_MapTransfer: PhAddr == PhAddress\n");
2448 CurrentLength += TransferLength;
2449 CurrentVa += TransferLength;
2488 &
Urb->UrbIsochronousTransfer,
2523 ULONG NumMapRegisters;
2534 DmaOperations =
FdoExtension->DmaAdapter->DmaOperations;
2588 ULONG PagesNeed = 0;
2589 SIZE_T PortTransferLength;
2590 SIZE_T FullTransferLength;
2596 DPRINT_CORE(
"USBPORT_AllocateTransfer: FdoDevice - %p, Urb - %p, DeviceHandle - %p, Irp - %p, Event - %p\n",
2605 TransferLength =
Urb->UrbControlTransfer.TransferBufferLength;
2610 Mdl =
Urb->UrbControlTransfer.TransferBufferMDL;
2623 DPRINT1(
"USBPORT_AllocateTransfer: ISOCH_TRANSFER UNIMPLEMENTED. FIXME\n");
2634 FullTransferLength = PortTransferLength +
2635 FdoExtension->MiniPortInterface->Packet.MiniPortTransferSize;
2643 DPRINT1(
"USBPORT_AllocateTransfer: Transfer not allocated!\n");
2662 PortTransferLength - IsoBlockLen);
2669 PortTransferLength);
2673 Urb->UrbControlTransfer.hca.Reserved8[0] = Transfer;
2678 DPRINT_CORE(
"USBPORT_AllocateTransfer: return USBDStatus - %x\n",
2698 DPRINT1(
"USBPORT_Dispatch: USBPORT_PNP_STATE_FAILED\n");
2705 if (DeviceExtension->
IsPDO)
2707 DPRINT(
"USBPORT_Dispatch: PDO IRP_MJ_DEVICE_CONTROL. Major - %d, Minor - %d\n",
2715 DPRINT(
"USBPORT_Dispatch: FDO IRP_MJ_DEVICE_CONTROL. Major - %d, Minor - %d\n",
2725 if (DeviceExtension->
IsPDO)
2727 DPRINT(
"USBPORT_Dispatch: PDO IRP_MJ_INTERNAL_DEVICE_CONTROL. Major - %d, Minor - %d\n",
2735 DPRINT(
"USBPORT_Dispatch: FDO IRP_MJ_INTERNAL_DEVICE_CONTROL. Major - %d, Minor - %d\n",
2745 if (DeviceExtension->
IsPDO)
2747 DPRINT(
"USBPORT_Dispatch: PDO IRP_MJ_POWER. Major - %d, Minor - %d\n",
2755 DPRINT(
"USBPORT_Dispatch: FDO IRP_MJ_POWER. Major - %d, Minor - %d\n",
2765 if (DeviceExtension->
IsPDO)
2767 DPRINT(
"USBPORT_Dispatch: PDO IRP_MJ_SYSTEM_CONTROL. Major - %d, Minor - %d\n",
2776 DPRINT(
"USBPORT_Dispatch: FDO IRP_MJ_SYSTEM_CONTROL. Major - %d, Minor - %d\n",
2787 if (DeviceExtension->
IsPDO)
2789 DPRINT(
"USBPORT_Dispatch: PDO IRP_MJ_PNP. Major - %d, Minor - %d\n",
2797 DPRINT(
"USBPORT_Dispatch: FDO IRP_MJ_PNP. Major - %d, Minor - %d\n",
2808 DPRINT(
"USBPORT_Dispatch: IRP_MJ_CREATE | IRP_MJ_CLOSE\n");
2814 if (DeviceExtension->
IsPDO)
2816 DPRINT(
"USBPORT_Dispatch: PDO unhandled IRP_MJ_???. Major - %d, Minor - %d\n",
2822 DPRINT(
"USBPORT_Dispatch: FDO unhandled IRP_MJ_???. Major - %d, Minor - %d\n",
2852 DPRINT(
"USBPORT_RegisterUSBPortDriver: DriverObject - %p, Version - %p, RegPacket - %p\n",
2857 DPRINT(
"USBPORT_RegisterUSBPortDriver: sizeof(USBPORT_MINIPORT_INTERFACE) - %x\n",
2860 DPRINT(
"USBPORT_RegisterUSBPortDriver: sizeof(USBPORT_DEVICE_EXTENSION) - %x\n",
2881 if (!MiniPortInterface)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
#define InterlockedDecrement
DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, IN ULONG_PTR BugCheckParameter2, IN ULONG_PTR BugCheckParameter3, IN ULONG_PTR BugCheckParameter4)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
_In_ PCHAR _In_ ULONG DeviceNumber
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
DRIVER_INITIALIZE DriverEntry
VOID NTAPI USBPORT_DumpingURB(IN PURB Urb)
ULONG NTAPI USBPORT_LogEntry(IN PVOID MiniPortExtension, IN ULONG DriverTag, IN ULONG EnumTag, IN ULONG P1, IN ULONG P2, IN ULONG P3)
VOID NTAPI USBPORT_BugCheck(IN PVOID MiniPortExtension)
ULONG NTAPI USBPORT_AssertFailure(PVOID MiniPortExtension, PVOID FailedAssertion, PVOID FileName, ULONG LineNumber, PCHAR Message)
ULONG NTAPI USBPORT_TestDebugBreak(IN PVOID MiniPortExtension)
ULONG USBPORT_DbgPrint(IN PVOID MiniPortExtension, IN ULONG Level, IN PCH Format,...)
NTSTATUS NTAPI USBPORT_FdoInternalDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
NTSTATUS NTAPI USBPORT_FdoDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
NTSTATUS NTAPI USBPORT_PdoInternalDeviceControl(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
NTSTATUS NTAPI USBPORT_PdoDeviceControl(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
USBD_STATUS NTAPI USBPORT_InitializeIsoTransfer(PDEVICE_OBJECT FdoDevice, struct _URB_ISOCH_TRANSFER *Urb, PUSBPORT_TRANSFER Transfer)
ULONG NTAPI USBPORT_CompleteIsoTransfer(IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint, IN PVOID TransferParameters, IN ULONG TransferLength)
NTSTATUS NTAPI USBPORT_PdoPnP(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
NTSTATUS NTAPI USBPORT_FdoPnP(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
VOID NTAPI USBPORT_DoSetPowerD0(IN PDEVICE_OBJECT FdoDevice)
NTSTATUS NTAPI USBPORT_FdoPower(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
NTSTATUS NTAPI USBPORT_PdoPower(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
VOID NTAPI USBPORT_CompletePdoWaitWake(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_DoIdleNotificationCallback(IN PVOID Context)
VOID NTAPI USBPORT_FlushPendingTransfers(IN PUSBPORT_ENDPOINT Endpoint)
VOID NTAPI USBPORT_FlushAllEndpoints(IN PDEVICE_OBJECT FdoDevice)
PIRP NTAPI USBPORT_RemoveActiveTransferIrp(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
VOID NTAPI USBPORT_BadRequestFlush(IN PDEVICE_OBJECT FdoDevice)
BOOLEAN NTAPI USBPORT_EndpointWorker(IN PUSBPORT_ENDPOINT Endpoint, IN BOOLEAN LockNotChecked)
VOID NTAPI USBPORT_InvalidateEndpointHandler(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN ULONG Type)
BOOLEAN NTAPI USBPORT_EndpointHasQueuedTransfers(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PULONG TransferCount)
VOID NTAPI USBPORT_FlushClosedEndpointList(IN PDEVICE_OBJECT FdoDevice)
ULONG NTAPI USBPORT_GetEndpointState(IN PUSBPORT_ENDPOINT Endpoint)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define KeDelayExecutionThread(mode, foo, t)
#define KeInitializeSpinLock(sl)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
#define KeGetCurrentThread
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
RH_INIT_CALLBACK * PRH_INIT_CALLBACK
NTSYSAPI void WINAPI DbgBreakPoint(void)
#define LOW_REALTIME_PRIORITY
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
#define InterlockedCompareExchange
IoSetCancelRoutine(Irp, CancelRoutine)
#define ExFreePoolWithTag(_P, _T)
static PLARGE_INTEGER Time
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
#define THREAD_ALL_ACCESS
struct _KEY_VALUE_FULL_INFORMATION KEY_VALUE_FULL_INFORMATION
@ KeyValueFullInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STANDARD_RIGHTS_ALL
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoSkipCurrentIrpStackLocation(Irp)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
#define IoCompleteRequest
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
VOID NTAPI IoAcquireCancelSpinLock(OUT PKIRQL Irql)
ULONG NTAPI KeQueryTimeIncrement(VOID)
NTSTATUS NTAPI PsTerminateSystemThread(IN NTSTATUS ExitStatus)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define STATUS_OBJECT_NAME_EXISTS
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
NTSTATUS NTAPI IoOpenDeviceRegistryKey(IN PDEVICE_OBJECT DeviceObject, IN ULONG DevInstKeyType, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DevInstRegKey)
#define FILE_DEVICE_CONTROLLER
#define IRP_MJ_DEVICE_CONTROL
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
VOID NTAPI KeInitializeSemaphore(IN PKSEMAPHORE Semaphore, IN LONG Count, IN LONG Limit)
LONG NTAPI KeReleaseSemaphore(IN PKSEMAPHORE Semaphore, IN KPRIORITY Increment, IN LONG Adjustment, IN BOOLEAN Wait)
base of all file and directory entries
PDEVICE_OBJECT Objects[1]
struct _DMA_OPERATIONS * DmaOperations
PALLOCATE_COMMON_BUFFER AllocateCommonBuffer
PFREE_COMMON_BUFFER FreeCommonBuffer
PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel
PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers
PFREE_MAP_REGISTERS FreeMapRegisters
PMAP_TRANSFER MapTransfer
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
USBD_PIPE_HANDLE PipeHandle
ULONG TransferBufferLength
struct _URB_CONTROL_TRANSFER UrbControlTransfer
ASYNC_TIMER_CALLBACK * CallbackFunction
DEVICE_POWER_STATE DevicePowerState
PDEVICE_OBJECT LowerPdoDevice
PDEVICE_OBJECT LowerDevice
PDEVICE_OBJECT SelfDevice
USBPORT_COMMON_DEVICE_EXTENSION CommonExtension
LIST_ENTRY ControllerLink
USB_DEVICE_SPEED DeviceSpeed
KSPIN_LOCK StateChangeSpinLock
LIST_ENTRY StateChangeLink
LIST_ENTRY FlushAbortLink
KSPIN_LOCK EndpointSpinLock
USBPORT_ENDPOINT_PROPERTIES EndpointProperties
PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer
USBPORT_REGISTRATION_PACKET Packet
PDRIVER_OBJECT DriverObject
PDRIVER_UNLOAD DriverUnload
PUSBPORT_GET_MINIPORT_REGISTRY_KEY_VALUE UsbPortGetMiniportRegistryKeyValue
PUSBPORT_INVALIDATE_CONTROLLER UsbPortInvalidateController
PUSBPORT_REQUEST_ASYNC_CALLBACK UsbPortRequestAsyncCallback
PUSBPORT_TEST_DEBUG_BREAK UsbPortTestDebugBreak
PUSBPORT_LOG_ENTRY UsbPortLogEntry
PUSBPORT_BUG_CHECK UsbPortBugCheck
SIZE_T MiniPortExtensionSize
PUSBPORT_NOTIFY_DOUBLE_BUFFER UsbPortNotifyDoubleBuffer
PUSBPORT_INVALIDATE_ROOT_HUB UsbPortInvalidateRootHub
PUSBPORT_COMPLETE_ISO_TRANSFER UsbPortCompleteIsoTransfer
PUSBPORT_DBG_PRINT UsbPortDbgPrint
PUSBPORT_WAIT UsbPortWait
PUSBPORT_COMPLETE_TRANSFER UsbPortCompleteTransfer
PUSBPORT_READ_WRITE_CONFIG_SPACE UsbPortReadWriteConfigSpace
PUSBPORT_ASSERT_FAILURE UsbPortAssertFailure
PUSBPORT_GET_MAPPED_VIRTUAL_ADDRESS UsbPortGetMappedVirtualAddress
PUSBPORT_INVALIDATE_ENDPOINT UsbPortInvalidateEndpoint
PHYSICAL_ADDRESS SgPhysicalAddress
USBPORT_SCATTER_GATHER_ELEMENT SgElement[2]
ULONG TransferBufferLength
SIZE_T PortTransferLength
ULONG CompletedTransferLen
PUSBPORT_ISO_BLOCK IsoBlockPtr
ULONG NumberOfMapRegisters
KSPIN_LOCK TransferSpinLock
struct _USBPORT_TRANSFER * ParentTransfer
LIST_ENTRY SplitTransfersList
USBPORT_TRANSFER_PARAMETERS TransferParameters
PUSBPORT_ENDPOINT Endpoint
SIZE_T FullTransferLength
USBPORT_SCATTER_GATHER_LIST SgList
PWORKER_THREAD_ROUTINE WorkerRoutine
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
VOID NTAPI USBPORT_DoneSplitTransfer(IN PUSBPORT_TRANSFER SplitTransfer)
VOID NTAPI USBPORT_SplitTransfer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PUSBPORT_TRANSFER Transfer, IN PLIST_ENTRY List)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_DEVICE_NOT_CONNECTED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_INSUFFICIENT_RESOURCES
VOID NTAPI USB2_InitController(IN PUSB2_HC_EXTENSION HcExtension)
#define USBD_STATUS_DEVICE_GONE
#define USBD_STATUS_INVALID_PIPE_HANDLE
#define USBD_STATUS_CANCELED
#define USBD_ERROR(Status)
#define USBD_STATUS_SUCCESS
#define USBD_STATUS_NOT_SUPPORTED
#define USBD_STATUS_INSUFFICIENT_RESOURCES
#define USBD_STATUS_INVALID_PARAMETER
#define USBD_STATUS_INVALID_URB_FUNCTION
#define USBD_STATUS_BAD_START_FRAME
#define URB_FUNCTION_ISOCH_TRANSFER
#define PLUGPLAY_REGKEY_DRIVER
#define DPRINT_TIMER(...)
_In_ PIO_STACK_LOCATION _In_ PURB Urb
USBPORT_REGISTRATION_PACKET RegPacket
#define USBPORT_ENDPOINT_ACTIVE
#define USB_MINIPORT_FLAGS_USB2
#define MP_STATUS_UNSUCCESSFUL
#define USBPORT_INVALIDATE_CONTROLLER_RESET
#define USB_MINIPORT_FLAGS_NOT_LOCK_INT
#define USBPORT_INVALIDATE_CONTROLLER_SURPRISE_REMOVE
#define MP_STATUS_SUCCESS
#define USB10_MINIPORT_INTERFACE_VERSION
#define USBPORT_INVALIDATE_CONTROLLER_SOFT_INTERRUPT
ULONG NTAPI USBPORT_InvalidateRootHub(PVOID MiniPortExtension)
VOID NTAPI USBPORT_RootHubPowerAndChirpAllCcPorts(IN PDEVICE_OBJECT FdoDevice)
BOOLEAN USBPORT_Initialized
VOID NTAPI USBPORT_SynchronizeControllersStart(IN PDEVICE_OBJECT FdoDevice)
USBD_STATUS NTAPI USBPORT_AllocateTransfer(IN PDEVICE_OBJECT FdoDevice, IN PURB Urb, IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PIRP Irp, IN PRKEVENT Event)
BOOLEAN NTAPI USBPORT_QueueDoneTransfer(IN PUSBPORT_TRANSFER Transfer, IN USBD_STATUS USBDStatus)
VOID NTAPI USBPORT_TransferFlushDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
MPSTATUS NTAPI USBPORT_GetMiniportRegistryKeyValue(IN PVOID MiniPortExtension, IN BOOL UseDriverKey, IN PCWSTR SourceString, IN SIZE_T LengthStr, IN PVOID Buffer, IN SIZE_T BufferLength)
MPSTATUS NTAPI USBPORT_ReadWriteConfigSpace(IN PVOID MiniPortExtension, IN BOOLEAN IsReadData, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
VOID NTAPI USBPORT_WorkerThread(IN PVOID StartContext)
KSPIN_LOCK USBPORT_SpinLock
VOID NTAPI USBPORT_DoneTransfer(IN PUSBPORT_TRANSFER Transfer)
VOID NTAPI USBPORT_FlushDoneTransfers(IN PDEVICE_OBJECT FdoDevice)
NTSTATUS NTAPI USBPORT_AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
VOID NTAPI USBPORT_SynchronizeRootHubCallback(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT Usb2FdoDevice)
ULONG NTAPI USBPORT_GetHciMn(VOID)
ULONG NTAPI USBPORT_InvalidateController(IN PVOID MiniPortExtension, IN ULONG Type)
LIST_ENTRY USBPORT_USB2FdoList
VOID NTAPI USBPORT_AddUSB2Fdo(IN PDEVICE_OBJECT FdoDevice)
ULONG NTAPI USBPORT_InvalidateEndpoint(IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint)
VOID NTAPI USBPORT_AddUSB1Fdo(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_RemoveUSBxFdo(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_IsrDpcHandler(IN PDEVICE_OBJECT FdoDevice, IN BOOLEAN IsDpcHandler)
PUSBPORT_MINIPORT_INTERFACE NTAPI USBPORT_FindMiniPort(IN PDRIVER_OBJECT DriverObject)
VOID NTAPI USBPORT_SoftInterrupt(IN PDEVICE_OBJECT FdoDevice)
PUSBPORT_COMMON_BUFFER_HEADER NTAPI USBPORT_AllocateCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN SIZE_T BufferLength)
IO_ALLOCATION_ACTION NTAPI USBPORT_MapTransfer(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp, IN PVOID MapRegisterBase, IN PVOID Context)
BOOLEAN NTAPI USBPORT_IsCompanionFdoExtension(IN PDEVICE_OBJECT USB2FdoDevice, IN PUSBPORT_DEVICE_EXTENSION USB1FdoExtension)
VOID NTAPI USBPORT_IsrDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
PDEVICE_OBJECT NTAPI USBPORT_FindUSB2Controller(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_StopWorkerThread(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_InvalidateControllerHandler(IN PDEVICE_OBJECT FdoDevice, IN ULONG Type)
BOOLEAN NTAPI USBPORT_InterruptService(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext)
LIST_ENTRY USBPORT_MiniPortDrivers
NTSTATUS NTAPI USBPORT_GetRegistryKeyValueFullInfo(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice, IN BOOL UseDriverKey, IN PCWSTR SourceString, IN ULONG LengthStr, IN PVOID Buffer, IN ULONG BufferLength)
VOID NTAPI USBPORT_FreeCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer)
ULONG NTAPI USBPORT_NotifyDoubleBuffer(IN PVOID MiniPortExtension, IN PVOID MiniPortTransfer, IN PVOID Buffer, IN SIZE_T Length)
NTSTATUS NTAPI USBPORT_RegisterUSBPortDriver(IN PDRIVER_OBJECT DriverObject, IN ULONG Version, IN PUSBPORT_REGISTRATION_PACKET RegPacket)
VOID NTAPI USBPORT_SignalWorkerThread(IN PDEVICE_OBJECT FdoDevice)
NTSTATUS NTAPI USBPORT_SetRegistryKeyValue(IN PDEVICE_OBJECT DeviceObject, IN BOOL UseDriverKey, IN ULONG Type, IN PCWSTR ValueNameString, IN PVOID Data, IN ULONG DataSize)
VOID NTAPI USBPORT_FlushMapTransfers(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_TimerDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
PDEVICE_RELATIONS NTAPI USBPORT_FindCompanionControllers(IN PDEVICE_OBJECT USB2FdoDevice, IN BOOLEAN IsObRefer, IN BOOLEAN IsFDOsReturned)
MPSTATUS NTAPI USBPORT_NtStatusToMpStatus(NTSTATUS NtStatus)
NTSTATUS NTAPI USBPORT_GetSetConfigSpaceData(IN PDEVICE_OBJECT FdoDevice, IN BOOLEAN IsReadData, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
NTSTATUS NTAPI USBPORT_CreateWorkerThread(IN PDEVICE_OBJECT FdoDevice)
PVOID NTAPI USBPORT_GetMappedVirtualAddress(IN ULONG PhysicalAddress, IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint)
VOID NTAPI USBPORT_MiniportInterrupts(IN PDEVICE_OBJECT FdoDevice, IN BOOLEAN IsEnable)
VOID NTAPI USBPORT_SoftInterruptDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
NTSTATUS NTAPI USBPORT_Dispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
ULONG NTAPI USBPORT_RequestAsyncCallback(IN PVOID MiniPortExtension, IN ULONG TimerValue, IN PVOID Buffer, IN SIZE_T Length, IN ASYNC_TIMER_CALLBACK *Callback)
VOID NTAPI USBPORT_AsyncTimerDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI USBPORT_WorkerThreadHandler(IN PDEVICE_OBJECT FdoDevice)
VOID NTAPI USBPORT_CompleteTransfer(IN PURB Urb, IN USBD_STATUS TransferStatus)
VOID NTAPI USBPORT_WorkerRequestDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI USBPORT_Unload(IN PDRIVER_OBJECT DriverObject)
LIST_ENTRY USBPORT_USB1FdoList
VOID NTAPI USBPORT_DoRootHubCallback(IN PDEVICE_OBJECT FdoDevice)
NTSTATUS NTAPI USBPORT_Wait(IN PVOID MiniPortExtension, IN ULONG Milliseconds)
NTSTATUS NTAPI USBPORT_USBDStatusToNtStatus(IN PURB Urb, IN USBD_STATUS USBDStatus)
VOID NTAPI USBPORT_DpcHandler(IN PDEVICE_OBJECT FdoDevice)
BOOLEAN NTAPI USBPORT_StartTimer(IN PDEVICE_OBJECT FdoDevice, IN ULONG Time)
VOID NTAPI USBPORT_MiniportCompleteTransfer(IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint, IN PVOID TransferParameters, IN USBD_STATUS USBDStatus, IN ULONG TransferLength)
#define USBPORT_FLAG_WORKER_THREAD_ON
#define TRANSFER_FLAG_DMA_MAPPED
#define USBPORT_FLAG_WORKER_THREAD_EXIT
#define USBPORT_FLAG_RH_INIT_CALLBACK
#define USBPORT_FLAG_HC_WAKE_SUPPORT
#define USBPORT_DMA_DIRECTION_TO_DEVICE
#define USBPORT_MPFLAG_INTERRUPTS_ENABLED
struct _USBPORT_ENDPOINT * PUSBPORT_ENDPOINT
#define USBPORT_FLAG_HC_POLLING
#define USBPORT_FLAG_PWR_AND_CHIRP_LOCK
#define USBPORT_TMFLAG_WAKE
#define USBPORT_TMFLAG_HC_SUSPENDED
#define USBPORT_FLAG_NO_HACTION
#define ENDPOINT_FLAG_ROOTHUB_EP0
struct _USBPORT_COMMON_BUFFER_HEADER * PUSBPORT_COMMON_BUFFER_HEADER
#define TRANSFER_FLAG_HIGH_SPEED
struct _USBPORT_DEVICE_EXTENSION * PUSBPORT_DEVICE_EXTENSION
struct _USBPORT_TRANSFER USBPORT_TRANSFER
#define USBD_FLAG_ALLOCATED_TRANSFER
#define INVALIDATE_ENDPOINT_WORKER_THREAD
#define USBPORT_FLAG_HC_SUSPEND
struct _USBPORT_DEVICE_EXTENSION USBPORT_DEVICE_EXTENSION
#define TRANSFER_FLAG_SUBMITED
struct _USBPORT_COMMON_BUFFER_HEADER USBPORT_COMMON_BUFFER_HEADER
#define TRANSFER_FLAG_ISO
#define USBPORT_FLAG_POWER_AND_CHIRP_OK
#define USBPORT_PNP_STATE_STARTED
#define USBPORT_PNP_STATE_FAILED
#define USBPORT_FLAG_COMPANION_HC
#define USBPORT_TMFLAG_TIMER_QUEUED
#define TRANSFER_FLAG_COMPLETED
#define USBPORT_TMFLAG_HC_RESUME
struct _USBPORT_ENDPOINT USBPORT_ENDPOINT
#define USBPORT_FLAG_REGISTERED_FDO
#define ENDPOINT_FLAG_NUKE
#define INVALIDATE_ENDPOINT_ONLY
#define USBD_FLAG_ALLOCATED_MDL
#define TRANSFER_FLAG_SPLITED
struct _USB2_HC_EXTENSION * PUSB2_HC_EXTENSION
#define USBPORT_TMFLAG_IDLE_QUEUEITEM_ON
struct _USB2_HC_EXTENSION USB2_HC_EXTENSION
#define INVALIDATE_ENDPOINT_WORKER_DPC
#define USBPORT_FLAG_INTERRUPT_ENABLED
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFCMRESLIST List
_In_ WDFTIMER _In_ LONGLONG DueTime
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
#define PLUGPLAY_REGKEY_DEVICE
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
#define PCI_WHICHSPACE_CONFIG
_Inout_ struct _IRP _In_ PVOID MapRegisterBase
enum _IO_ALLOCATION_ACTION IO_ALLOCATION_ACTION
@ DeallocateObjectKeepRegisters
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define ROUND_TO_PAGES(Size)
#define MmGetMdlVirtualAddress(_Mdl)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)
#define ObReferenceObject