Communication between the Storport driver and the Storport miniport drivers takes place by means of SCSI request blocks (SRBs) and miniport driver callback routines. For a detailed discussion of the Storport miniport driver callback routines, see Storport Driver Miniport Routines.
For an overview and definition of the individual SRB functions, SRB flags, and SRB status values, see SCSI_REQUEST_BLOCK.
For discussions about how miniport drivers must respond to each individual SRB function, see HwStorStartIo.
Storport forwards SRBs to Storport miniport drivers for asynchronous processing. Typically, the miniport driver will take some time to actually complete the request. Host bus adapters that support tagged queuing can queue requests internally and process them in the order that is indicated by the tags that Storport assigns to each request. The SCSI_REQUEST_BLOCK (SRB) structure contains two members that the Storport driver uses to specify how SRBs should be ordered in the host adapter's internal queue: QueuedTag and QueueAction. Storport assigns a count, or "tag" value, to the QueuedTag member of each SRB that indicates the order in which the adapter should process the packets. The tag values also allow Storport to track which SRBs have completed successfully and which SRBs have timed out.
The QueueAction member is assigned one of the following values:
For an explanation of these values, see the SCSI-3 specification.