Piles de pilotes
La plupart des demandes envoyées aux pilotes de périphérique sont empaquetées dans les paquets de demandes d’E /S (IRP). Chaque appareil est représenté par un nœud d’appareil et chaque nœud d’appareil a une pile d’appareils. Pour plus d’informations, consultez Nœuds d’appareil et piles d’appareils. Pour envoyer une demande de lecture, d’écriture ou de contrôle à un appareil, le gestionnaire d’E/S localise le nœud de l’appareil, puis envoie un IRP à la pile d’appareils de ce nœud. Parfois, plusieurs piles d’appareils sont impliquées dans le traitement d’une demande d’E/S. Quel que soit le nombre de piles d’appareils impliquées, la séquence globale de pilotes qui participent à une requête d’E/S est appelée pile de pilotes pour la requête. Nous utilisons également le terme pile de pilotes pour faire référence à l’ensemble de pilotes en couches pour une technologie particulière.
Demandes d’E/S traitées par plusieurs piles d’appareils
Dans certains cas, plusieurs piles d’appareils sont impliquées dans le traitement d’un IRP. Le diagramme suivant illustre un cas où quatre piles d’appareils sont impliquées dans le traitement d’un seul IRP.
Voici comment l’IRP est traité à chaque étape numérotée du diagramme :
L’IRP est créé par Disk.sys, qui est le pilote de fonction dans la pile d’appareils pour le nœud Mon périphérique de stockage USB. Disk.sys passe l’IRP vers le bas de la pile d’appareils pour Usbstor.sys.
Notez que Usbstor.sys est le pilote PDO pour le nœud Mon périphérique de stockage USB et le pilote FDO pour le nœud périphérique de stockage de masse USB. À ce stade, il n’est pas important de décider si l’IRP appartient à la paire (PDO, Usbstor.sys) ou à la paire (FDO, Usbstor.sys). L’IRP appartient au pilote, Usbstor.sys, et le pilote a accès à la fois au PDO et au FDO.
Lorsque Usbstor.sys a terminé le traitement de l’IRP, il transmet le protocole IRP à Usbhub.sys. Usbhub.sys est le pilote PDO pour le nœud périphérique de stockage de masse USB et le pilote FDO pour le nœud hub racine USB. Il n’est pas important de décider si l’IRP appartient à la paire (PDO, Usbhub.sys) ou à la paire (FDO, Usbhub.sys). L’IRP appartient au pilote, Usbhub.sys et le pilote a accès à la fois au PDO et au FDO.
Lorsque Usbhub.sys a terminé le traitement de l’IRP, il transmet l’IRP à la paire (Usbuhci.sys, Usbport.sys).
Usbuhci.sys est un pilote miniport, et Usbport.sys est un pilote de port. La paire (miniport, port) joue le rôle d’un seul pilote. Dans ce cas, le pilote miniport et le pilote de port sont écrits par Microsoft. La paire (Usbuhci.sys, Usbport.sys) est le pilote PDO pour le nœud du hub racine USB, et la paire (Usbuhci.sys, Usbport.sys) est également le pilote FDO pour le nœud du contrôleur hôte USB. La paire (Usbuhci.sys, Usbport.sys) effectue la communication réelle avec le matériel du contrôleur hôte, qui communique à son tour avec le périphérique de stockage USB physique.
Pile de pilotes pour une requête d’E/S
Considérez la séquence de quatre pilotes qui ont participé à la demande d’E/S illustrée dans le diagramme précédent. Nous pouvons obtenir une autre vue de la séquence en mettant l’accent sur les pilotes plutôt que sur les nœuds d’appareil et leurs piles d’appareils individuelles. Le diagramme suivant montre les pilotes en séquence de haut en bas. Notez que Disk.sys est associé à un objet d’appareil, mais chacun des trois autres pilotes est associé à deux objets d’appareil.
La séquence de pilotes qui participent à une requête d’E/S est appelée pile de pilotes pour la requête d’E/S. Pour illustrer une pile de pilotes pour une demande d’E/S, nous dessinons les pilotes de haut en bas dans l’ordre dans lequel ils participent à la demande.
Notez que la pile de pilotes pour une requête d’E/S est assez différente de la pile d’appareils pour un nœud d’appareil. Notez également que la pile des pilotes pour une requête d’E/S ne reste pas nécessairement dans une branche de l’arborescence de l’appareil.
Piles de pilotes technologiques
Considérez la pile des pilotes pour la requête d’E/S indiquée dans le diagramme précédent. Si nous donnons à chacun des pilotes un nom convivial et apportez quelques modifications légères au diagramme, nous avons un diagramme de blocs semblable à de nombreux de ceux qui apparaissent dans la documentation du Kit de pilotes Windows (WDK).
Dans le diagramme, la pile des pilotes est divisée en trois sections. Nous pouvons considérer chaque section comme appartenant à une technologie particulière ou à un composant particulier ou à une partie du système d’exploitation. Par exemple, nous pouvons dire que la première section située en haut de la pile des pilotes appartient au Gestionnaire de volumes, la deuxième section appartient au composant de stockage du système d’exploitation, et la troisième section appartient à la partie USB principale du système d’exploitation.
Considérez les pilotes dans la troisième section. Ces pilotes sont un sous-ensemble de pilotes USB de base plus volumineux que Microsoft fournit pour gérer différents types de requêtes USB et de matériel USB. Le diagramme suivant montre à quoi ressemble l’ensemble du diagramme de blocs de cœur USB.
Un diagramme de blocs qui montre tous les pilotes d’une technologie particulière ou d’un composant ou d’une partie du système d’exploitation est appelé pile de pilotes de technologie. En règle générale, les piles de pilotes technologiques sont nommées comme la pile de pilotes USB Core, la pile de stockage, la pile de pilotes 1394 et la pile de pilotes audio.
Remarque : Le diagramme de blocs de cœur USB de cet article montre l’une des différentes façons possibles d’illustrer les piles de pilotes de technologie pour USB 1.0 et 2.0. Pour connaître les diagrammes officiels des piles de pilotes USB 1.0, 2.0 et 3.0, consultez Architecture de la pile des pilotes USB.
Articles connexes
Nœuds d’appareil et piles d’appareils