34 DPRINT1(
"PortAddDriverInitData()\n");
61 DPRINT1(
"PortDeleteDriverInitData()\n");
88 DPRINT1(
"PortGetDriverInitData()\n");
99 ListEntry = ListEntry->
Flink;
114 DPRINT(
"PortAcquireSpinLock(%p %lu %p %p)\n",
130 DPRINT(
"InterruptLock\n");
146 DPRINT(
"PortReleaseSpinLock(%p %p)\n",
160 DPRINT(
"InterruptLock\n");
178 WCHAR NameBuffer[
sizeof(
"\\Device\\RaidPort4294967295")];
183 DPRINT1(
"PortAddDevice(%p %p)\n",
191 L"\\Device\\RaidPort%lu",
209 DPRINT1(
"IoCreateDevice() failed (Status 0x%08lx)\n",
Status);
275 DPRINT1(
"IoAttachDeviceToDeviceStackSafe() failed (Status 0x%08lx)\n",
Status);
293 Fdo->Flags &= ~DO_DEVICE_INITIALIZING;
328 DPRINT(
"PortDispatchCreate(%p %p)\n",
347 DPRINT(
"PortDispatchClose(%p %p)\n",
351 Irp->IoStatus.Information = 0;
368 DPRINT(
"PortDispatchDeviceControl(%p %p)\n",
386 Irp->IoStatus.Information = 0;
404 DPRINT(
"PortDispatchScsi(%p %p)\n",
422 Irp->IoStatus.Information = 0;
438 DPRINT1(
"PortDispatchSystemControl(%p %p)\n",
442 Irp->IoStatus.Information = 0;
459 DPRINT1(
"PortDispatchPnp(%p %p)\n",
477 Irp->IoStatus.Information = 0;
491 DPRINT1(
"PortDispatchPower(%p %p)\n",
495 Irp->IoStatus.Information = 0;
529 DPRINT1(
"StorPortAllocateRegistryBuffer()\n");
564 DPRINT1(
"StorPortCompleteRequest()\n");
578 DPRINT(
"StorPortConvertPhysicalAddressToUlong()\n");
595 DPRINT(
"StorPortConvertUlongToPhysicalAddress()\n");
597 Address.QuadPart = UlongAddress;
642 DPRINT1(
"StorPortDeviceBusy(%p %d %d %d %d)\n",
651 PdoExtension->FlowControl.RemainingBusyRequests = RequestsToComplete;
675 DPRINT1(
"StorPortDeviceReady(%p %d %d %d %d)\n",
704 ULONG AllocatePoolSize;
706 PVOID* AllocatedPoolPointer;
709 DPRINT1(
"StorPortExtendedFunction(%d %p ...)\n",
710 FunctionCode, HwDeviceExtension);
714 switch (FunctionCode) {
722 if (AllocatedPoolPointer ==
NULL) {
729 if (PoolPointer ==
NULL) {
730 *AllocatedPoolPointer =
NULL;
735 *AllocatedPoolPointer = PoolPointer;
745 if (PoolPointer ==
NULL) {
761 if (TimerHandle ==
NULL) {
771 if (TimerEntry ==
NULL) {
783 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
807 ULONG IsTimerAlreadySet;
814 if (HwDeviceExtension ==
NULL || TimerHandle ==
NULL || TimerCallback ==
NULL) {
823 if (IsTimerAlreadySet == 1) {
829 if (TimerValue == 0ull) {
837 MultiplyResult = RtlULongLongMult(TimerValue, 10ull, (
PULONGLONG)&TimerDueTime.
QuadPart);
880 DPRINT1(
"StorPortFreeDeviceBase(%p %p)\n",
881 HwDeviceExtension, MappedAddress);
895 DPRINT1(
"StorPortFreeRegistryBuffer()\n");
918 DPRINT1(
"StorPortGetBusData(%p %lu %lu %lu %p %lu)\n",
925 DPRINT1(
"DeviceExtension %p MiniportExtension %p\n",
926 DeviceExtension, MiniportExtension);
960 DPRINT1(
"StorPortGetDeviceBase(%p %lu %lu 0x%I64x %lu %u)\n",
967 DPRINT1(
"HwDeviceExtension %p MiniportExtension %p\n",
968 HwDeviceExtension, MiniportExtension);
995 DPRINT1(
"Mapped Address: %p\n", MappedAddress);
1005 MappedAddress =
NULL;
1008 DPRINT1(
"Mapped Address: %p\n", MappedAddress);
1009 return MappedAddress;
1025 DPRINT1(
"StorPortGetLogicalUnit()\n");
1048 DPRINT(
"StorPortGetPhysicalAddress(%p %p %p %p)\n",
1055 DPRINT(
"HwDeviceExtension %p MiniportExtension %p\n",
1056 HwDeviceExtension, MiniportExtension);
1058 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
1099 DPRINT(
"StorPortGetScatterGatherList(%p %p)\n", HwDeviceExtension,
Srb);
1119 DPRINT(
"StorPortGetSrb()\n");
1141 DPRINT1(
"StorPortGetUncachedExtension(%p %p %lu)\n",
1148 DPRINT1(
"HwDeviceExtension %p MiniportExtension %p\n",
1149 HwDeviceExtension, MiniportExtension);
1151 DeviceExtension = MiniportExtension->
Miniport->DeviceExtension;
1185 HighestAddress.
QuadPart = 0x00000000FFFFFFFF;
1211 DPRINT1(
"StorPortGetVirtualAddress(%p %I64x)\n",
1235 DPRINT1(
"StorPortInitialize(%p %p %p %p)\n",
1257 DPRINT1(
"Invalid parameter!\n");
1268 DPRINT1(
"Revision mismatch!\n");
1274 if (DriverObjectExtension ==
NULL)
1276 DPRINT1(
"No driver object extension!\n");
1281 (
PVOID *)&DriverObjectExtension);
1284 DPRINT1(
"IoAllocateDriverObjectExtension() failed (Status 0x%08lx)\n",
Status);
1288 DPRINT1(
"Driver object extension created!\n");
1319 DPRINT1(
"StorPortInitialize() done (Status 0x%08lx)\n",
Status);
1340 DPRINT1(
"ScsiPortLogError() called\n");
1341 DPRINT1(
"PathId: 0x%02x TargetId: 0x%02x Lun: 0x%02x ErrorCode: 0x%08lx UniqueId: 0x%08lx\n",
1344 DPRINT1(
"ScsiPortLogError() done\n");
1391 DPRINT(
"StorPortNotification(%x %p)\n",
1395 if (HwDeviceExtension !=
NULL)
1400 DPRINT(
"HwDeviceExtension %p MiniportExtension %p\n",
1401 HwDeviceExtension, MiniportExtension);
1411 DPRINT(
"RequestComplete\n");
1413 DPRINT(
"Complete Notify - (%d:%d:%d) ReqRef %p Srb %p Irp %p Tag %x\n",
1440 DPRINT1(
"GetExtendedFunctionTable\n");
1442 if (ppExtendedFunctions !=
NULL)
1443 *ppExtendedFunctions =
NULL;
1447 DPRINT1(
"EnablePassiveInitialization\n");
1449 DPRINT1(
"HwPassiveInitRoutine %p\n", HwPassiveInitRoutine);
1460 FdoExtension->HwPassiveInitRoutine = HwPassiveInitRoutine;
1466 DPRINT(
"InitializeDpc\n");
1470 DPRINT(
"HwDpcRoutine %p\n", HwDpcRoutine);
1483 DPRINT(
"Dpc %p Arg1 %p Arg2 %p\n",
Dpc, DpcArgument1, DpcArgument2);
1490 DPRINT(
"AcquireSpinLock\n");
1494 DPRINT(
"LockContext %p\n", LockContext);
1504 DPRINT(
"ReleaseSpinLock\n");
1523 if (TimerValue != 0)
1525 MultiplyResult = RtlULongLongMult(TimerValue, 10ull, (
PULONGLONG)&TimerDueTime.
QuadPart);
1579 DPRINT1(
"StorPortPauseDevice()\n");
1585#if defined(_M_AMD64)
1597 DPRINT1(
"StorPortQuerySystemTime(%p)\n", CurrentTime);
1633 DPRINT1(
"StorPortRegistryRead()\n");
1653 DPRINT1(
"StorPortRegistryWrite()\n");
1668 DPRINT1(
"StorPortResume()\n");
1686 DPRINT1(
"StorPortResumeDevice()\n");
1711 DPRINT1(
"StorPortSetBusData(%p %lu %lu %lu %p %lu %lu)\n",
1717 DPRINT1(
"DeviceExtension %p MiniportExtension %p\n",
1718 DeviceExtension, MiniportExtension);
1750 DPRINT1(
"StorPortSetDeviceQueueDepth(%p %d %d %d %d)\n",
1796 DPRINT1(
"StorPortSynchronizeAccess()\n");
1815 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
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)
#define STATUS_NOT_IMPLEMENTED
_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)
#define TAG_QUEUED_REQUEST
struct _QUEUED_REQUEST_REFERENCE * PQUEUED_REQUEST_REFERENCE
#define TAG_MINIPORT_DATA
struct _TIMER_ENTRY * PTIMER_ENTRY
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 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
VOID NTAPI ExInitializeNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
#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)
NTSTATUS PortInitializeStarvedRequestQueue(_In_ PSTARVED_REQUEST_QUEUE Queue)
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)
VOID(NTAPI * PHW_TIMER_EX)(_In_ PVOID DeviceExtension, _In_opt_ PVOID Context)
@ ExtFunctionInitializeTimer
@ ExtFunctionRequestTimer
@ ExtFunctionAllocatePool
#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
BOOLEAN(* PHW_PASSIVE_INITIALIZE_ROUTINE)(_In_ PVOID DeviceExtension)
#define STOR_STATUS_INVALID_PARAMETER
VOID(* PHW_DPC_ROUTINE)(_In_ PSTOR_DPC Dpc, _In_ PVOID HwDeviceExtension, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
struct _STOR_LOCK_HANDLE * PSTOR_LOCK_HANDLE
STORPORT_API VOID NTAPI StorPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
@ 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
NPAGED_LOOKASIDE_LIST RequestReferenceLookaside
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
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
_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 InterlockedPushEntrySList(SListHead, SListEntry)
FORCEINLINE VOID InitializeSListHead(_Out_ PSLIST_HEADER SListHead)