Architecture du pilote de stockage Windows
La classe de système d’exploitation Windows et les pilotes de filtre pour les périphériques de stockage agissent comme une interface entre tous les pilotes de niveau intermédiaire ou supérieur superposés au pilote de classe ou de filtre et un pilote de port fourni par le système.
Les demandes d’E/S d’une application utilisateur ou d’un composant noyau atteignent les pilotes de classe de stockage via les services système d’E/S et un ou plusieurs pilotes de niveau intermédiaire ou supérieur, tels qu’un pilote de système de fichiers. Les pilotes de classe de stockage traduisent les IRP standard qu’ils obtiennent en irps avec des blocs de requête SCSI définis par le système contenant des blocs de descripteur de commande SCSI (CDP) avant d’envoyer chaque IRP au pilote inférieur suivant. Un pilote de port de stockage convertit les SBA des pilotes de classe en commandes spécifiques au bus qu’il envoie au HBA de stockage, par le biais d’un pilote de bus d’E/S et éventuellement d’un ou plusieurs pilotes de filtre.
La figure suivante montre l’architecture en couches des pilotes de stockage Windows.
À partir du bas de la figure, les éléments suivants décrivent chaque type de pilote de stockage :
Un pilote de port de stockage définit une interface avec tous les pilotes de classe de stockage Windows, y compris les pilotes de disque, de bande, de CDROM, de DVD et de changeurs fournis par le système. Cette interface port/classe isole les pilotes de classe des exigences spécifiques à l’adaptateur de l’adaptateur de bus hôte auquel leurs appareils respectifs sont connectés. Un pilote de port de stockage synchronise également l’accès au bus pour tous les pilotes d’appareils sur l’adaptateur HBA correspondant. Le système fournit des pilotes de port de stockage pour les adaptateurs SCSI, IDE, USB et IEEE 1394.
Un pilote de port de stockage reçoit des SDR du pilote supérieur suivant (un pilote de classe de stockage ou un pilote de filtre intervenant) et les traite comme suit :
- Le pilote de port de stockage pour un SCSI, ou un autre bus, transmet les SBA avec des cdBs sur un pilote Storport miniport spécifique au système d’exploitation , qui est lié dynamiquement à son pilote de port correspondant et fournit une prise en charge spécifique au matériel pour un adaptateur HBA particulier. Pour plus d’informations sur l’implémentation d’un pilote miniport SCSI, consultez Pilotes Storport Miniport.
- Le pilote de port de stockage d’un bus IDE/ATAPI ou IEEE 1394 hérité traduit les SB reçus du pilote de classe de stockage au format requis par l’adaptateur sous-jacent, par exemple, en reconditionnant les CDB selon un protocole de transport spécifique au bus, ou en les traduisant dans un autre format, isolant ainsi les pilotes de niveau supérieur des particularités du bus sous-jacent.
Un pilote de filtre de stockage supérieur ou inférieur prend en charge les fonctionnalités spécifiques aux appareils qui ne sont pas fournies par un pilote de classe de stockage fourni par le système. Un pilote de stockage de filtre inférieur surveille les SBS et/ou les IRP émis par un pilote de classe de stockage et les modifie en fonction des besoins avant de les passer au pilote inférieur suivant (un pilote de port de stockage ou un autre pilote de filtre de stockage).
Pour plus d’informations sur l’implémentation d’un pilote de filtre de stockage, consultez Pilotes de filtre de stockage.
Un pilote de classe de stockage utilise l’interface de port/classe SCSI pour contrôler un périphérique de son type sur n’importe quel bus pour lequel le système fournit un pilote de port de stockage. Un pilote de classe est spécifique à une classe particulière de périphérique, par exemple, un pilote de classe peut exécuter tous les périphériques CD-ROM sur n’importe quel bus pris en charge ; une autre peut contrôler tous les périphériques de disque. Le pilote de classe de stockage gère les demandes d’E/S provenant d’applications utilisateur ou de pilotes plus hauts dans la pile de stockage en créant des SDR contenant des cdBs et en émettant ces SDR au pilote inférieur suivant (pilote de port de stockage ou pilote de filtre intervenant), comme si l’appareil était un périphérique SCSI.
L’implémentation d’un pilote de classe de stockage est transparente pour les pilotes de niveau supérieur. Un pilote de classe pour une bande ou un périphérique de changeur de support est implémenté en tant que pilote de miniclasse spécifique au périphérique qui est lié à un pilote de classe fourni par le système. Les pilotes de classe fournis par le système pour d’autres périphériques de stockage, tels que disque et CD-ROM/DVD, sont implémentés en tant que pilotes monolithiques uniques.
Pour plus d’informations sur l’implémentation d’un pilote de classe de stockage, consultez Pilotes de classe de stockage. Pour plus d’informations sur l’implémentation d’un pilote de miniclasse de bande ou de changeur, consultez Pilotes de bande et Pilotes de changeur, respectivement.
Un pilote de stockage de filtre supérieur intercepte les IRPs des applications utilisateur et des pilotes plus haut dans la pile de stockage, puis les modifie éventuellement avant de les transmettre au pilote inférieur suivant (un pilote de classe de stockage ou un autre pilote de filtre de stockage). Les pilotes de filtre surveillent généralement les performances de l’appareil sous-jacent.
Le type de bus auquel un appareil est attaché et l’implémentation de son pilote de port de stockage sont transparents pour les pilotes de niveau supérieur. Un pilote de port de stockage peut être implémenté en fonction de l’architecture du pilote port/miniport, comme le pilote de port SCSI ; en tant que pilote monolithique qui contrôle un seul élément matériel standard, tel que le pilote de port IDE/ATAPI ; ou en tant que pilote de filtre qui traduit les SBS au format requis par une autre pile de pilotes, comme le pilote de port IEEE 1394.
Le pilote de port SCSI fourni par le système peut également servir d’interface entre un pilote de classe de stockage et un pilote miniport SCSI qui contrôle un périphérique de stockage non SCSI du même type. Par exemple, au lieu d’écrire un pilote pour un nouveau contrôleur de disque, un enregistreur de pilotes peut économiser des efforts considérables en matière de conception, de développement et de débogage en écrivant un pilote miniport pseudo-SCSI qui se lie au pilote de port SCSI système et utilise l’interface qu’il fournit. Un tel pilote miniport est nécessaire pour traduire les commandes SCSI entrantes en commandes spécifiques à l’appareil. D’autre part, les pilotes de port et de classe fournis par le système gèrent le travail nécessaire pour le compte d’un miniport pseudo-SCSI, y compris les accès au Registre pendant l’initialisation, toutes les allocations de ressources et d’objets, la synchronisation, le prédimensionnement des transferts demandés en fonction des fonctionnalités de l’appareil du miniport et la nouvelle tentative des demandes.
Pour plus d’informations sur les SBS, consultez la référence sur l’architecture du pilote Kernel-Mode. Pour obtenir des informations spécifiques au type d’appareil sur les CDB, consultez les jeux de commandes appropriés dans les normes INCITS SCSI-3.