A class driver does not necessarily set up an SRB when it sets up an IRP_MJ_DEVICE_CONTROL request for an I/O control code supported by the port driver, such as IOCTL_SCSI_GET_CAPABILITIES, IOCTL_SCSI_PASS_THROUGH, or IOCTL_SCSI_PASS_THROUGH_DIRECT.
The class driver’s DispatchDeviceControl routine is responsible for the following on receipt of a IOCTL_SCSI_PASS_THROUGH or IOCTL_SCSI_PASS_THROUGH_DIRECT request:
If the port driver’s I/O stack location for an IOCTL_SCSI_PASS_THROUGH or IOCTL_SCSI_PASS_THROUGH_DIRECT request does not have its MinorFunction field set with IRP_MN_SCSI_CLASS, the port driver assumes the request came directly from an application and that no class driver exists for the target device type. It is an application error to send such a request directly to the port driver for a device that has been claimed by a SCSI class driver.