21 #define TAG_SCSIPORT 'ISCS' 26 #define MAX_SG_LIST 17 29 #define SCSI_PORT_DEVICE_BUSY 0x00001 30 #define SCSI_PORT_LU_ACTIVE 0x00002 31 #define SCSI_PORT_NOTIFICATION_NEEDED 0x00004 32 #define SCSI_PORT_NEXT_REQUEST_READY 0x00008 33 #define SCSI_PORT_FLUSH_ADAPTERS 0x00010 34 #define SCSI_PORT_MAP_TRANSFER 0x00020 35 #define SCSI_PORT_RESET 0x00080 36 #define SCSI_PORT_RESET_REQUEST 0x00100 37 #define SCSI_PORT_RESET_REPORTED 0x00200 38 #define SCSI_PORT_REQUEST_PENDING 0x00800 39 #define SCSI_PORT_DISCONNECT_ALLOWED 0x01000 40 #define SCSI_PORT_DISABLE_INT_REQUESET 0x02000 41 #define SCSI_PORT_DISABLE_INTERRUPTS 0x04000 42 #define SCSI_PORT_ENABLE_INT_REQUEST 0x08000 43 #define SCSI_PORT_TIMER_NEEDED 0x10000 46 #define LUNEX_FROZEN_QUEUE 0x0001 47 #define LUNEX_NEED_REQUEST_SENSE 0x0004 48 #define LUNEX_BUSY 0x0008 49 #define LUNEX_FULL_QUEUE 0x0010 50 #define LUNEX_REQUEST_PENDING 0x0020 51 #define SCSI_PORT_SCAN_IN_PROGRESS 0x8000 221 #define ALIGNAS_PTR DECLSPEC_ALIGN(8) 223 #define ALIGNAS_PTR DECLSPEC_ALIGN(4) 346 if (ioStack->
Parameters.DeviceIoControl.OutputBufferLength <
Size)
348 Irp->IoStatus.Information =
Size;
363 Irp->IoStatus.Information =
Size;
PCONTROLLER_OBJECT ControllerObject
struct _SCSI_REQUEST_BLOCK_INFO * CompletedRequests
struct _RESETBUS_PARAMS * PRESETBUS_PARAMS
ULONG MaximumTransferLength
VOID SpiInitOpenKeys(_Inout_ PCONFIGURATION_INFO ConfigInfo, _In_ PSCSI_PORT_DRIVER_EXTENSION DriverExtension)
enum _IO_ALLOCATION_ACTION IO_ALLOCATION_ACTION
SCSI_PORT_COMMON_EXTENSION Common
struct _SCSI_BUS_INFO * PSCSI_BUS_INFO
KDEVICE_QUEUE DeviceQueue
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
PSCSI_PORT_DEVICE_EXTENSION DeviceExtension
BOOLEAN DisableMultipleLun
PDEVICE_OBJECT DeviceObject
KSERVICE_ROUTINE ScsiPortIsr
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
SCSI_PHYSICAL_ADDRESS IoAddress
UCHAR MiniportLunExtension[1]
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
struct _SCSI_SG_ADDRESS SCSI_SG_ADDRESS
KSYNCHRONIZE_ROUTINE ScsiPortStartPacket
PSCSI_REQUEST_BLOCK_INFO SpiGetSrbData(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_PORT_LUN_EXTENSION LunExtension, _In_ UCHAR QueueTag)
PDEVICE_OBJECT LowerDevice
UNICODE_STRING DeviceName
PHW_INITIALIZE HwInitialize
ULONG NumberOfMapRegisters
struct _SCSI_PORT_DEVICE_BASE * PSCSI_PORT_DEVICE_BASE
IN PVOID IN PVOID IN USHORT IN USHORT Size
PSCSI_REQUEST_BLOCK_INFO CompletedRequests
struct _SCSIPORT_DRIVER_EXTENSION SCSI_PORT_DRIVER_EXTENSION
struct _SCSI_PORT_LUN_EXTENSION * PSCSI_PORT_LUN_EXTENSION
IO_DPC_ROUTINE ScsiPortDpcForIsr
IO_ALLOCATION_ACTION NTAPI SpiAdapterControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ PVOID MapRegisterBase, _In_ PVOID Context)
PADAPTER_OBJECT AdapterObject
struct _SCSIPORT_DRIVER_EXTENSION * PSCSI_PORT_DRIVER_EXTENSION
DRIVER_DISPATCH ScsiPortDispatchScsi
ALIGNAS_PTR UCHAR MiniPortDeviceExtension[]
struct _SCSI_PORT_LUN_EXTENSION SCSI_PORT_LUN_EXTENSION
VOID SpiGetNextRequestFromLun(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, _Inout_ PSCSI_PORT_LUN_EXTENSION LunExtension, _Inout_opt_ PKIRQL OldIrql)
NTSTATUS RegistryInitLunKey(_Inout_ PSCSI_PORT_LUN_EXTENSION LunExtension)
struct _SCSI_PORT_DEVICE_BASE SCSI_PORT_DEVICE_BASE
ULONG MiniPortExtensionSize
_In_ PDEVICE_OBJECT DeviceObject
struct _RESETBUS_PARAMS RESETBUS_PARAMS
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
struct _STORAGE_ADAPTER_DESCRIPTOR_WIN8 STORAGE_ADAPTER_DESCRIPTOR_WIN8
PSCSI_REQUEST_BLOCK_INFO SrbInfo
struct _SCSI_REQUEST_BLOCK_INFO * PSCSI_REQUEST_BLOCK_INFO
PACCESS_RANGE AccessRanges
PSCSI_SG_ADDRESS ScatterGather
struct _CONFIGURATION_INFO CONFIGURATION_INFO
PMAPPED_ADDRESS MappedAddressList
NTSTATUS FdoStartAdapter(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS PdoDispatchPnp(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
PSCSI_REQUEST_BLOCK_INFO FreeSrbInfo
PPORT_CONFIGURATION_INFORMATION PortConfig
struct _SCSI_PORT_DEVICE_EXTENSION * PSCSI_PORT_DEVICE_EXTENSION
SCSI_REQUEST_BLOCK_INFO SrbInfo
NTSTATUS FdoRemoveAdapter(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
struct _SCSI_PORT_INTERRUPT_DATA SCSI_PORT_INTERRUPT_DATA
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
BOOLEAN SupportsTaggedQueuing
IO_ALLOCATION_ACTION NTAPI ScsiPortAllocateAdapterChannel(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ PVOID MapRegisterBase, _In_ PVOID Context)
IO_SCSI_CAPABILITIES PortCapabilities
PSCSI_PORT_INTERRUPT_DATA InterruptData
struct _SCSI_PORT_COMMON_EXTENSION SCSI_PORT_COMMON_EXTENSION
struct _SCSI_PORT_SAVE_INTERRUPT SCSI_PORT_SAVE_INTERRUPT
LONG ActiveRequestCounter
PSCSI_PORT_LUN_EXTENSION CompletedAbort
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
PHYSICAL_ADDRESS PhysicalAddress
NTSTATUS FdoDispatchPnp(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
struct _CONFIGURATION_INFO * PCONFIGURATION_INFO
VOID FdoScanAdapter(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
struct _SCSI_PORT_LUN_EXTENSION * CompletedAbortRequests
struct _SCSI_PORT_DEVICE_EXTENSION SCSI_PORT_DEVICE_EXTENSION
BOOLEAN NeedSrbExtensionAlloc
struct _SCSI_REQUEST_BLOCK_INFO SCSI_REQUEST_BLOCK_INFO
SCSI_PORT_TIMER_STATES TimerState
NTSTATUS FdoCallHWInitialize(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
Calls HwInitialize routine of the miniport and sets up interrupts Should be called inside ScsiPortIni...
PPCI_DRIVER_EXTENSION DriverExtension
DRIVER_DISPATCH(nfs41_FsdDispatch)
BOOLEAN MultipleReqsPerLun
struct _SCSI_PORT_INTERRUPT_DATA * PSCSI_PORT_INTERRUPT_DATA
PDRIVER_OBJECT DriverObject
PHYSICAL_ADDRESS PhysicalAddress
SCSI_SG_ADDRESS ScatterGatherList[MAX_SG_LIST]
enum _SCSI_PORT_TIMER_STATES SCSI_PORT_TIMER_STATES
struct _SCSI_SG_ADDRESS * PSCSI_SG_ADDRESS
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
BOOLEAN AcceleratedTransfer
_Inout_ struct _IRP _In_ PVOID MapRegisterBase
UNICODE_STRING InterfaceName
NTSTATUS RegistryInitAdapterKey(_Inout_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
BOOLEAN(NTAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
struct _SCSI_PORT_LUN_EXTENSION * ReadyLun
FORCEINLINE BOOLEAN VerifyIrpOutBufferSize(_In_ PIRP Irp, _In_ SIZE_T Size)
SCSI_PORT_COMMON_EXTENSION Common
PHW_DMA_STARTED HwDmaStarted
DRIVER_STARTIO ScsiPortStartIo
SCSI_REQUEST_BLOCK InternalSrb
NTSTATUS NTAPI ScsiPortDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
struct _SCSI_PORT_SAVE_INTERRUPT * PSCSI_PORT_SAVE_INTERRUPT
PDEVICE_OBJECT PdoCreateLunDevice(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
struct _SCSI_BUS_INFO SCSI_BUS_INFO
struct _STORAGE_ADAPTER_DESCRIPTOR_WIN8 * PSTORAGE_ADAPTER_DESCRIPTOR_WIN8
VOID(NTAPI * PHW_TIMER)(IN PVOID DeviceExtension)
PSCSI_PORT_LUN_EXTENSION ReadyLun
PHW_INTERRUPT HwInterrupt
BOOLEAN SupportsAutoSense
FORCEINLINE BOOLEAN VerifyIrpInBufferSize(_In_ PIRP Irp, _In_ SIZE_T Size)
PSCSI_PORT_LUN_EXTENSION GetLunByPath(_In_ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
DRIVER_DISPATCH ScsiPortDispatchPower
PSCSI_REQUEST_BLOCK OriginalSrb
BOOLEAN DisableTaggedQueueing
SCSI_PORT_INTERRUPT_DATA InterruptData
ULONG MaximumPhysicalPages
struct _SCSI_PORT_DEVICE_EXTENSION * DeviceExtension
UNICODE_STRING RegistryPath
struct _SCSI_PORT_COMMON_EXTENSION * PSCSI_PORT_COMMON_EXTENSION
VOID(NTAPI * PHW_DMA_STARTED)(IN PVOID DeviceExtension)
SENSE_DATA InternalSenseData