Partager via


Qu’est-ce qu’un pilote ?

Un pilote est un composant logiciel qui permet au système d’exploitation et à un appareil de communiquer. Par exemple, lorsqu’une application doit lire des données à partir d’un appareil, elle appelle une fonction implémentée par le système d’exploitation. Le système d’exploitation appelle ensuite une fonction implémentée par le pilote. Le pilote, généralement développé par le fabricant de l’appareil, sait comment communiquer avec le matériel de l’appareil pour obtenir les données. Lorsque le pilote obtient les données, il le remet au système d’exploitation, ce qui le remet ensuite à l’application.

Diagramme montrant l’interaction entre une application, un système d’exploitation et un pilote.

Développement de la définition

Cette explication simplifie le concept des pilotes. Voici quelques points à prendre en compte :

  • Le fabricant de l’appareil ne développe pas toujours le pilote. Si un appareil suit une norme matérielle publiée, Microsoft peut écrire le pilote, de sorte que le concepteur d’appareils n’a pas à en fournir un.

  • Tous les pilotes ne communiquent pas directement avec un appareil. Souvent, plusieurs pilotes superposés dans une pile de pilotes participent à une demande d’E/S.

    La façon conventionnelle de visualiser la pile est avec le premier participant en haut et le dernier participant en bas, comme illustré dans ce diagramme. Certains pilotes de la pile modifient la requête d’un format à un autre. Ces pilotes ne communiquent pas directement avec l’appareil. Au lieu de cela, ils modifient la requête et le transmettent aux pilotes inférieurs dans la pile.

    Diagramme illustrant la communication entre une application, un système d’exploitation, trois pilotes et un appareil.

    • Pilote de fonction : le pilote qui communique directement avec l’appareil est appelé pilote de fonction.

    • Pilote de filtre : les pilotes qui effectuent un traitement auxiliaire sont appelés pilotes de filtre.

    Pour plus d’informations, consultez piles de pilotes.

  • Certains pilotes de filtre observent et enregistrent des informations sur les demandes d’E/S, mais n'y participent pas. Par exemple, certains pilotes de filtre agissent en tant que vérificateurs pour s’assurer que les autres pilotes de la pile gèrent correctement la requête d’E/S.

Pour affiner la définition, un pilote est tout composant logiciel qui observe ou participe à la communication entre le système d’exploitation et un appareil.

Pilotes logiciels

Cette définition développée est plus précise, mais reste incomplète. Certains pilotes ne sont associés à aucun périphérique matériel.

Si vous devez écrire un outil qui accède aux structures de données du système d’exploitation de base, vous pouvez fractionner l’outil en deux composants. Le premier composant s’exécute en mode utilisateur et présente l’interface utilisateur. Le deuxième composant s’exécute en mode noyau et accède aux données du système d’exploitation de base. Le composant qui s’exécute en mode utilisateur est appelé application. Le composant qui s’exécute en mode noyau est appelé pilote logiciel. Un pilote logiciel n’est pas associé à un périphérique matériel.

Ce diagramme illustre une application en mode utilisateur qui communique avec un pilote logiciel en mode noyau.

Diagramme illustrant la relation entre une application et un pilote logiciel.

Les pilotes logiciels s’exécutent toujours en mode noyau. Ils sont principalement écrits pour accéder aux données protégées uniquement disponibles en mode noyau. Tous les pilotes de périphérique n’ont pas besoin d’accéder aux données et ressources en mode noyau, donc certains pilotes de périphérique s’exécutent en mode utilisateur.

Pour plus d’informations sur les modes processeur, consultez le mode utilisateur et le mode noyau.

Pilotes de bus

Un autre type de pilote est le chauffeur de bus. Pour comprendre les pilotes de bus, vous devez comprendre les nœuds d’appareil et l’arborescence des appareils.

Pour plus d’informations sur les arborescences d’appareils, les nœuds d’appareil et les pilotes de bus, consultez nœuds d’appareil et piles d’appareils.

Plus d’informations sur les pilotes de fonction

L’explication précédemment sursimplifie le pilote de fonction. Jusqu’à présent, l’explication indique que le pilote de fonction est le pilote qui communique directement avec l’appareil. Cette déclaration est vraie pour un périphérique qui se connecte directement au bus PCI (Interconnexion de Composants Périphériques). Le pilote de fonction d’un périphérique PCI obtient des adresses mappées aux ressources de port et de mémoire sur l’appareil. Le pilote de fonction communique directement avec l’appareil en écrivant sur ces adresses.

Dans de nombreux cas, un appareil ne se connecte pas directement au bus PCI. Au lieu de cela, l’appareil se connecte à un adaptateur de bus hôte connecté au bus PCI. Par exemple, un grille-pain USB se connecte à un adaptateur de bus hôte, appelé contrôleur hôte USB. Ce contrôleur est connecté au bus PCI. Le grille-pain USB a un pilote de fonction et le contrôleur hôte USB a également un pilote de fonction.

Le pilote de fonction du grille-pain communique indirectement avec le grille-pain en envoyant une requête au pilote de fonction du contrôleur hôte USB. Le pilote de fonction pour le contrôleur hôte USB communique ensuite directement avec le matériel du contrôleur hôte USB, qui communique avec le grille-pain.

Diagramme montrant l’interaction entre les pilotes de grille-pain USB, le pilote du contrôleur hôte USB et le bus PCI.