Partager via


Architecture du pilote de stockage Windows

Sur Windows, les périphériques de stockage ont des pilotes de classe et de filtre. Ces pilotes agissent comme une interface entre tous les pilotes intermédiaires ou de niveau le plus élevé superposés au-dessus d’eux 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 intermédiaires ou de niveau supérieur, tels qu’un pilote de système de fichiers. Les pilotes de classe de stockage traduisent les IRP standard qu’ils reçoivent en IRP avec des blocs de requêtes de stockage (SRB) avant d’envoyer chaque IRP au pilote de niveau immédiatement inférieur. Un pilote de port de stockage traduit les SRB des pilotes de classe en commandes spécifiques au bus, qu’il envoie à l’adaptateur de bus hôte de stockage (HBA) via un pilote de bus d’E/S et éventuellement un ou plusieurs pilotes de filtre.

La figure suivante montre l’architecture en couches des pilotes de stockage Windows.

diagramme illustrant l’architecture en couches des pilotes de stockage du système d’exploitation nt.

À partir du bas de la figure :

  1. Un pilote de port de stockage définit une interface pour tous les pilotes de classe de stockage Windows, y compris les pilotes fournis par le système, tels que le disque, la bande et le DVD. Cette interface port/classe isole les pilotes de classe des exigences spécifiques à 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 de périphériques 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 bases de données SRB du pilote supérieur suivant (pilote de classe de stockage ou pilote de filtre intermédiaire) et les traite comme suit :

    • Le pilote du port de stockage transmet les SRB avec CDB à un pilote de miniport Storport spécifique au HBA et indépendant du système d’exploitation. Ce pilote miniport est lié dynamiquement à son pilote de port correspondant et fournit une prise en charge spécifique du matériel pour un HBA particulier. Pour plus d’informations sur l’implémentation d’un pilote miniport, consultez Pilotes miniport Storport.
    • Le pilote de port de stockage d’un ancien bus IDE/ATAPI ou IEEE 1394 traduit les SRB reçus du pilote de classe de stockage dans le format requis par l’adaptateur sous-jacent. Par exemple, il peut réemballer les CDB en fonction d’un protocole de transport spécifique au bus. Ou il peut les traduire dans un autre format, isolant ainsi les pilotes de niveau supérieur des particularités du bus sous-jacent.
  2. Un pilote de filtre de stockage supérieur ou inférieur prend en charge les fonctionnalités spécifiques aux appareils non fournies par un pilote de classe de stockage fourni par le système. Un pilote de stockage de filtre inférieur surveille les SRB et/ou les IRP, émis par un pilote de classe de stockage. Il les modifie en fonction des besoins avant de les transmettre au pilote inférieur suivant, qui peut être 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.

  3. 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 appareils CD-ROM sur n’importe quel bus pris en charge ; un autre peut contrôler tous les périphériques de disque. Le pilote de classe de stockage gère les demandes d’E/S des applications utilisateur ou des pilotes plus élevés dans la pile de stockage. Il le fait en créant des SRBs contenant des CDBs et en émettant ces SRBs au pilote inférieur suivant (pilote de port de stockage ou pilote de filtre intermédiaire) 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 un périphérique de changeur de bande ou de support est implémenté en tant que pilote miniclass spécifique à l'appareil qui se relie à 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 Storage Class Drivers. Pour plus d’informations sur l’implémentation d’un pilote de mini-classe de bande ou de changeur, consultez respectivement Pilotes de bande et Pilotes de changeur.

  4. Un pilote de filtre supérieur de stockage intercepte les IRP des applications utilisateur et des pilotes situés plus haut dans la pile de stockage. Il peut les modifier avant de les transmettre au pilote suivant de niveau inférieur (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é :

  • Selon l’architecture du pilote port/miniport, comme le pilote de port Storport ou SCSI.
  • En tant que pilote monolithique qui contrôle un seul élément matériel standard, tel que le pilote de port IDE/ATAPI.
  • En tant que pilote de filtre qui traduit les SRBs dans le 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 tableau de disques, un enregistreur de pilotes peut économiser beaucoup d’efforts en écrivant un pilote miniport pseudo-SCSI qui lie le 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. En revanche, les pilotes de port et de classe fournis par le système gèrent une grande partie du travail nécessaire au nom d’un miniport pseudo-SCSI. Ce travail inclut les accès au Registre lors de l’initialisation, toutes les allocations de ressources et d’objets, la synchronisation, le présage des transferts demandés pour répondre aux fonctionnalités de l’appareil du miniport et les nouvelles tentatives de demandes.