35 DPRINT1(
"PortAddDriverInitData()\n");
67 DPRINT1(
"PortDeleteDriverInitData()\n");
94 DPRINT1(
"PortGetDriverInitData()\n");
105 ListEntry = ListEntry->
Flink;
120 DPRINT(
"PortAcquireSpinLock(%p %lu %p %p)\n",
136 DPRINT(
"InterruptLock\n");
162 DPRINT(
"PortReleaseSpinLock(%p %p)\n",
176 DPRINT(
"InterruptLock\n");
204 WCHAR NameBuffer[
sizeof(
"\\Device\\RaidPort4294967295")];
209 DPRINT1(
"PortAddDevice(%p %p)\n",
217 L"\\Device\\RaidPort%lu",
235 DPRINT1(
"IoCreateDevice() failed (Status 0x%08lx)\n",
Status);
294 DPRINT1(
"IoAttachDeviceToDeviceStackSafe() failed (Status 0x%08lx)\n",
Status);
312 Fdo->Flags &= ~DO_DEVICE_INITIALIZING;
347 DPRINT(
"PortDispatchCreate(%p %p)\n",
366 DPRINT(
"PortDispatchClose(%p %p)\n",
370 Irp->IoStatus.Information = 0;
387 DPRINT(
"PortDispatchDeviceControl(%p %p)\n",
405 Irp->IoStatus.Information = 0;
423 DPRINT(
"PortDispatchScsi(%p %p)\n",
441 Irp->IoStatus.Information = 0;
457 DPRINT1(
"PortDispatchSystemControl(%p %p)\n",
461 Irp->IoStatus.Information = 0;
478 DPRINT1(
"PortDispatchPnp(%p %p)\n",
496 Irp->IoStatus.Information = 0;
510 DPRINT1(
"PortDispatchPower(%p %p)\n",
514 Irp->IoStatus.Information = 0;
548 DPRINT1(
"StorPortAllocateRegistryBuffer()\n");
583 DPRINT1(
"StorPortCompleteRequest()\n");
597 DPRINT(
"StorPortConvertPhysicalAddressToUlong()\n");
614 DPRINT(
"StorPortConvertUlongToPhysicalAddress()\n");
616 Address.QuadPart = UlongAddress;
661 DPRINT1(
"StorPortDeviceBusy(%p %d %d %d %d)\n",
670 PdoExtension->FlowControl.RemainingBusyRequests = RequestsToComplete;
694 DPRINT1(
"StorPortDeviceReady(%p %d %d %d %d)\n",
723 ULONG AllocatePoolSize;
725 PVOID* AllocatedPoolPointer;
728 DPRINT1(
"StorPortExtendedFunction(%d %p ...)\n",
729 FunctionCode, HwDeviceExtension);
733 switch (FunctionCode) {
741 if (AllocatedPoolPointer ==
NULL) {
748 if (PoolPointer ==
NULL) {
749 *AllocatedPoolPointer =
NULL;
754 *AllocatedPoolPointer = PoolPointer;
764 if (PoolPointer ==
NULL) {
780 if (TimerHandle ==
NULL) {
790 if (TimerEntry ==
NULL) {
802 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
826 ULONG IsTimerAlreadySet;
833 if (HwDeviceExtension ==
NULL || TimerHandle ==
NULL || TimerCallback ==
NULL) {
842 if (IsTimerAlreadySet == 1) {
848 if (TimerValue == 0ull) {
856 MultiplyResult = RtlULongLongMult(TimerValue, 10ull, (
PULONGLONG)&TimerDueTime.
QuadPart);
885 if (InterruptInfo ==
NULL)
931 *SystemAddress =
NULL;
934 if (RequestReference->
Irp ==
NULL || RequestReference->
Irp->MdlAddress ==
NULL)
971 if (RequestReference->
Irp ==
NULL || RequestReference->
Irp->MdlAddress ==
NULL)
977 *
Mdl = RequestReference->
Irp->MdlAddress;
991 if (AdapterDeviceObject !=
NULL)
992 *AdapterDeviceObject = DeviceExtension->
Device;
1034 DPRINT1(
"StorPortFreeDeviceBase(%p %p)\n",
1035 HwDeviceExtension, MappedAddress);
1049 DPRINT1(
"StorPortFreeRegistryBuffer()\n");
1072 DPRINT1(
"StorPortGetBusData(%p %lu %lu %lu %p %lu)\n",
1079 DPRINT1(
"DeviceExtension %p MiniportExtension %p\n",
1080 DeviceExtension, MiniportExtension);
1111 PVOID MappedAddress;
1114 DPRINT1(
"StorPortGetDeviceBase(%p %lu %lu 0x%I64x %lu %u)\n",
1121 DPRINT1(
"HwDeviceExtension %p MiniportExtension %p\n",
1122 HwDeviceExtension, MiniportExtension);
1149 DPRINT1(
"Mapped Address: %p\n", MappedAddress);
1159 MappedAddress =
NULL;
1162 DPRINT1(
"Mapped Address: %p\n", MappedAddress);
1163 return MappedAddress;
1183 DPRINT(
"StorPortGetLogicalUnit(%p %u %u %u)\n",
1186 if (HwDeviceExtension ==
NULL)
1225 DPRINT(
"StorPortGetPhysicalAddress(%p %p %p %p)\n",
1232 DPRINT(
"HwDeviceExtension %p MiniportExtension %p\n",
1233 HwDeviceExtension, MiniportExtension);
1235 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
1276 DPRINT(
"StorPortGetScatterGatherList(%p %p)\n", HwDeviceExtension,
Srb);
1296 DPRINT(
"StorPortGetSrb()\n");
1318 DPRINT1(
"StorPortGetUncachedExtension(%p %p %lu)\n",
1325 DPRINT1(
"HwDeviceExtension %p MiniportExtension %p\n",
1326 HwDeviceExtension, MiniportExtension);
1328 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
1362 HighestAddress.
QuadPart = 0x00000000FFFFFFFF;
1388 DPRINT1(
"StorPortGetVirtualAddress(%p %I64x)\n",
1412 DPRINT1(
"StorPortInitialize(%p %p %p %p)\n",
1434 DPRINT1(
"Invalid parameter!\n");
1445 DPRINT1(
"Revision mismatch!\n");
1451 if (DriverObjectExtension ==
NULL)
1453 DPRINT1(
"No driver object extension!\n");
1458 (
PVOID *)&DriverObjectExtension);
1461 DPRINT1(
"IoAllocateDriverObjectExtension() failed (Status 0x%08lx)\n",
Status);
1465 DPRINT1(
"Driver object extension created!\n");
1497 DPRINT1(
"PortAddDriverInitData() failed (Status 0x%08lx)\n",
Status);
1501 DPRINT1(
"StorPortInitialize() done (Status 0x%08lx)\n",
Status);
1522 DPRINT1(
"ScsiPortLogError() called\n");
1523 DPRINT1(
"PathId: 0x%02x TargetId: 0x%02x Lun: 0x%02x ErrorCode: 0x%08lx UniqueId: 0x%08lx\n",
1526 DPRINT1(
"ScsiPortLogError() done\n");
1573 DPRINT(
"StorPortNotification(%x %p)\n",
1577 if (HwDeviceExtension !=
NULL)
1582 DPRINT(
"HwDeviceExtension %p MiniportExtension %p\n",
1583 HwDeviceExtension, MiniportExtension);
1593 DPRINT(
"RequestComplete\n");
1606 DPRINT(
"Complete Notify - ReqRef %p Srb %p Irp %p\n",
1607 RequestReference,
Srb, RequestReference->
Irp);
1623 DPRINT1(
"BusChangeDetected\n");
1631 DPRINT1(
"GetExtendedFunctionTable\n");
1633 if (ppExtendedFunctions !=
NULL)
1634 *ppExtendedFunctions =
NULL;
1638 DPRINT1(
"EnablePassiveInitialization\n");
1640 DPRINT1(
"HwPassiveInitRoutine %p\n", HwPassiveInitRoutine);
1651 FdoExtension->HwPassiveInitRoutine = HwPassiveInitRoutine;
1657 DPRINT(
"InitializeDpc\n");
1661 DPRINT(
"HwDpcRoutine %p\n", HwDpcRoutine);
1674 DPRINT(
"Dpc %p Arg1 %p Arg2 %p\n",
Dpc, DpcArgument1, DpcArgument2);
1681 DPRINT(
"AcquireSpinLock\n");
1685 DPRINT(
"LockContext %p\n", LockContext);
1695 DPRINT(
"ReleaseSpinLock\n");
1714 if (TimerValue != 0)
1716 MultiplyResult = RtlULongLongMult(TimerValue, 10ull, (
PULONGLONG)&TimerDueTime.
QuadPart);
1770 DPRINT1(
"StorPortPauseDevice()\n");
1776#if defined(_M_AMD64)
1788 DPRINT1(
"StorPortQuerySystemTime(%p)\n", CurrentTime);
1824 DPRINT1(
"StorPortRegistryRead()\n");
1844 DPRINT1(
"StorPortRegistryWrite()\n");
1859 DPRINT1(
"StorPortResume()\n");
1877 DPRINT1(
"StorPortResumeDevice()\n");
1902 DPRINT1(
"StorPortSetBusData(%p %lu %lu %lu %p %lu %lu)\n",
1908 DPRINT1(
"DeviceExtension %p MiniportExtension %p\n",
1909 DeviceExtension, MiniportExtension);
1941 DPRINT1(
"StorPortSetDeviceQueueDepth(%p %d %d %d %d)\n",
1987 DPRINT1(
"StorPortSynchronizeAccess()\n");
2006 DPRINT1(
"StorPortValidateRange()\n");
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
#define DPFLTR_ERROR_LEVEL
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PSCSI_REQUEST_BLOCK Srb
#define FILE_DEVICE_SECURE_OPEN
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
_In_z_ PCCHAR _In_ PDEVICE_OBJECT LowerDeviceObject
PVOID NTAPI MmAllocateContiguousMemorySpecifyCache(IN SIZE_T NumberOfBytes, IN PHYSICAL_ADDRESS LowestAcceptableAddress OPTIONAL, IN PHYSICAL_ADDRESS HighestAcceptableAddress, IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, IN MEMORY_CACHING_TYPE CacheType OPTIONAL)
_In_ ULONG _In_ ULONG _In_opt_ DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK _In_opt_ PVOID CallbackContext
_In_ ULONG _In_ MEMORY_CACHING_TYPE _Out_ PPHYSICAL_ADDRESS PhysicalAddress
_In_ DXGK_MIRACAST_DISPLAY_CALLBACKS _Out_ PVOID _Out_ ULONG * TargetId
_In_ ULONG _In_ MEMORY_CACHING_TYPE _Out_ PPHYSICAL_ADDRESS _Out_ PVOID * VirtualAddress
#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
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
VOID(NTAPI * PHW_TIMER)(IN PVOID DeviceExtension)
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
NTSTATUS NTAPI PortPdoDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI PortFdoDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
VOID NTAPI TimerCallbackDpcRoutine(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
NTSTATUS AllocateAddressMapping(PMAPPED_ADDRESS *MappedAddressList, STOR_PHYSICAL_ADDRESS IoAddress, PVOID MappedAddress, ULONG NumberOfBytes, ULONG BusNumber)
BOOLEAN TranslateResourceListAddress(PFDO_DEVICE_EXTENSION DeviceExtension, INTERFACE_TYPE BusType, ULONG SystemIoBusNumber, STOR_PHYSICAL_ADDRESS IoAddress, ULONG NumberOfBytes, BOOLEAN InIoSpace, PPHYSICAL_ADDRESS TranslatedAddress)
VOID NTAPI SimpleTimerCallbackDpcRoutine(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
NTSTATUS NTAPI PortPdoScsi(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
VOID NTAPI StorpCompleteExtendedSrb(_In_ PSCSI_REQUEST_BLOCK Srb, _In_ PEXTENDED_REQUEST Request)
Carries the miniport's answer back to the original request block.
BOOLEAN NTAPI StorpIsExtendedSrb(_In_ PVOID Srb)
Tells whether a request block is in the extended format.
#define HW_INIT_DATA_SIZE_PHYSICAL
PQUEUED_REQUEST_REFERENCE NTAPI StorpRequestReference(_In_ PSCSI_REQUEST_BLOCK Srb)
Finds the request reference behind an SRB in either format.
#define TAG_MINIPORT_DATA
struct _TIMER_ENTRY * PTIMER_ENTRY
PVOID NTAPI StorpSrbDataBuffer(_In_ PSCSI_REQUEST_BLOCK Srb)
Finds the data buffer of a request in either format.
VOID NTAPI PortCompletionDpc(_In_ PKDPC Dpc, _In_ PVOID Context, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
#define RemoveEntryList(Entry)
#define InsertHeadList(ListHead, Entry)
UNICODE_STRING * PUNICODE_STRING
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
union Alignment_ Alignment
VOID FASTCALL KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock, IN PKLOCK_QUEUE_HANDLE LockHandle)
VOID FASTCALL KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle)
FORCEINLINE PFDO_DEVICE_EXTENSION StorpGetMiniportFdo(_In_ PVOID HwDeviceExtension)
For use in Storport API exposed to miniports; gets FDO extension with HwDeviceExtension.
FORCEINLINE ULONG StorpInterlockedInsertHeadListCounted(_In_ PKSPIN_LOCK SpinLock, _In_ PLIST_ENTRY ListHead, _In_ PLIST_ENTRY Entry, _In_ PULONG Counter)
InsertHeadList and increment element counter with a corresponding spin lock held.
#define InterlockedCompareExchange
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define ExFreePoolWithTag(_P, _T)
#define KeStallExecutionProcessor(MicroSeconds)
_In_ NDIS_ERROR_CODE ErrorCode
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
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)
NTSTATUS NTAPI IoAttachDeviceToDeviceStackSafe(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice, IN OUT PDEVICE_OBJECT *AttachedToDeviceObject)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
NTSTATUS NTAPI IoAllocateDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress, IN ULONG DriverObjectExtensionSize, OUT PVOID *DriverObjectExtension)
#define IoCompleteRequest
KIRQL NTAPI KeAcquireInterruptSpinLock(IN PKINTERRUPT Interrupt)
VOID NTAPI KeReleaseInterruptSpinLock(IN PKINTERRUPT Interrupt, IN KIRQL OldIrql)
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(IN PVOID Address)
#define STATUS_REVISION_MISMATCH
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
PPCI_DRIVER_EXTENSION DriverExtension
PDMA_ADAPTER NTAPI IoGetDmaAdapter(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_DESCRIPTION DeviceDescription, IN OUT PULONG NumberOfMapRegisters)
#define FILE_DEVICE_CONTROLLER
#define IRP_MJ_DEVICE_CONTROL
enum _INTERFACE_TYPE INTERFACE_TYPE
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
ULONG NTAPI vDbgPrintExWithPrefix(IN PCCH Prefix, IN ULONG ComponentId, IN ULONG Level, IN PCCH Format, IN va_list ap)
PPDO_DEVICE_EXTENSION FdoFindLun(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG Bus, _In_ ULONG Target, _In_ ULONG Lun)
VOID NTAPI PortFdoBusChangeDpc(_In_ PKDPC Dpc, _In_opt_ PVOID DeferredContext, _In_opt_ PVOID SystemArgument1, _In_opt_ PVOID SystemArgument2)
NTSTATUS PortInitializeStarvedRequestQueue(_In_ PSTARVED_REQUEST_QUEUE Queue)
PPDO_DEVICE_EXTENSION NTAPI FdoFindLunAboveDispatch(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG Bus, _In_ ULONG Target, _In_ ULONG Lun)
Finds a unit from an interrupt service routine or any other caller above DISPATCH_LEVEL.
NTSTATUS NTAPI PortFdoScsi(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI PortFdoPnp(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI PortPdoPnp(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
static NTSTATUS NTAPI PortDispatchSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG Depth)
STORPORT_API BOOLEAN NTAPI StorPortBusy(_In_ PVOID HwDeviceExtension, _In_ ULONG RequestsToComplete)
static NTSTATUS NTAPI PortDispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
STORPORT_API BOOLEAN NTAPI StorPortRegistryWrite(_In_ PVOID HwDeviceExtension, _In_ PUCHAR ValueName, _In_ ULONG Global, _In_ ULONG Type, _In_ PUCHAR Buffer, _In_ ULONG BufferLength)
static NTSTATUS NTAPI PortDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
STORPORT_API BOOLEAN NTAPI StorPortDeviceBusy(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG RequestsToComplete)
STORPORT_API PVOID NTAPI StorPortGetLogicalUnit(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
STORPORT_API VOID StorPortDebugPrint(_In_ ULONG DebugPrintLevel, _In_ PCHAR DebugMessage,...)
static VOID PortReleaseSpinLock(PFDO_DEVICE_EXTENSION DeviceExtension, PSTOR_LOCK_HANDLE LockHandle)
STORPORT_API VOID NTAPI StorPortSynchronizeAccess(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, _In_opt_ PVOID Context)
STORPORT_API ULONG NTAPI StorPortGetBusData(_In_ PVOID DeviceExtension, _In_ ULONG BusDataType, _In_ ULONG SystemIoBusNumber, _In_ ULONG SlotNumber, _Out_ _When_(Length !=0, _Out_writes_bytes_(Length)) PVOID Buffer, _In_ ULONG Length)
static NTSTATUS NTAPI PortDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PHW_INITIALIZATION_DATA PortGetDriverInitData(PDRIVER_OBJECT_EXTENSION DriverExtension, INTERFACE_TYPE InterfaceType)
static NTSTATUS PortAddDriverInitData(PDRIVER_OBJECT_EXTENSION DriverExtension, PHW_INITIALIZATION_DATA HwInitializationData)
STORPORT_API VOID NTAPI StorPortMoveMemory(_Out_writes_bytes_(Length) PVOID Destination, _In_reads_bytes_(Length) PVOID Source, _In_ ULONG Length)
STORPORT_API VOID NTAPI StorPortFreeRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Buffer)
STORPORT_API BOOLEAN NTAPI StorPortValidateRange(_In_ PVOID HwDeviceExtension, _In_ INTERFACE_TYPE BusType, _In_ ULONG SystemIoBusNumber, _In_ STOR_PHYSICAL_ADDRESS IoAddress, _In_ ULONG NumberOfBytes, _In_ BOOLEAN InIoSpace)
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ PVOID VirtualAddress, _Out_ ULONG *Length)
STORPORT_API BOOLEAN NTAPI StorPortRegistryRead(_In_ PVOID HwDeviceExtension, _In_ PUCHAR ValueName, _In_ ULONG Global, _In_ ULONG Type, _In_ PUCHAR Buffer, _In_ PULONG BufferLength)
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortConvertUlongToPhysicalAddress(_In_ ULONG_PTR UlongAddress)
STORPORT_API BOOLEAN NTAPI StorPortPauseDevice(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG TimeOut)
STORPORT_API PUCHAR NTAPI StorPortAllocateRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PULONG Length)
STORPORT_API BOOLEAN NTAPI StorPortReady(_In_ PVOID HwDeviceExtension)
STORPORT_API ULONG StorPortExtendedFunction(_In_ STORPORT_FUNCTION_CODE FunctionCode, _In_ PVOID HwDeviceExtension,...)
STORPORT_API ULONG NTAPI StorPortConvertPhysicalAddressToUlong(_In_ STOR_PHYSICAL_ADDRESS Address)
STORPORT_API VOID NTAPI StorPortCompleteRequest(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ UCHAR SrbStatus)
STORPORT_API ULONG NTAPI StorPortSetBusDataByOffset(_In_ PVOID DeviceExtension, _In_ ULONG BusDataType, _In_ ULONG SystemIoBusNumber, _In_ ULONG SlotNumber, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
STORPORT_API PVOID NTAPI StorPortGetDeviceBase(_In_ PVOID HwDeviceExtension, _In_ INTERFACE_TYPE BusType, _In_ ULONG SystemIoBusNumber, _In_ STOR_PHYSICAL_ADDRESS IoAddress, _In_ ULONG NumberOfBytes, _In_ BOOLEAN InIoSpace)
STORPORT_API BOOLEAN NTAPI StorPortDeviceReady(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
STORPORT_API BOOLEAN NTAPI StorPortPause(_In_ PVOID HwDeviceExtension, _In_ ULONG TimeOut)
STORPORT_API ULONG NTAPI StorPortInitialize(_In_ PVOID Argument1, _In_ PVOID Argument2, _In_ struct _HW_INITIALIZATION_DATA *HwInitializationData, _In_opt_ PVOID HwContext)
static NTSTATUS NTAPI PortDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static NTSTATUS NTAPI PortDispatchScsi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
STORPORT_API PVOID NTAPI StorPortGetVirtualAddress(_In_ PVOID HwDeviceExtension, _In_ STOR_PHYSICAL_ADDRESS PhysicalAddress)
static NTSTATUS NTAPI PortDispatchCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
STORPORT_API PSCSI_REQUEST_BLOCK NTAPI StorPortGetSrb(_In_ PVOID DeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ LONG QueueTag)
STORPORT_API VOID NTAPI StorPortStallExecution(_In_ ULONG Delay)
STORPORT_API BOOLEAN NTAPI StorPortResume(_In_ PVOID HwDeviceExtension)
STORPORT_API VOID NTAPI StorPortFreeDeviceBase(_In_ PVOID HwDeviceExtension, _In_ PVOID MappedAddress)
STORPORT_API BOOLEAN NTAPI StorPortResumeDevice(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
static VOID PortDeleteDriverInitData(PDRIVER_OBJECT_EXTENSION DriverExtension)
static VOID PortAcquireSpinLock(PFDO_DEVICE_EXTENSION DeviceExtension, STOR_SPINLOCK SpinLock, PVOID LockContext, PSTOR_LOCK_HANDLE LockHandle)
static VOID NTAPI PortUnload(_In_ PDRIVER_OBJECT DriverObject)
STORPORT_API VOID StorPortNotification(_In_ SCSI_NOTIFICATION_TYPE NotificationType, _In_ PVOID HwDeviceExtension,...)
static NTSTATUS NTAPI PortAddDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ PDEVICE_OBJECT PhysicalDeviceObject)
STORPORT_API VOID NTAPI StorPortLogError(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG ErrorCode, _In_ ULONG UniqueId)
STORPORT_API PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
STORPORT_API PVOID NTAPI StorPortGetUncachedExtension(_In_ PVOID HwDeviceExtension, _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo, _In_ ULONG NumberOfBytes)
BOOLEAN(NTAPI * PHW_PASSIVE_INITIALIZE_ROUTINE)(_In_ PVOID DeviceExtension)
VOID(NTAPI * PHW_TIMER_EX)(_In_ PVOID DeviceExtension, _In_opt_ PVOID Context)
@ ExtFunctionInitializeTimer
@ ExtFunctionRequestTimer
@ ExtFunctionGetOriginalMdl
@ ExtFunctionGetDeviceObjects
@ ExtFunctionInitializePerformanceOptimizations
@ ExtFunctionGetMessageInterruptInformation
@ ExtFunctionGetSystemAddress
@ ExtFunctionAllocatePool
#define STOR_STATUS_UNSUCCESSFUL
#define STOR_STATUS_INSUFFICIENT_RESOURCES
enum _STORPORT_FUNCTION_CODE STORPORT_FUNCTION_CODE
#define STOR_STATUS_SUCCESS
STOR_SYNCHRONIZED_ACCESS * PSTOR_SYNCHRONIZED_ACCESS
enum _STOR_SPINLOCK STOR_SPINLOCK
VOID(NTAPI * PHW_DPC_ROUTINE)(_In_ PSTOR_DPC Dpc, _In_ PVOID HwDeviceExtension, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
#define STOR_STATUS_INVALID_PARAMETER
struct _STOR_LOCK_HANDLE * PSTOR_LOCK_HANDLE
STORPORT_API VOID NTAPI StorPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
#define STOR_STATUS_NOT_IMPLEMENTED
@ GetExtendedFunctionTable
@ EnablePassiveInitialization
struct _STOR_DPC * PSTOR_DPC
HW_INITIALIZATION_DATA HwInitData
LIST_ENTRY AdapterListHead
KSPIN_LOCK AdapterListLock
EXTENSION_TYPE ExtensionType
PDEVICE_OBJECT LowerDevice
PDEVICE_OBJECT PhysicalDevice
PVOID UncachedExtensionVirtualBase
ULONG UncachedExtensionSize
PHW_INITIALIZATION_DATA HwInitData
EXTENSION_TYPE ExtensionType
FDO_IO_FLOW_CONTROL FlowControl
LIST_ENTRY AdapterListEntry
PHYSICAL_ADDRESS UncachedExtensionPhysicalBase
PDRIVER_OBJECT_EXTENSION DriverExtension
SLIST_HEADER CompletionList
STARVED_REQUEST_QUEUE StarvedRequests
LIST_ENTRY FdoBlockedRequestsListHead
ULONG OutstandingRequestCount
ULONG RemainingBusyRequests
INTERFACE_TYPE AdapterInterfaceType
struct _LIST_ENTRY * Flink
struct _MINIPORT * Miniport
PEXTENDED_REQUEST ExtendedRequest
PSTOR_SCATTER_GATHER_LIST ScatterGatherList
SLIST_ENTRY CompletionEntry
PHW_TIMER_EX TimerCallback
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_In_ UCXUSBDEVICE _In_ ULONG Interface
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_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 Fdo
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG PoolTag
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
void int int ULONGLONG int va_list * ap
_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
_IRQL_requires_same_ _In_opt_ PVOID Argument1
_Out_ PULONG NumberOfMapRegisters
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
_In_ PIO_TIMER_ROUTINE TimerRoutine
struct _DRIVER_OBJECT * PDRIVER_OBJECT
#define DEVICE_DESCRIPTION_VERSION
#define IRP_MJ_SYSTEM_CONTROL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
_In_ LARGE_INTEGER _In_ ULONG _In_ ULONG TolerableDelay
*LockHandle LockHandle _Out_ PKLOCK_QUEUE_HANDLE LockHandle
KDEFERRED_ROUTINE * PKDEFERRED_ROUTINE
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define InterlockedPushEntrySList(SListHead, SListEntry)
FORCEINLINE VOID InitializeSListHead(_Out_ PSLIST_HEADER SListHead)