Présentation des pilotes de classe de stockage
Un pilote de classe de stockage utilise l’interface de port/classe SCSI bien établie pour contrôler un périphérique de stockage de masse de son type sur n’importe quel bus pour lequel le système fournit un pilote de port de stockage (actuellement SCSI, IDE, USB et IEEE 1394). Le bus particulier auquel un périphérique de stockage est connecté est transparent pour le pilote de classe de stockage.
Tout pilote de classe de stockage gère les demandes d’E/S provenant d’applications utilisateur ou de pilotes de niveau supérieur en créant des blocs de requête SCSI (SBS) contenant des blocs de descripteur de commande (CDBs) et en les envoyant au pilote de port de stockage sous-jacent par le biais de tous les pilotes de filtre intervenant.
Un pilote de classe de stockage ne fournit pas d’informations d’adressage dans le SRB. Au lieu de cela, le pilote de port (ou un pilote encore inférieur) est responsable de tout adressage requis. Le pilote de port de stockage traduit les SBA dans le format requis par l’adaptateur de bus hôte (HBA) sous-jacent, qui peut être un adaptateur de bus hôte SCSI ou 1394, un contrôleur IDE ou tout autre matériel de ce type, et émet des commandes sur l’appareil. Dans le Kit de pilotes Windows (WDK), le terme « HBA » désigne toute carte ou contrôleur sous-jacent.
Pour le gestionnaire d’E/S et tous les pilotes de niveau supérieur superposés au-dessus d’un pilote de classe de stockage, la plupart des pilotes de classe de stockage sont des pilotes intermédiaires en mode noyau standard. Par conséquent, chaque pilote de classe doit avoir une routine DriverEntry, une routine AddDevice, une routine de déchargement, une ou plusieurs routines IoCompletion, ainsi que des routines DispatchPnP et DispatchPower pour gérer Plug-and-Play et d’alimentation IRP.
Un pilote de classe de stockage doit également avoir une routine DispatchSystemControl pour gérer les IRP de contrôle système, et peut avoir n’importe quelle autre routine de pilote de niveau supérieur standard, telle qu’une routine StartIo , telle que déterminée par le concepteur de pilotes. Pour plus d’informations sur le contrôle système et les routines de pilotes en mode noyau standard, consultez Routines des pilotes standard.
Pour le gestionnaire PnP, un pilote de classe de stockage est un pilote de fonction, c’est-à-dire un pilote qui pilote un appareil individuel. Un pilote de classe de stockage peut également agir en tant que pilotes de bus, énumérant les appareils enfants de ses appareils. Par exemple, le pilote de classe pour un périphérique multimédia partitionné tel qu’un disque retourne une liste de PDO représentant ses partitions. Chaque PDO de ce type peut être traité en tant qu’appareil cible et être traité par son propre pilote de classe.
Notes
Un pilote pour un périphérique SCSI tel qu’une imprimante ou un scanneur doit être implémenté comme décrit dans cette section. Un pilote pour un périphérique SCSI de ce type utilise la même classe/interface de port SCSI pour contrôler son appareil et a les mêmes responsabilités pour gérer les irPs, générer des SDR et les envoyer au pilote de port sous-jacent que le fait un pilote pour un périphérique de stockage.