Exemple d’objet d’appareil pour un HBA SCSI
La figure suivante montre les objets d’appareil créés pour le système avec un contrôleur PCI IEEE 1394 et un adaptateur PCI SCSI avec un CD-ROM et un périphérique de disque partitionnable attachés. Les objets pour les appareils attachés au contrôleur IEEE 1394 sont affichés et décrits dans Exemple d’objet de périphérique pour un contrôleur IEEE 1394.
Arborescence d’objets de périphérique pour les cd-ROM et les périphériques de disque sur un adaptateur HBA SCSI
À partir du bas de la figure, les éléments suivants décrivent chaque objet de périphérique et son pilote associé :
Le pilote de bus de stockage crée le FDO pour le bus de stockage et l’attache à l’AOP du bus de stockage créé par le gestionnaire PnP (non illustré dans cette figure). La structure de l’arborescence d’objets d’appareil sous le FDO du bus de stockage dépend du bus de stockage et de la façon dont il est intégré au système. Les pilotes de stockage au-dessus du niveau du pilote de port n’interagissent avec aucun de ces objets inférieurs.
Cette figure montre le FDO de bus de stockage créé par le pilote de bus PCI pour un système avec un bus PCI.
Le pilote de bus PCI énumère et crée un PDO pour chaque adaptateur de stockage sur son bus. Le pilote de port de stockage correspondant crée un FDO et l’attache à l’AOP pour son adaptateur.
Cette figure montre deux PDO d’adaptateur : l’un pour un contrôleur IEEE 1394 (décrit dans Exemple d’objet de périphérique pour un contrôleur IEEE 1394) et l’autre pour un HBA SCSI. Le pilote de port SCSI et un pilote miniport associé créent un FDO et l’attachent à l’adaptateur SCSI PDO.
Le pilote de port de stockage virtualise les appareils cibles en créant un PDO pour chaque appareil cible attaché à son adaptateur. Cette figure montre deux PPO de ce type créées par les pilotes de port/miniport SCSI : un pour un lecteur de disque dur et un autre pour un CD-ROM.
Un ou plusieurs pilotes de filtre peuvent attacher un objet de périphérique de filtre (filtre DO) à un PDO de périphérique cible exporté par un pilote de port de stockage. Un tel pilote de filtre peut intercepter et modifier les requêtes envoyées par le pilote de classe à l’appareil cible, par exemple, pour contourner des problèmes spécifiques au périphérique sans nécessiter de modifications spécifiques au matériel pour la classe générique ou les pilotes de port.
Cette figure montre un filtre DO attaché par un pilote de filtre audio CD à l’AOP du CD-ROM.
Un pilote de classe de stockage crée un FDO et l’attache à l’objet de périphérique inférieur suivant, qui est soit un PDO de périphérique cible exporté par un pilote de port de stockage, soit un do de filtre attaché à la pile par un pilote de filtre intermédiaire. Le pilote de classe émet toutes les requêtes suivantes au périphérique de stockage via l’objet de périphérique du pilote inférieur.
Cette figure montre deux FDO de ce type : l’un qui représente un périphérique CD-ROM et l’autre qui représente la partition 0 d’un lecteur de disque dur. La partition 0 représente l’intégralité du disque brut et existe toujours, que le lecteur soit partitionné ou non.
Un pilote de classe peut également agir en tant que pilote de bus, en retournant une liste de PPO lorsque le gestionnaire PnP interroge ses appareils enfants (IRP_MN_QUERY_DEVICE_RELATIONS avec BusRelations). Par exemple, un pilote d’un périphérique multimédia partitionné tel qu’un disque amovible peut retourner une liste de PDO représentant ses partitions. Les pilotes de niveau supérieur attachent des FDO à ces PPO.
Cette figure montre trois PDO de ce type, chacune représentant une partition de disque qui peut être traitée en tant qu’appareil cible.
Dans le cas d’un disque fixe, le gestionnaire de partitions s’attache au FDO qui représente la partition 0 et gère les opérations PnP pour le compte de toutes les partitions. Les activités du gestionnaire de partitions sont transparentes pour le pilote de classe de disque et tous les pilotes de filtre de niveau supérieur.
Un ou plusieurs pilotes de filtre peuvent être attachés au-dessus d’un pilote de classe. Contrairement à un pilote de filtre de niveau inférieur, un pilote de filtre de niveau supérieur intercepte les irps envoyés au pilote de classe et peut les modifier avant de les transférer vers l’objet de périphérique inférieur suivant. Le pilote de filtre peut intercepter toutes les demandes de lecture/écriture et transformer les données si nécessaire, ainsi que définir des codes de contrôle d’E/S supplémentaires (IOCTL), par exemple, pour permettre à une application utilisateur de fournir des mots de passe ou d’autres informations associées.
Cette figure montre un filtre DO créé par un pilote de filtre de chiffrement de disque et attaché à l’AOP de disque pour la partition 1.