28#define TAG_GLOBAL_DATA 'DGtS'
29#define TAG_INIT_DATA 'DItS'
30#define TAG_DEVICE_RELATION 'RDtS'
31#define TAG_DEVICE_ID 'DItS'
32#define TAG_DEVICE_TEXT 'XTtS'
33#define TAG_MINIPORT_DATA 'DMtS'
34#define TAG_ACCRESS_RANGE 'RAtS'
35#define TAG_RESOURCE_LIST 'LRtS'
36#define TAG_ADDRESS_MAPPING 'MAtS'
37#define TAG_INQUIRY_DATA 'QItS'
38#define TAG_REPORT_LUN_DATA 'LRtS'
39#define TAG_SENSE_DATA 'NStS'
40#define TAG_QUEUED_REQUEST 'RQtS'
41#define TAG_SRB_EXTENSION 'XStS'
43#define SET_FLAG(Flags, Bit) ((Flags) |= (Bit))
44#define CLEAR_FLAG(Flags, Bit) ((Flags) &= ~(Bit))
45#define TEST_FLAG(Flags, Bit) (((Flags) & (Bit)) != 0)
501 ULONG SystemIoBusNumber,
_In_ PSCSI_REQUEST_BLOCK Srb
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
DRIVER_INITIALIZE DriverEntry
VOID(NTAPI * PHW_TIMER)(IN PVOID DeviceExtension)
struct _PDO_IO_FLOW_CONTROL * PPDO_IO_FLOW_CONTROL
struct _FDO_DEVICE_EXTENSION FDO_DEVICE_EXTENSION
struct _LUN_DESCRIPTOR LUN_DESCRIPTOR
NTSTATUS NTAPI PortPdoScsi(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI PortPdoDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI PortFdoDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
VOID PortFlushStarvedRequests(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
Fails every queued request, for when the adapter goes away.
PPDO_DEVICE_EXTENSION FdoFindLun(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG Bus, _In_ ULONG Target, _In_ ULONG Lun)
struct _PDO_IO_FLOW_CONTROL PDO_IO_FLOW_CONTROL
NTSTATUS MiniportFindAdapter(_In_ PMINIPORT Miniport)
INTERFACE_TYPE GetBusInterface(PDEVICE_OBJECT DeviceObject)
NTSTATUS MiniportInitialize(_In_ PMINIPORT Miniport, _In_ PFDO_DEVICE_EXTENSION DeviceExtension, _In_ PHW_INITIALIZATION_DATA HwInitializationData)
struct _UNIT_DATA * PUNIT_DATA
struct _DRIVER_INIT_DATA DRIVER_INIT_DATA
struct _LUN_DESCRIPTOR * PLUN_DESCRIPTOR
struct _STARVED_REQUEST_QUEUE * PSTARVED_REQUEST_QUEUE
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
VOID PortFreeRequestReserve(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
Releases the reserve. No request may be using it anymore.
NTSTATUS PortDeletePdo(_In_ PPDO_DEVICE_EXTENSION PdoExtension)
VOID NTAPI TimerCallbackDpcRoutine(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
BOOLEAN PortPdoScheduleRequestFlowControlled(_In_ PPDO_DEVICE_EXTENSION PdoExtension, _In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ PQUEUED_REQUEST_REFERENCE RequestReference)
Schedules an outstanding request and return a boolean value to indicate if the request can be immedia...
struct _QUEUED_REQUEST_REFERENCE QUEUED_REQUEST_REFERENCE
NTSTATUS NTAPI PortPdoPnp(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS PortInitializeStarvedRequestQueue(_In_ PSTARVED_REQUEST_QUEUE Queue)
struct _MINIPORT MINIPORT
NTSTATUS AllocateAddressMapping(PMAPPED_ADDRESS *MappedAddressList, STOR_PHYSICAL_ADDRESS IoAddress, PVOID MappedAddress, ULONG NumberOfBytes, ULONG BusNumber)
struct _REPORT_LUNS_DATA REPORT_LUNS_DATA
BOOLEAN MiniportHwInterrupt(_In_ PMINIPORT Miniport)
PHW_INITIALIZATION_DATA PortGetDriverInitData(PDRIVER_OBJECT_EXTENSION DriverExtension, INTERFACE_TYPE InterfaceType)
struct _TIMER_ENTRY TIMER_ENTRY
struct _PDO_DEVICE_EXTENSION PDO_DEVICE_EXTENSION
VOID StorpSrbFreeRequestReference(_In_ PSCSI_REQUEST_BLOCK Srb)
Frees an SRB's Request Reference and restore Srb->OriginalRequest field to IRP. This function does no...
struct _REPORT_LUNS_DATA * PREPORT_LUNS_DATA
struct _MINIPORT_DEVICE_EXTENSION * PMINIPORT_DEVICE_EXTENSION
VOID PortQueueStarvedRequest(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ PIRP Irp)
Queues a request that could not allocate its private contexts.
NTSTATUS QueryBusInterface(PDEVICE_OBJECT DeviceObject, PGUID Guid, USHORT Size, USHORT Version, PBUS_INTERFACE_STANDARD Interface, PVOID InterfaceSpecificData)
struct _QUEUED_REQUEST_REFERENCE * PQUEUED_REQUEST_REFERENCE
struct _FDO_IO_FLOW_CONTROL * PFDO_IO_FLOW_CONTROL
struct _PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
BOOLEAN TranslateResourceListAddress(PFDO_DEVICE_EXTENSION DeviceExtension, INTERFACE_TYPE BusType, ULONG SystemIoBusNumber, STOR_PHYSICAL_ADDRESS IoAddress, ULONG NumberOfBytes, BOOLEAN InIoSpace, PPHYSICAL_ADDRESS TranslatedAddress)
struct _MINIPORT_DEVICE_EXTENSION MINIPORT_DEVICE_EXTENSION
BOOLEAN MiniportStartIo(_In_ PMINIPORT Miniport, _In_ PSCSI_REQUEST_BLOCK Srb)
PCM_RESOURCE_LIST CopyResourceList(POOL_TYPE PoolType, PCM_RESOURCE_LIST Source)
NTSTATUS MiniportHwInitialize(_In_ PMINIPORT Miniport)
NTSTATUS PortCreatePdo(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG Bus, _In_ ULONG Target, _In_ ULONG Lun, _Out_ PPDO_DEVICE_EXTENSION *PdoExtension)
NTSTATUS GetResourceListInterrupt(PFDO_DEVICE_EXTENSION DeviceExtension, PULONG Vector, PKIRQL Irql, KINTERRUPT_MODE *InterruptMode, PBOOLEAN ShareVector, PKAFFINITY Affinity)
VOID NTAPI SimpleTimerCallbackDpcRoutine(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
struct _MINIPORT * PMINIPORT
struct _DRIVER_OBJECT_EXTENSION * PDRIVER_OBJECT_EXTENSION
VOID PortRetryStarvedRequest(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
Retries one queued request, so each completion lets exactly one through.
struct _FDO_IO_FLOW_CONTROL FDO_IO_FLOW_CONTROL
struct _TIMER_ENTRY * PTIMER_ENTRY
VOID NTAPI PortCompletionDpc(_In_ PKDPC Dpc, _In_ PVOID Context, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
struct _DRIVER_INIT_DATA * PDRIVER_INIT_DATA
struct _UNIT_DATA UNIT_DATA
NTSTATUS NTAPI PortFdoScsi(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
struct _DRIVER_OBJECT_EXTENSION DRIVER_OBJECT_EXTENSION
NTSTATUS PortPdoIssueRequest(_In_ PPDO_DEVICE_EXTENSION PdoExtension, _In_ PQUEUED_REQUEST_REFERENCE RequestReference)
struct _STARVED_REQUEST_QUEUE STARVED_REQUEST_QUEUE
VOID PortAllocateRequestReserve(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
Reserves the memory a single request needs, so IO can still be issued out of pool.
NTSTATUS NTAPI PortFdoPnp(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
DRIVER_DISPATCH ForwardIrpAndForget
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
enum _INTERFACE_TYPE INTERFACE_TYPE
enum _KINTERRUPT_MODE KINTERRUPT_MODE
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
VOID(NTAPI * PHW_TIMER_EX)(_In_ PVOID DeviceExtension, _In_opt_ PVOID Context)
BOOLEAN(* PHW_PASSIVE_INITIALIZE_ROUTINE)(_In_ PVOID DeviceExtension)
HW_INITIALIZATION_DATA HwInitData
LIST_ENTRY AdapterListHead
LIST_ENTRY InitDataListHead
PDRIVER_OBJECT DriverObject
KSPIN_LOCK AdapterListLock
EXTENSION_TYPE ExtensionType
PMAPPED_ADDRESS MappedAddressList
PDEVICE_OBJECT LowerDevice
PCM_RESOURCE_LIST AllocatedResources
struct _QUEUED_REQUEST_REFERENCE * ReservedRequestReference
PDEVICE_OBJECT PhysicalDevice
PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitRoutine
PVOID ReservedSrbExtension
PVOID UncachedExtensionVirtualBase
PCM_RESOURCE_LIST TranslatedResources
NPAGED_LOOKASIDE_LIST RequestReferenceLookaside
ULONG UncachedExtensionSize
PHW_INITIALIZATION_DATA HwInitData
EXTENSION_TYPE ExtensionType
FDO_IO_FLOW_CONTROL FlowControl
ULONG OutstandingRequestMax
LIST_ENTRY AdapterListEntry
PHYSICAL_ADDRESS UncachedExtensionPhysicalBase
PDRIVER_OBJECT_EXTENSION DriverExtension
SLIST_HEADER CompletionList
STARVED_REQUEST_QUEUE StarvedRequests
BUS_INTERFACE_STANDARD BusInterface
LIST_ENTRY FdoBlockedRequestsListHead
ULONG OutstandingRequestCount
ULONG RemainingBusyRequests
struct _MINIPORT * Miniport
UCHAR HwDeviceExtension[0]
PORT_CONFIGURATION_INFORMATION PortConfig
PHW_INITIALIZATION_DATA InitData
struct _FDO_DEVICE_EXTENSION * DeviceExtension
PMINIPORT_DEVICE_EXTENSION MiniportExtension
PFDO_DEVICE_EXTENSION FdoExtension
PDO_IO_FLOW_CONTROL FlowControl
ULONG OutstandingRequestMax
PINQUIRYDATA InquiryBuffer
EXTENSION_TYPE ExtensionType
LONG SpecialRequestCounter
LIST_ENTRY ActiveRequestsListHead
BOOLEAN IsWaitingQueueClear
ULONG RemainingBusyRequests
ULONG OutstandingRequestCount
LIST_ENTRY AwaitingRequestsListHead
BOOLEAN DumpSpecialRequest
PSTOR_SCATTER_GATHER_LIST ScatterGatherList
PPDO_DEVICE_EXTENSION PdoExtension
SLIST_ENTRY CompletionEntry
LUN_DESCRIPTOR LunDescriptor[1]
PHW_TIMER_EX TimerCallback
#define SLIST_ENTRY(type)
_In_ UCXUSBDEVICE _In_ ULONG Interface
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_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 InterfaceType
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
_Reserved_ PVOID Reserved
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE InterruptMode
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE _In_ BOOLEAN ShareVector
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2