A.2.2 Supporting SCSI-Specific Functionality
Depending on the nature of its device, an SFD also might (or must) be
responsible for the following SCSI-specific functionality:
-
Translating data from or into a device-specific format before or after sending
a transfer request to lower driver(s) if the device processes data in a
nonstandard format
-
Setting up IRPs with SRBs for port-driver-supported I/O control requests, for
driver-defined I/O control requests, or for pass-through requests, as
necessary for its device and sending those IRPs through the class driver to
the port driver
-
Establishing time-out values for requests
-
Supplying one or more IoCompletion routines and, like the underlying SCSI
class driver, handling certain SCSI error conditions and retries for
device-specific requests that require special handling
In general, an SFD has the same responsibilities as a SCSI class driver for
those requests that require device-specific handling. For a discussion of the
functionality required of SCSI class drivers, see Section
A.1.
The following subsections describe how SFDs provide this SCSI-specific
functionality in the context of each standard routine that a SCSI filter
driver commonly has.