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.