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
RH_INIT_CALLBACK * PRH_INIT_CALLBACK
#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
_In_ PIOMMU_DEVICE_PATH _In_ PIOMMU_SVM_CAPABILITIES _Out_ PVOID * DeviceHandle
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)
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
NTSYSAPI void WINAPI DbgBreakPoint(void)
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