22 #ifndef __SCSI_PORT_H__ 23 #define __SCSI_PORT_H__ 37 #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER 39 #define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort" 47 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 48 #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 49 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS) 50 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS) 51 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 52 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS) 53 #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS) 54 #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS) 171 #define SCSI_IOCTL_DATA_OUT 0 172 #define SCSI_IOCTL_DATA_IN 1 173 #define SCSI_IOCTL_DATA_UNSPECIFIED 2 175 #define CLASS_SPECIAL_CAUSE_NOT_REPORTABLE_HACK 0x00000020 210 PVOID DeviceExtension);
219 #endif //__SCSI_PORT_H__
struct _SCSI_BUS_DATA * PSCSI_BUS_DATA
struct _SCSI_ADAPTER_BUS_INFO SCSI_ADAPTER_BUS_INFO
ULONG SupportedAsynchronousEvents
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
_In_ PSCSI_REQUEST_BLOCK Srb
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
struct _SCSI_ADDRESS * PSCSI_ADDRESS
struct _DUMP_POINTERS * PDUMP_POINTERS
NTSTATUS ScsiClassInternalIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _IO_SCSI_CAPABILITIES * PIO_SCSI_CAPABILITIES
NTSTATUS ScsiClassReadDeviceInquiryData(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN DirectAccess)
VOID ScsiClassReleaseQueue(IN PDEVICE_OBJECT DeviceObject)
struct _DUMP_POINTERS DUMP_POINTERS
ULONG NextInquiryDataOffset
NTSTATUS ScsiClassGetInquiryData(IN PDEVICE_OBJECT PortDeviceObject, IN PSCSI_ADAPTER_BUS_INFO *ConfigInfo)
VOID ScsiClassInitSrbBusAddr(PSCSI_REQUEST_BLOCK Srb, PVOID DeviceExtension)
struct _SCSI_PASS_THROUGH_DIRECT SCSI_PASS_THROUGH_DIRECT
ULONG MaximumPhysicalPages
NTSTATUS ScsiClassGetAddress(IN PDEVICE_OBJECT ClassDeviceObject, OUT PSCSI_ADDRESS Address)
struct _SCSI_INQUIRY_DATA SCSI_INQUIRY_DATA
_In_ PDEVICE_OBJECT DeviceObject
struct _SRB_IO_CONTROL * PSRB_IO_CONTROL
struct _SCSI_INQUIRY_DATA * PSCSI_INQUIRY_DATA
NTSTATUS ScsiClassRemoveDevice(IN PDEVICE_OBJECT PortDeviceObject, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun)
NTSTATUS ScsiClassReadDriveCapacity(IN PDEVICE_OBJECT DeviceObject)
struct _ADAPTER_OBJECT * AdapterObject
LARGE_INTEGER CommonBufferPa
ULONG MaximumTransferLength
NTSTATUS ScsiClassSendSrbSynchronous(IN PDEVICE_OBJECT TargetDeviceObject, IN PSCSI_REQUEST_BLOCK _srb, IN PKEVENT event)
NTSTATUS ScsiClassIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
NTSTATUS ScsiClassClaimDevice(IN PDEVICE_OBJECT PortDeviceObject, IN PSCSI_INQUIRY_DATA LunInfo, IN BOOLEAN Release, OUT PDEVICE_OBJECT *NewPortDeviceObject OPTIONAL)
struct _SCSI_BUS_DATA SCSI_BUS_DATA
struct _SCSI_PASS_THROUGH SCSI_PASS_THROUGH
struct _SRB_IO_CONTROL SRB_IO_CONTROL
NTSTATUS ScsiClassGetCapabilities(IN PDEVICE_OBJECT PortDeviceObject, OUT PIO_SCSI_CAPABILITIES *PortCapabilities)
struct _SCSI_PASS_THROUGH_DIRECT * PSCSI_PASS_THROUGH_DIRECT
struct _SCSI_ADDRESS SCSI_ADDRESS
struct _SCSI_PASS_THROUGH * PSCSI_PASS_THROUGH
struct _SCSI_ADAPTER_BUS_INFO * PSCSI_ADAPTER_BUS_INFO
UCHAR NumberOfLogicalUnits
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
struct _IO_SCSI_CAPABILITIES IO_SCSI_CAPABILITIES
NTSTATUS DbgWaitForSingleObject_(IN PVOID Object, IN PLARGE_INTEGER Timeout OPTIONAL)
PULONG MinorVersion OPTIONAL