Partager via


Routine HwStorBuildIo non synchronisée

Dans le modèle d’E/S du pilote port-miniport SCSI, la routine StartIo du pilote miniport, HwScsiStartIo, doit transmettre les blocs de requête SCSI (SBS) au matériel aussi rapidement que possible. Cela est essentiel, car le travail effectué dans la routine StartIo du pilote miniport est effectué pendant que les interruptions sont désactivées et à IRQL = DISPATCH_LEVEL. Malheureusement, ce modèle n’est pas bien adapté aux pilotes de certains adaptateurs de bus hôte (HBA) hautes performances, car les pilotes miniport pour ces adaptateurs HBA doivent effectuer une quantité importante de traitement lorsque les E/S sont lancées. Si le pilote miniport effectue ce traitement dans sa routine StartIo , il dégrade les performances du système.

Le modèle d’E/S Storport prend en charge la routine HwStorBuildIo afin de supprimer une partie de la charge de traitement de la routine StartIo du pilote miniport, HwStorStartIo. Dans le modèle d’E/S Storport, le système appelle HwStorBuildIo juste avant d’appeler la routine HwStorStartIo du pilote miniport et y effectue autant de traitement que possible. Cette stratégie évite les conflits pour les cycles d’UC et pour l’accès aux structures système critiques, telles que l’extension d’appareil, car HwStorBuildIo s’exécute à un IRQL inférieur et ne contient aucun verrou de synchronisation.

La routine HwStorBuildIo doit traduire le SRB en une structure de données plus pratique, générer des listes de points/regroupements et effectuer d’autres traitements par SRB. Étant donné qu’aucun verrou n’est conservé pendant l’exécution de la routine HwStorBuildIo , le pilote miniport ne doit accéder à aucune autre donnée que celle du SRB et de l’extension SRB. Si l’accès à d’autres structures est requis pour une partie du traitement, cette partie doit toujours être effectuée dans la routine HwStartIo .

Pour obtenir des performances maximales, la routine HwStorBuildIo doit être utilisée conjointement avec le mode duplex intégral.