Interfaccia di Storport con i driver Miniport Storport
La comunicazione tra il driver Storport e i driver miniport Storport avviene tramite blocchi di richieste SCSI (SRB) e routine di callback del driver miniport. Per una descrizione dettagliata delle routine di callback del driver miniport Storport, vedere Routine del driver Miniport Storport.
Per una panoramica e una definizione delle singole funzioni SRB, flag SRB e valori di stato SRB, vedere SCSI_REQUEST_BLOCK.
Per informazioni sul modo in cui i driver miniport devono rispondere a ogni singola funzione SRB, vedere HwStorStartIo.
Storport inoltra i driver SRB ai driver miniport Storport per l'elaborazione asincrona. In genere, il driver miniport richiederà del tempo per completare effettivamente la richiesta. Le schede bus host (HBA) che supportano l'accodamento con tag possono accodare le richieste internamente ed elaborarle nell'ordine indicato dai tag assegnati da Storport a ogni richiesta. La struttura SCSI_REQUEST_BLOCK (SRB) contiene due membri usati dai driver Storport e miniport per specificare la modalità di ordinamento degli SRB nella coda interna dell'adattatore host:
QueueTag: Storport assegna un conteggio o un valore "tag" al membro QueuedTag di ogni SRB. Questo tag indica l'ordine in cui l'adattatore deve elaborare i pacchetti. I valori dei tag consentono anche a Storport di rilevare quali SRB sono ancora in sospeso, che sono stati completati correttamente e che hanno superato il timeout.
QueueAction: indica il messaggio di accodamento con tag da usare quando il flag SRB_FLAGS_QUEUE_ACTION_ENABLE è impostato in SRB. SrbFlags. L'uso del miniport di QueueAction è specifico del miniport. I miniport basati su SCSI possono seguire la specifica SCSI se l'HBA lo supporta. QueueAction può essere uno dei valori seguenti:
Valore | Significato |
---|---|
SRB_SIMPLE_TAG_REQUEST | Accoda la richiesta ed eseguila in qualsiasi ordine dopo che tutte le SRB_HEAD_OF_QUEUE_TAG_REQUEST meno recenti e SRB_ORDERED_QUEUE_TAG_REQUEST richieste sono terminate. |
SRB_ORDERED_QUEUE_TAG_REQUEST | Eseguire la richiesta solo dopo che tutte le SRB_HEAD_OF_QUEUE_TAG_REQUEST precedenti e tutte le richieste precedenti sono state completate. |
SRB_HEAD_OF_QUEUE_TAG_REQUEST | Inserire la richiesta all'inizio della coda ed eseguirla prima di tutte le altre richieste nella coda, incluse tutte le altre richieste con tag SRB_HEAD_OF_QUEUE_TAG_REQUEST. |
Per informazioni dettagliate, vedere la specifica SCSI.