30 #define SCSI_MAXIMUM_LOGICAL_UNITS 8 31 #define SCSI_MAXIMUM_TARGETS_PER_BUS 128 32 #define SCSI_MAXIMUM_LUNS_PER_TARGET 255 33 #define SCSI_MAXIMUM_BUSES 8 34 #define SCSI_MINIMUM_PHYSICAL_BREAKS 16 35 #define SCSI_MAXIMUM_PHYSICAL_BREAKS 255 36 #define SCSI_MAXIMUM_TARGETS 8 39 #define SCSI_DMA64_MINIPORT_SUPPORTED 0x01 40 #define SCSI_DMA64_SYSTEM_SUPPORTED 0x80 41 #if (NTDDI_VERSION > NTDDI_WS03SP1) 42 #define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02 45 #define SP_UNINITIALIZED_VALUE ((ULONG) ~0) 46 #define SP_UNTAGGED ((UCHAR) ~0) 49 #define SRBEV_BUS_RESET 0x0001 50 #define SRBEV_SCSI_ASYNC_NOTIFICATION 0x0002 52 #define MAXIMUM_CDB_SIZE 12 55 #define DebugPrint(x) ScsiDebugPrint x 60 #define SCSI_COMBINE_BUS_TARGET(Bus, Target)( \ 61 ((((UCHAR) (Target)) & ~(0x20 - 1)) << 8) | \ 62 (((UCHAR) (Bus)) << 5) | \ 63 (((UCHAR) (Target)) & (0x20 - 1))) 65 #define SCSI_DECODE_BUS_TARGET(Value, Bus, Target)( \ 66 Bus = (UCHAR) ((Value) >> 5), \ 67 Target = (UCHAR) ((((Value) >> 8) & ~(0x20 - 1)) | ((Value) & (0x20 - 1)))) 70 #define SRB_FUNCTION_EXECUTE_SCSI 0x00 71 #define SRB_FUNCTION_CLAIM_DEVICE 0x01 72 #define SRB_FUNCTION_IO_CONTROL 0x02 73 #define SRB_FUNCTION_RECEIVE_EVENT 0x03 74 #define SRB_FUNCTION_RELEASE_QUEUE 0x04 75 #define SRB_FUNCTION_ATTACH_DEVICE 0x05 76 #define SRB_FUNCTION_RELEASE_DEVICE 0x06 77 #define SRB_FUNCTION_SHUTDOWN 0x07 78 #define SRB_FUNCTION_FLUSH 0x08 79 #define SRB_FUNCTION_PROTOCOL_COMMAND 0x09 80 #define SRB_FUNCTION_ABORT_COMMAND 0x10 81 #define SRB_FUNCTION_RELEASE_RECOVERY 0x11 82 #define SRB_FUNCTION_RESET_BUS 0x12 83 #define SRB_FUNCTION_RESET_DEVICE 0x13 84 #define SRB_FUNCTION_TERMINATE_IO 0x14 85 #define SRB_FUNCTION_FLUSH_QUEUE 0x15 86 #define SRB_FUNCTION_REMOVE_DEVICE 0x16 87 #define SRB_FUNCTION_WMI 0x17 88 #define SRB_FUNCTION_LOCK_QUEUE 0x18 89 #define SRB_FUNCTION_UNLOCK_QUEUE 0x19 90 #define SRB_FUNCTION_QUIESCE_DEVICE 0x1a 91 #define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20 92 #define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21 93 #define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22 94 #define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23 95 #define SRB_FUNCTION_POWER 0x24 96 #define SRB_FUNCTION_PNP 0x25 97 #define SRB_FUNCTION_DUMP_POINTERS 0x26 98 #define SRB_FUNCTION_FREE_DUMP_POINTERS 0x27 99 #define SRB_FUNCTION_STORAGE_REQUEST_BLOCK 0x28 // special value 100 #define SRB_FUNCTION_CRYPTO_OPERATION 0x29 101 #define SRB_FUNCTION_GET_DUMP_INFO 0x2a 102 #define SRB_FUNCTION_FREE_DUMP_INFO 0x2b 105 #define SRB_STATUS_PENDING 0x00 106 #define SRB_STATUS_SUCCESS 0x01 107 #define SRB_STATUS_ABORTED 0x02 108 #define SRB_STATUS_ABORT_FAILED 0x03 109 #define SRB_STATUS_ERROR 0x04 110 #define SRB_STATUS_BUSY 0x05 111 #define SRB_STATUS_INVALID_REQUEST 0x06 112 #define SRB_STATUS_INVALID_PATH_ID 0x07 113 #define SRB_STATUS_NO_DEVICE 0x08 114 #define SRB_STATUS_TIMEOUT 0x09 115 #define SRB_STATUS_SELECTION_TIMEOUT 0x0A 116 #define SRB_STATUS_COMMAND_TIMEOUT 0x0B 117 #define SRB_STATUS_MESSAGE_REJECTED 0x0D 118 #define SRB_STATUS_BUS_RESET 0x0E 119 #define SRB_STATUS_PARITY_ERROR 0x0F 120 #define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 121 #define SRB_STATUS_NO_HBA 0x11 122 #define SRB_STATUS_DATA_OVERRUN 0x12 123 #define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 124 #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 125 #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 126 #define SRB_STATUS_REQUEST_FLUSHED 0x16 127 #define SRB_STATUS_INVALID_LUN 0x20 128 #define SRB_STATUS_INVALID_TARGET_ID 0x21 129 #define SRB_STATUS_BAD_FUNCTION 0x22 130 #define SRB_STATUS_ERROR_RECOVERY 0x23 131 #define SRB_STATUS_NOT_POWERED 0x24 132 #define SRB_STATUS_LINK_DOWN 0x25 133 #define SRB_STATUS_INSUFFICIENT_RESOURCES 0x26 134 #define SRB_STATUS_THROTTLED_REQUEST 0x27 135 #define SRB_STATUS_INTERNAL_ERROR 0x30 137 #define SRB_STATUS_QUEUE_FROZEN 0x40 138 #define SRB_STATUS_AUTOSENSE_VALID 0x80 140 #define SRB_STATUS(Status) \ 141 (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) 144 #define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002 145 #define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004 146 #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 147 #define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010 148 #define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 149 #define SRB_FLAGS_DATA_IN 0x00000040 150 #define SRB_FLAGS_DATA_OUT 0x00000080 151 #define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 152 #define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) 153 #define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100 154 #define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200 155 #define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400 156 #define SRB_FLAGS_D3_PROCESSING 0x00000800 157 #define SRB_FLAGS_SEQUENTIAL_REQUIRED 0x00001000 158 #define SRB_FLAGS_IS_ACTIVE 0x00010000 159 #define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000 160 #define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000 161 #define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000 162 #define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000 163 #define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000 164 #define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000 165 #define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000 166 #define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000 167 #define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000 170 #define SCSI_PORT_SIGNATURE 0x54524f50 173 #define SRB_SIMPLE_TAG_REQUEST 0x20 174 #define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21 175 #define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22 177 #define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001 178 #define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x0001 179 #define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x0001 181 #define SP_BUS_PARITY_ERROR 0x0001 182 #define SP_UNEXPECTED_DISCONNECT 0x0002 183 #define SP_INVALID_RESELECTION 0x0003 184 #define SP_BUS_TIME_OUT 0x0004 185 #define SP_PROTOCOL_ERROR 0x0005 186 #define SP_INTERNAL_ADAPTER_ERROR 0x0006 187 #define SP_REQUEST_TIMEOUT 0x0007 188 #define SP_IRQ_NOT_RESPONDING 0x0008 189 #define SP_BAD_FW_WARNING 0x0009 190 #define SP_BAD_FW_ERROR 0x000a 191 #define SP_LOST_WMI_MINIPORT_REQUEST 0x000b 193 #define SP_VER_TRACE_SUPPORT 0x0010 195 #define SP_RETURN_NOT_FOUND 0 196 #define SP_RETURN_FOUND 1 197 #define SP_RETURN_ERROR 2 198 #define SP_RETURN_BAD_CONFIG 3 262 #define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION) 318 #define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK) 340 #if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64) 438 #if (NTDDI_VERSION >= NTDDI_WIN8) 440 #define SRB_ALIGN DECLSPEC_ALIGN(8) 441 #define POINTER_ALIGN DECLSPEC_ALIGN(8) 444 #define POINTER_ALIGN 467 #define SRBEX_DATA_BIDIRECTIONAL_LENGTH ((2 * sizeof(ULONG)) + sizeof(PVOID)) 480 #define SRBEX_DATA_SCSI_CDB16_LENGTH ((20 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID)) 497 #define SRBEX_DATA_SCSI_CDB32_LENGTH ((36 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID)) 514 #define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN ((4 * sizeof(UCHAR)) + (3 * sizeof(ULONG)) + sizeof(PVOID)) 515 #define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX 0xffffffffUL 533 #define SRBEX_DATA_WMI_LENGTH ((4 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID)) 547 #define SRBEX_DATA_POWER_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_DEVICE_POWER_STATE) + sizeof(STOR_POWER_ACTION)) 560 #define SRBEX_DATA_PNP_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_PNP_ACTION) + (2 * sizeof(ULONG))) 574 #define SRBEX_DATA_IO_INFO_LENGTH ((5 * sizeof(ULONG)) + (4 * sizeof(UCHAR))) 576 #define REQUEST_INFO_NO_CACHE_FLAG 0x00000001 577 #define REQUEST_INFO_PAGING_IO_FLAG 0x00000002 578 #define REQUEST_INFO_SEQUENTIAL_IO_FLAG 0x00000004 579 #define REQUEST_INFO_TEMPORARY_FLAG 0x00000008 580 #define REQUEST_INFO_WRITE_THROUGH_FLAG 0x00000010 581 #define REQUEST_INFO_HYBRID_WRITE_THROUGH_FLAG 0x00000020 583 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) 585 #define REQUEST_INFO_NO_FILE_OBJECT_FLAG 0x00000040 586 #define REQUEST_INFO_VOLSNAP_IO_FLAG 0x00000080 587 #define REQUEST_INFO_STREAM_FLAG 0x00000100 591 #define REQUEST_INFO_VALID_CACHEPRIORITY_FLAG 0x80000000 607 #define SRB_SIGNATURE 0x53524258 608 #define STORAGE_REQUEST_BLOCK_VERSION_1 0x1 622 UCHAR ReservedUchar[4];
640 ULONG DataTransferLength;
654 #define SRB_TYPE_SCSI_REQUEST_BLOCK 0 655 #define SRB_TYPE_STORAGE_REQUEST_BLOCK 1 657 #define STORAGE_ADDRESS_TYPE_BTL8 0 774 #define SCSIPORT_API DECLSPEC_IMPORT 794 #define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart) 795 #define ScsiPortConvertPhysicalAddressToULongPtr(Address) ((ULONG_PTR)((Address).QuadPart)) 970 ULONG DebugPrintLevel,
974 #if defined(_M_AMD64) 976 #define ScsiPortReadPortUchar READ_PORT_UCHAR 977 #define ScsiPortReadPortUshort READ_PORT_USHORT 978 #define ScsiPortReadPortUlong READ_PORT_ULONG 980 #define ScsiPortReadPortBufferUchar READ_PORT_BUFFER_UCHAR 981 #define ScsiPortReadPortBufferUshort READ_PORT_BUFFER_USHORT 982 #define ScsiPortReadPortBufferUlong READ_PORT_BUFFER_ULONG 984 #define ScsiPortReadRegisterUchar READ_REGISTER_UCHAR 985 #define ScsiPortReadRegisterUshort READ_REGISTER_USHORT 986 #define ScsiPortReadRegisterUlong READ_REGISTER_ULONG 988 #define ScsiPortReadRegisterBufferUchar READ_REGISTER_BUFFER_UCHAR 989 #define ScsiPortReadRegisterBufferUshort READ_REGISTER_BUFFER_USHORT 990 #define ScsiPortReadRegisterBufferUlong READ_REGISTER_BUFFER_ULONG 992 #define ScsiPortWritePortUchar WRITE_PORT_UCHAR 993 #define ScsiPortWritePortUshort WRITE_PORT_USHORT 994 #define ScsiPortWritePortUlong WRITE_PORT_ULONG 996 #define ScsiPortWritePortBufferUchar WRITE_PORT_BUFFER_UCHAR 997 #define ScsiPortWritePortBufferUshort WRITE_PORT_BUFFER_USHORT 998 #define ScsiPortWritePortBufferUlong WRITE_PORT_BUFFER_ULONG 1000 #define ScsiPortWriteRegisterUchar WRITE_REGISTER_UCHAR 1001 #define ScsiPortWriteRegisterUshort WRITE_REGISTER_USHORT 1002 #define ScsiPortWriteRegisterUlong WRITE_REGISTER_ULONG 1004 #define ScsiPortWriteRegisterBufferUchar WRITE_REGISTER_BUFFER_UCHAR 1005 #define ScsiPortWriteRegisterBufferUshort WRITE_REGISTER_BUFFER_USHORT 1006 #define ScsiPortWriteRegisterBufferUlong WRITE_REGISTER_BUFFER_ULONG 1008 #define ScsiPortMoveMemory memmove SCSIPORT_API UCHAR NTAPI ScsiPortReadRegisterUchar(IN PUCHAR Register)
struct _SCSI_POWER_REQUEST_BLOCK SCSI_POWER_REQUEST_BLOCK
UCHAR SenseInfoBufferLength
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
PHW_ADAPTER_STATE HwAdapterState
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
_Must_inspect_result_ _In_ PVOID Argument2
#define _Field_size_bytes_(s)
SCSIPORT_API VOID NTAPI ScsiPortLogError(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN ULONG ErrorCode, IN ULONG UniqueId)
struct SRB_ALIGN _SRBEX_DATA_BIDIRECTIONAL SRBEX_DATA_BIDIRECTIONAL
SCSIPORT_API VOID NTAPI ScsiPortWritePortUlong(IN PULONG Port, IN ULONG Value)
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB32 SRBEX_DATA_SCSI_CDB32
#define _Must_inspect_result_
struct _ACCESS_RANGE ACCESS_RANGE
struct SRB_ALIGN _SRBEX_DATA_BIDIRECTIONAL * PSRBEX_DATA_BIDIRECTIONAL
struct SRB_ALIGN _SRBEX_DATA_WMI SRBEX_DATA_WMI
struct _STOR_DEVICE_CAPABILITIES * PSTOR_DEVICE_CAPABILITIES
struct _SCSI_WMI_REQUEST_BLOCK SCSI_WMI_REQUEST_BLOCK
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ULONG _In_ ULONG _In_ ULONG Length
enum _INTERFACE_TYPE INTERFACE_TYPE
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
STOR_PNP_ACTION PnPAction
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
_IRQL_requires_same_ _In_opt_ PVOID Argument1
enum _SRBEXDATATYPE SRBEXDATATYPE
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB_VAR SRBEX_DATA_SCSI_CDB_VAR
SCSIPORT_API ULONG NTAPI ScsiPortInitialize(IN PVOID Argument1, IN PVOID Argument2, IN struct _HW_INITIALIZATION_DATA *HwInitializationData, IN PVOID HwContext)
#define STORAGE_REQUEST_BLOCK_VERSION_1
#define _In_reads_bytes_(s)
enum _SCSI_ADAPTER_CONTROL_TYPE * PSCSI_ADAPTER_CONTROL_TYPE
#define SRBEX_DATA_WMI_LENGTH
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
SCSIPORT_API PVOID NTAPI ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
_ANONYMOUS_UNION union _HW_INITIALIZATION_DATA::@2188 DUMMYUNIONNAME
SCSIPORT_API ULONG NTAPI ScsiPortGetBusData(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Length)
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
SCSIPORT_API PVOID NTAPI ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun)
enum _SCSI_NOTIFICATION_TYPE * PSCSI_NOTIFICATION_TYPE
ULONG DataInTransferLength
#define SRBEX_DATA_PNP_LENGTH
struct SRB_ALIGN _SRBEX_DATA * PSRBEX_DATA
struct SRB_ALIGN _SRBEX_DATA_POWER SRBEX_DATA_POWER
struct SRB_ALIGN _SRBEX_DATA_PNP SRBEX_DATA_PNP
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value)
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
SCSIPORT_API VOID NTAPI ScsiPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
ULONG HwInitializationDataSize
struct SRB_ALIGN _SRBEX_DATA SRBEX_DATA
#define ReadBuffer(BaseIoAddress, Buffer, Count)
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
enum _STOR_PNP_ACTION STOR_PNP_ACTION
UCHAR SenseInfoBufferLength
ULONG DeviceExtensionSize
enum _DMA_WIDTH DMA_WIDTH
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
SCSIPORT_API SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID VirtualAddress, OUT ULONG *Length)
_Must_inspect_result_ _IRQL_requires_max_(PASSIVE_LEVEL) SCSIPORT_API ULONG NTAPI ScsiPortInitialize(_In_ PVOID Argument1
PHW_DMA_STARTED HwDmaStarted
BOOLEAN MultipleRequestPerLu
PHW_FIND_ADAPTER HwFindAdapter
_ANONYMOUS_UNION union _SCSI_REQUEST_BLOCK::@2187 DUMMYUNIONNAME
SCSIPORT_API VOID NTAPI ScsiPortMoveMemory(IN PVOID WriteBuffer, IN PVOID ReadBuffer, IN ULONG Length)
SCSIPORT_API VOID NTAPI ScsiPortWritePortUshort(IN PUSHORT Port, IN USHORT Value)
ULONG SpecificLuExtensionSize
struct _SCSI_REQUEST_BLOCK * NextSrb
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count)
SCSIPORT_API PSCSI_REQUEST_BLOCK NTAPI ScsiPortGetSrb(IN PVOID DeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN LONG QueueTag)
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value)
_Field_size_bytes_(DataTransferLength) PVOID DataBuffer
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
SCSIPORT_API ULONG NTAPI ScsiPortReadPortUlong(IN PULONG Port)
#define SRBEX_DATA_SCSI_CDB32_LENGTH
OUT BOOLEAN SupportedTypeList[0]
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER * PSTORAGE_REQUEST_BLOCK_HEADER
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
SCSIPORT_API BOOLEAN NTAPI ScsiPortValidateRange(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
struct _SCSI_REQUEST_BLOCK * NextSrb
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB16 SRBEX_DATA_SCSI_CDB16
struct _SCSI_PNP_REQUEST_BLOCK * PSCSI_PNP_REQUEST_BLOCK
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
SCSIPORT_API SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortConvertUlongToPhysicalAddress(ULONG UlongAddress)
BOOLEAN NeedPhysicalAddresses
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
STOR_POWER_ACTION PowerAction
typedef _Field_range_(0, 255) ULONG AACS_LAYER_NUMBER
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
PHW_INTERRUPT HwInterrupt
SCSIPORT_API ULONG NTAPI ScsiPortReadRegisterUlong(IN PULONG Register)
struct SRB_ALIGN _SRBEX_DATA_PNP * PSRBEX_DATA_PNP
#define _At_buffer_(t, i, c, a)
enum _STOR_DEVICE_POWER_STATE * PSTOR_DEVICE_POWER_STATE
SCSIPORT_API VOID NTAPI ScsiPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value)
struct SRB_ALIGN _SRBEX_DATA_IO_INFO SRBEX_DATA_IO_INFO
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB16 * PSRBEX_DATA_SCSI_CDB16
enum _KINTERRUPT_MODE KINTERRUPT_MODE
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count)
struct _SCSI_PNP_REQUEST_BLOCK SCSI_PNP_REQUEST_BLOCK
_Reserved_ PVOID Reserved
SCSIPORT_API USHORT NTAPI ScsiPortReadPortUshort(IN PUSHORT Port)
enum _STOR_POWER_ACTION STOR_POWER_ACTION
struct SRB_ALIGN _SRBEX_DATA_IO_INFO * PSRBEX_DATA_IO_INFO
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER STORAGE_REQUEST_BLOCK_HEADER
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
#define SRBEX_DATA_BIDIRECTIONAL_LENGTH
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
SCSIPORT_API VOID NTAPI ScsiPortCompleteRequest(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN UCHAR SrbStatus)
struct _SCSI_WMI_REQUEST_BLOCK * PSCSI_WMI_REQUEST_BLOCK
UCHAR SenseInfoBufferLength
struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST * PSCSI_SUPPORTED_CONTROL_TYPE_LIST
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
struct _ACCESS_RANGE * PACCESS_RANGE
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
struct STOR_ADDRESS_ALIGN _STOR_ADDRESS STOR_ADDRESS
enum _SRBEXDATATYPE * PSRBEXDATATYPE
_In_ UCHAR SenseInfoBufferLength
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
typedef _Struct_size_bytes_(SrbLength) struct SRB_ALIGN _STORAGE_REQUEST_BLOCK
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB32 * PSRBEX_DATA_SCSI_CDB32
_SCSI_ADAPTER_CONTROL_TYPE
IN PVOID IN PVOID IN USHORT Version
PVOID POINTER_ALIGN DataPath
struct _SCSI_REQUEST_BLOCK SCSI_REQUEST_BLOCK
SCSI_PHYSICAL_ADDRESS RangeStart
SCSIPORT_API ULONG NTAPI ScsiPortSetBusDataByOffset(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK
struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN
PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS
struct _HW_INITIALIZATION_DATA * PHW_INITIALIZATION_DATA
#define SRBEX_DATA_POWER_LENGTH
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN _In_opt_ WDFREQUEST OriginalRequest
ULONG NumberOfAccessRanges
STOR_POWER_ACTION PowerAction
enum _DMA_SPEED DMA_SPEED
SCSIPORT_API PVOID NTAPI ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
struct SRB_ALIGN _SRBEX_DATA_POWER * PSRBEX_DATA_POWER
PHYSICAL_ADDRESS * PSCSI_PHYSICAL_ADDRESS
_In_ ULONG _In_ ULONG Offset
UCHAR SenseInfoBufferLength
enum _SCSI_ADAPTER_CONTROL_STATUS * PSCSI_ADAPTER_CONTROL_STATUS
PHW_ADAPTER_CONTROL HwAdapterControl
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count)
SCSIPORT_API VOID NTAPI ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress)
#define _Field_size_bytes_full_(s)
SCSIPORT_API VOID __cdecl ScsiDebugPrint(ULONG DebugPrintLevel, PCCHAR DebugMessage,...)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
BOOLEAN(NTAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
#define ScsiPortConvertPhysicalAddressToUlong(Address)
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count)
PHW_INITIALIZE HwInitialize
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB_VAR * PSRBEX_DATA_SCSI_CDB_VAR
struct _SCSI_REQUEST_BLOCK * NextSrb
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
_SCSI_ADAPTER_CONTROL_STATUS
SCSIPORT_API UCHAR NTAPI ScsiPortReadPortUchar(IN PUCHAR Port)
struct tagContext Context
VOID(NTAPI * PHW_TIMER)(IN PVOID DeviceExtension)
INTERFACE_TYPE AdapterInterfaceType
struct _STOR_DEVICE_CAPABILITIES STOR_DEVICE_CAPABILITIES
SCSIPORT_API VOID __cdecl ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension,...)
struct _SCSI_POWER_REQUEST_BLOCK * PSCSI_POWER_REQUEST_BLOCK
SCSIPORT_API VOID NTAPI ScsiPortFlushDma(IN PVOID DeviceExtension)
struct SRB_ALIGN _SRBEX_DATA_WMI * PSRBEX_DATA_WMI
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST SCSI_SUPPORTED_CONTROL_TYPE_LIST
IN PSCSI_REQUEST_BLOCK Srb
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value)
SCSIPORT_API PVOID NTAPI ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN ULONG NumberOfBytes)
static const WCHAR Signature[]
STOR_DEVICE_POWER_STATE DevicePowerState
enum _STOR_POWER_ACTION * PSTOR_POWER_ACTION
ULONG(NTAPI * PHW_FIND_ADAPTER)(IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
STOR_PNP_ACTION PnPAction
SCSIPORT_API VOID NTAPI ScsiPortStallExecution(IN ULONG Delay)
STOR_DEVICE_POWER_STATE DevicePowerState
#define SRBEX_DATA_SCSI_CDB16_LENGTH
#define WriteBuffer(BaseIoAddress, Buffer, Count)
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
VOID(NTAPI * PHW_DMA_STARTED)(IN PVOID DeviceExtension)
SCSIPORT_API USHORT NTAPI ScsiPortReadRegisterUshort(IN PUSHORT Register)
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
SCSIPORT_API VOID NTAPI ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID LogicalAddress, IN ULONG Length)
struct _PORT_CONFIGURATION_INFORMATION * PPORT_CONFIGURATION_INFORMATION
#define SRBEX_DATA_IO_INFO_LENGTH