10 #define USB_STOR_TAG 'sbsu' 13 #define BooleanFlagOn(Flags, SingleFlag) ((BOOLEAN)((((Flags) & (SingleFlag)) != 0))) 17 #define SrbGetCdb(srb) ((PCDB)(srb->Cdb)) 22 #define USB_SUBCLASS_RBC 0x01 // Typically, flash devices 23 #define USB_SUBCLASS_8020 0x02 // CD-ROM 24 #define USB_SUBCLASS_QIC 0x03 // QIC-157 Tapes 25 #define USB_SUBCLASS_UFI 0x04 // Floppy 26 #define USB_SUBCLASS_8070 0x05 // Removable media 27 #define USB_SUBCLASS_SCSI 0x06 // Transparent 28 #define USB_SUBCLASS_LOCKABLE 0x07 // Password-protected 30 #define USB_SUBCLASS_ISD200 0xF0 // ISD200 ATA 31 #define USB_SUBCLASS_CYP_ATACB 0xF1 // Cypress ATACB 32 #define USB_SUBCLASS_VENDOR 0xFF // Use vendor specific 36 #define USB_PROTOCOL_CBI 0x00 // Control/Bulk/Interrupt 37 #define USB_PROTOCOL_CB 0x01 // Control/Bulk w/o interrupt 38 #define USB_PROTOCOL_BULK 0x50 // bulk only 39 #define USB_PROTOCOL_UAS 0x62 // USB Attached SCSI 40 #define USB_PROTOCOL_USBAT 0x80 // SCM-ATAPI bridge 41 #define USB_PROTOCOL_EUSB_SDDR09 0x81 // SCM-SCSI bridge for SDDR-09 42 #define USB_PROTOCOL_SDDR55 0x82 // SDDR-55 (made up) 44 #define USB_PROTOCOL_DPCM_USB 0xF0 // Combination CB/SDDR09 45 #define USB_PROTOCOL_FREECOM 0xF1 // Freecom 46 #define USB_PROTOCOL_DATAFAB 0xF2 // Datafab chipsets 47 #define USB_PROTOCOL_JUMPSHOT 0xF3 // Lexar Jumpshot 48 #define USB_PROTOCOL_ALAUDA 0xF4 // Alauda chipsets 49 #define USB_PROTOCOL_KARMA 0xF5 // Rio Karma 50 #define USB_PROTOCOL_VENDOR 0xFF // Use vendor specific 54 #define USB_BULK_GET_MAX_LUN 0xFE 55 #define USB_BULK_RESET_DEVICE 0xFF 57 #define USB_RECOVERABLE_ERRORS (USBD_STATUS_STALL_PID | USBD_STATUS_DEV_NOT_RESPONDING \ 58 | USBD_STATUS_ENDPOINT_HALTED | USBD_STATUS_NO_BANDWIDTH) 60 #define USB_MAXCHILDREN 16 62 #define USBSTOR_DEFAULT_MAX_TRANSFER_LENGTH 0x10000 64 #define CBW_SIGNATURE 0x43425355 65 #define CSW_SIGNATURE 0x53425355 82 #define CSW_STATUS_COMMAND_PASSED 0x00 83 #define CSW_STATUS_COMMAND_FAILED 0x01 84 #define CSW_STATUS_PHASE_ERROR 0x02 116 #define USBSTOR_FDO_FLAGS_DEVICE_RESETTING 0x00000001 // hard reset is in progress 117 #define USBSTOR_FDO_FLAGS_IRP_LIST_FREEZE 0x00000002 // the irp list is freezed 369 #endif // _USBSTOR_H_
ULONG MaximumTransferLength
PUSBD_INTERFACE_INFORMATION InterfaceInformation
BOOLEAN USBSTOR_QueueAddIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID USBSTOR_QueueWaitForPendingRequests(IN PDEVICE_OBJECT DeviceObject)
ULONG SrbErrorHandlingActive
PDEVICE_OBJECT FunctionalDeviceObject
struct _ERRORHANDLER_WORKITEM_DATA * PERRORHANDLER_WORKITEM_DATA
VOID NTAPI USBSTOR_StartIo(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID USBSTOR_QueueTerminateRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _STORAGE_ADAPTER_DESCRIPTOR_WIN8 * PSTORAGE_ADAPTER_DESCRIPTOR_WIN8
PIO_WORKITEM ResetDeviceWorkItem
NTSTATUS USBSTOR_GetPipeHandles(IN PFDO_DEVICE_EXTENSION DeviceExtension)
PDEVICE_OBJECT PhysicalDeviceObject
WORK_QUEUE_ITEM WorkQueueItem
PSCSI_REQUEST_BLOCK ActiveSrb
USBSTOR_COMMON_DEVICE_EXTENSION Common
NTSTATUS USBSTOR_PdoHandlePnp(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp)
PDEVICE_OBJECT DeviceObject
struct __COMMON_DEVICE_EXTENSION__ * PUSBSTOR_COMMON_DEVICE_EXTENSION
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI USBSTOR_QueueResetPipe(IN PFDO_DEVICE_EXTENSION FDODeviceExtension)
NTSTATUS USBSTOR_ResetDevice(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension)
NTSTATUS USBSTOR_ResetPipeWithHandle(IN PDEVICE_OBJECT DeviceObject, IN USBD_PIPE_HANDLE PipeHandle)
ULONG TimerWorkQueueEnabled
#define INQUIRYDATABUFFERSIZE
NTSTATUS USBSTOR_GetEndpointStatus(IN PDEVICE_OBJECT DeviceObject, IN UCHAR bEndpointAddress, OUT PUSHORT Value)
struct __COMMON_DEVICE_EXTENSION__ USBSTOR_COMMON_DEVICE_EXTENSION
C_ASSERT(sizeof(CBW)==31)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
VOID USBSTOR_QueueInitialize(PFDO_DEVICE_EXTENSION FDODeviceExtension)
VOID NTAPI USBSTOR_QueueResetDevice(IN PFDO_DEVICE_EXTENSION FDODeviceExtension)
const KSDEVICE_DESCRIPTOR DeviceDescriptor
PDEVICE_OBJECT LowerDeviceObject
NTSTATUS USBSTOR_HandleDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _FDO_DEVICE_EXTENSION FDO_DEVICE_EXTENSION
IRP_CONTEXT CurrentIrpContext
NTSTATUS USBSTOR_SyncUrbRequest(IN PDEVICE_OBJECT DeviceObject, OUT PURB UrbRequest)
PSCSI_REQUEST_BLOCK LastTimerActiveSrb
NTSTATUS USBSTOR_FdoHandlePnp(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp)
USBSTOR_COMMON_DEVICE_EXTENSION Common
struct IRP_CONTEXT * PIRP_CONTEXT
PVOID AllocateItem(IN POOL_TYPE PoolType, IN ULONG ItemSize)
SCSI_REQUEST_BLOCK SenseSrb
NTSTATUS USBSTOR_HandleInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _IRP_CONTEXT IRP_CONTEXT
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE ConfigurationHandle
VOID USBSTOR_QueueRelease(IN PDEVICE_OBJECT DeviceObject)
PUSB_STRING_DESCRIPTOR SerialNumber
NTSTATUS USBSTOR_GetMaxLUN(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension)
BOOLEAN AcceleratedTransfer
VOID NTAPI USBSTOR_TimerRoutine(PDEVICE_OBJECT DeviceObject, PVOID Context)
struct _PDO_DEVICE_EXTENSION PDO_DEVICE_EXTENSION
NTSTATUS USBSTOR_CreatePDO(IN PDEVICE_OBJECT DeviceObject, IN UCHAR LUN)
struct _ERRORHANDLER_WORKITEM_DATA ERRORHANDLER_WORKITEM_DATA
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
PDEVICE_OBJECT LowerDeviceObject
struct PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
NTSTATUS NTAPI USBSTOR_GetBusInterface(IN PDEVICE_OBJECT DeviceObject, OUT PUSB_BUS_INTERFACE_USBDI_V2 BusInterface)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
NTSTATUS USBSTOR_GetDescriptors(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS USBSTOR_SendCSWRequest(PFDO_DEVICE_EXTENSION FDODeviceExtension, PIRP Irp)
struct FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
NTSTATUS USBSTOR_SelectConfigurationAndInterface(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension)
VOID NTAPI USBSTOR_CancelIo(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _STORAGE_ADAPTER_DESCRIPTOR_WIN8 STORAGE_ADAPTER_DESCRIPTOR_WIN8
VOID FreeItem(IN PVOID Item)
USB_BUS_INTERFACE_USBDI_V2 BusInterface
ULONG MaximumPhysicalPages
NTSTATUS USBSTOR_HandleExecuteSCSI(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID USBSTOR_QueueNextRequest(IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT * PDODeviceObject