Interface de Storport avec les pilotes Storport Miniport

La communication entre le pilote Storport et les pilotes de miniport Storport s’effectue au moyen de blocs de requête SCSI (SB) et de routines de rappel de pilote miniport. Pour une présentation détaillée des routines de rappel des pilotes Storport miniport, consultez Routines des pilotes Storport Miniport.

Pour obtenir une vue d’ensemble et une définition des fonctions SRB individuelles, des indicateurs SRB et des valeurs status SRB, consultez SCSI_REQUEST_BLOCK.

Pour plus d’informations sur la façon dont les pilotes miniport doivent répondre à chaque fonction SRB individuelle, consultez HwStorStartIo.

Storport transfère les SB aux pilotes Storport miniport pour un traitement asynchrone. En règle générale, le pilote de miniport prend un certain temps pour effectuer la demande. Les adaptateurs de bus hôte (HBA) qui prennent en charge la mise en file d’attente étiquetée peuvent mettre en file d’attente les demandes en interne et les traiter dans l’ordre indiqué par les balises que Storport attribue à chaque requête. La structure SCSI_REQUEST_BLOCK (SRB) contient deux membres que les pilotes Storport et miniport utilisent pour spécifier la façon dont les SRS doivent être triés dans la file d’attente interne de l’adaptateur hôte :

  • QueueTag : Storport attribue un nombre, ou une valeur « tag », au membre QueuedTag de chaque SRB. Cette balise indique l’ordre dans lequel l’adaptateur doit traiter les paquets. Les valeurs de balise permettent également à Storport de suivre les SRB qui sont encore en suspens, qui se sont terminés avec succès et qui ont expiré.

  • QueueAction : indique le message de mise en file d’attente étiquetée à utiliser lorsque l’indicateur SRB_FLAGS_QUEUE_ACTION_ENABLE est défini dans SRB. SrbFlags. L’utilisation de QueueAction par le miniport est spécifique au miniport. Les miniports basés sur SCSI peuvent suivre la spécification SCSI si l’adaptateur HBA la prend en charge. QueueAction peut être l’une des valeurs suivantes :

Valeur Signification
SRB_SIMPLE_TAG_REQUEST Mettez la requête en file d’attente et exécutez-la dans n’importe quel ordre une fois que toutes les demandes SRB_HEAD_OF_QUEUE_TAG_REQUEST et SRB_ORDERED_QUEUE_TAG_REQUEST plus anciennes ont pris fin.
SRB_ORDERED_QUEUE_TAG_REQUEST Exécutez la demande uniquement une fois que toutes les anciennes SRB_HEAD_OF_QUEUE_TAG_REQUEST et toutes les demandes plus anciennes ont été effectuées.
SRB_HEAD_OF_QUEUE_TAG_REQUEST Placez la demande à l’avant de la file d’attente et exécutez-la avant toutes les autres requêtes de la file d’attente, y compris toutes les autres demandes marquées par SRB_HEAD_OF_QUEUE_TAG_REQUEST.

Pour plus d’informations, consultez la spécification SCSI.