A.1.2 Supporting SCSI-Specific Functionality
To the system SCSI port driver, a SCSI class driver is a higher-level driver with built-in, SCSI-specific functionality. In general, every SCSI class driver is responsible for the following:
·Connecting itself to the port driver so that requests can be routed to the correct target(s)
·Creating device objects to represent its devices on each SCSI bus in the machine
·Initializing the appropriate controllers (TIDs) and devices (LUs) on the SCSI bus(es)
·Interpreting system I/O requests (IRPs)
·Mapping IRPs to SCSI class/port interface requests (SRBs with SCSI-II CDBs)
·Establishing time-out values for requests
·Limiting the size of data transfers to suit the limits of the underlying HBA
·Handling error conditions that are not already handled by the port driver or the HBA miniport driver, such as check-condition status or bus resets
The following sections describe how class drivers provide this SCSI-specific functionality in the context of each standard routine that class drivers commonly have.