SCSI Port's Interface with SCSI Port Miniport Drivers
Communication between the SCSI Port driver and the SCSI Port miniport drivers takes place by means of SCSI request blocks (SRBs) and miniport driver callback routines. For a detailed discussion of the SCSI Port miniport driver callback routines, see SCSI Miniport Drivers.
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 SCSI Miniport Driver's HwScsiStartIo Routine.
SCSI Port forwards SRBs to SCSI Port miniport drivers synchronously, except when the adapter supports tagged queuing. Host bus adapters that support tagged queuing can queue requests internally and process them in the order that is indicated by the tags that SCSI Port assigns to each request. The SCSI_REQUEST_BLOCK (SRB) structure contains two members that the SCSI Port driver uses to specify how SRBs should be ordered in the host adapter's internal queue: QueuedTag and QueueAction. SCSI Port 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 SCSI Port to track which SRBs have completed successfully and which SRBs have timed out.
The QueueAction member is assigned one of the following values:
SRB_SIMPLE_TAG_REQUEST
SRB_HEAD_OF_QUEUE_TAG_REQUEST
SRB_ORDERED_QUEUE_TAG_REQUEST
For an explanation of these values, see the SCSI-2 specification.