Partager via


Modèle d’E/S de port SCSI

Le pilote de port SCSI communique avec son pilote miniport au moyen d’une série de pointeurs vers les routines de rappel du pilote miniport dans sa table de répartition et son objet pilote. Le pilote miniport appelle ScsiPortInitialize à partir de sa routine DriverEntry afin d’initialiser la table de répartition et l’objet pilote du port SCSI avec ces pointeurs de rappel. L’un de ces pointeurs de rappel est le point d’entrée de la routine de démarrage d’E/S du pilote miniport qui est utilisée pour traiter les demandes d’E/S. Le pilote de port affecte ce pointeur au membre DriverStartIo de l’objet pilote.

Chaque fois que le port SCSI reçoit une demande d’E/S d’un pilote de niveau supérieur, il met la demande en file d’attente dans une file d’attente interne. Pour plus d’informations sur les files d’attente internes du port SCSI, consultez Gestion des files d’attente du pilote de port SCSI.

Une fois que l’appareil cible est prêt à recevoir la demande d’E/S suivante, le port SCSI appelle IoStartPacket, qui à son tour appelle la routine de rappel d’E/S de démarrage du pilote miniport qui est stockée dans DriverObject-DriverStartIo>. Pour plus d’informations sur l’opération et les caractéristiques requises de la routine d’E/S de démarrage du pilote miniport, consultez Routine HwScsiStartIo du pilote miniport SCSI.

Le port SCSI déclenche l’IRQL du processeur avant d’appeler la routine de démarrage des E/S du pilote miniport, afin de masquer les interruptions et de garantir que la routine d’E/S de démarrage a synchronisé l’accès aux structures critiques du système d’exploitation et du pilote.

Bien que le flux de paquets de demandes d’E/S entre un pilote de classe de stockage et le pilote de port SCSI soit asynchrone, le flux de paquets de demandes d’E/S entre le pilote de port SCSI et le périphérique cible est synchrone. Le port SCSI utilise un système de mise en file d’attente interne qui permet aux pilotes de classe d’envoyer de nouvelles demandes d’E/S au port SCSI avant la fin des demandes d’E/S précédentes. Toutefois, le port SCSI n’envoie pas la demande d’E/S suivante à l’appareil cible tant qu’il n’a pas reçu une notification du pilote miniport indiquant que le pilote miniport est prêt à recevoir la demande d’E/S suivante. Le pilote miniport avertit le port SCSI en effectuant un appel à la routine de bibliothèque ScsiPortNotification .

Le pilote Storport offre un modèle d’E/S plus flexible, notamment en ce qui concerne le masquage des interruptions. Pour plus d’informations sur les différences entre le modèle d’E/S Storport et le modèle d’E/S de port SCSI, consultez Modèle d’E/S Storport.