Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Tout pilote d’un appareil physique, logique ou virtuel auquel le code en mode utilisateur peut adresser des requêtes d’E/S doit fournir un nom pour ses clients en mode utilisateur. À l’aide du nom, une application en mode utilisateur (ou un autre composant système) identifie le périphérique pour lequel l’application demande des E/S.
Dans Windows NT 4.0 et versions antérieures du système d’exploitation NT, les pilotes ont nommé leurs objets d’appareil, puis configuré des liens symboliques dans le Registre entre ces noms et un nom logique Win32 visible par l’utilisateur.
À compter de Windows 2000, les pilotes ne nomment pas d’objets de périphérique. Au lieu de cela, ils utilisent des interfaces d’appareil qui sont regroupées par classes d’interface d’appareil. Une classe d’interface de périphérique permet d’exporter des fonctionnalités de périphérique et de pilote vers d’autres composants système, y compris d’autres pilotes, ainsi que des applications en mode utilisateur. Un pilote peut enregistrer et activer une instance d’interface de périphérique de la classe d’interface de périphérique pour chaque objet de périphérique auquel les demandes d’E/S en mode utilisateur peuvent être envoyées. Chaque classe d’interface d’appareil doit représenter une fonctionnalité conceptuelle que toute interface d’appareil de cette classe doit prendre en charge ou représenter comme un contrat d’E/S particulier.
Chaque classe d’interface d’appareil est associée à un GUID. Le système définit des GUID pour les classes d’interface d’appareil courantes dans les fichiers d’en-tête spécifiques à l’appareil. Les fournisseurs peuvent créer des classes d’interface d’appareil supplémentaires.
Par exemple, trois types différents de périphériques de pointage peuvent enregistrer des interfaces de périphérique membres de la même classe d’interface de périphérique, même si l’un se connecte via un port USB, un deuxième via un port série et le troisième via un port infrarouge. Chaque pilote de périphérique enregistre son périphérique en tant que membre de la classe d’interface GUID_DEVINTERFACE_MOUSE. Ce GUID est défini dans le fichier d’en-tête Ntddmou.h.
Les gestionnaires de pilotes peuvent enregistrer et activer des interfaces de périphérique pour un périphérique qu’ils contrôlent pour autant de classes d’interface de périphérique pour lesquelles le périphérique et le gestionnaire de pilotes prennent en charge cette fonctionnalité. Par exemple, un pilote pour un disque pouvant être monté doit s’enregistrer à la fois pour sa classe d’interface de disque (GUID_DEVINTERFACE_DISK) et la classe de périphérique montable (MOUNTDEV_MOUNTED_DEVICE_GUID).
Lorsqu’un pilote inscrit une instance d’interface d’appareil d’une classe d’interface d’appareil, le gestionnaire d’E/S associe l’appareil et le GUID de la classe d’interface d’appareil à un nom de lien symbolique. Le pilote doit activerl’interface de périphérique pour que ce lien symbolique soit utilisable pour qu’un pilote ou une application envoie des E/S. L’inscription du nom de lien persiste au démarrage du système, mais l’interface de périphérique doit être activée par le pilote sur chaque énumération de l’appareil. Une application qui utilise une classe d’interface d’appareil particulière peut interroger des instances des interfaces d’appareil de cette classe et recevoir une liste de noms de liens symboliques représentant des appareils qui prennent en charge l’interface. L’application peut ensuite utiliser le nom de lien symbolique comme cible pour les requêtes d’E/S.
Ne confondez pas les interfaces d’appareil avec les interfaces que les pilotes peuvent exporter en réponse à une demande de IRP_MN_QUERY_INTERFACE . Cette IRP est utilisée pour transmettre les points d’entrée des routines entre les pilotes en mode noyau.