Partager via


Comparaison des classes d’installation et des classes d’interface

La compréhension de la distinction entre les classes de configuration d’appareil et les classes d’interface d’appareil est essentielle pour réussir le développement de pilotes Windows et la gestion des appareils. Bien que ces classes apparaissent similaires, elles servent fondamentalement des objectifs différents dans l’écosystème d’appareils Windows. Les classes d’installation régissent la façon dont le système d’exploitation installe et configure les appareils. Les classes d’interface permettent la communication et les fonctionnalités runtime entre les pilotes, les applications et les appareils. La compréhension de cette distinction vous permet de choisir le type de classe approprié pour l’installation de l’appareil, d’implémenter des notifications d’appareil appropriées et d’éviter les pièges de développement courants.

Un appareil appartient souvent à une classe d’installation et expose plusieurs interfaces d’appareil dans différentes classes d’interface en même temps. Néanmoins, les deux types de classes ont des objectifs différents et ne sont pas interchangeables.

Diagramme montrant la relation entre un appareil, sa classe d’installation et ses différentes classes d’interface.

Comparison

Le tableau suivant récapitule les principales différences et relations entre les classes d’installation et les classes d’interface :

Aspect Classes d’installation Classes d’interface
Objectif principal Regroupement d’appareils avec une installation et une configuration similaires Regroupement d’interfaces d’appareil qui fournissent des fonctionnalités et des communications similaires
Utilisation Utilisé par Windows pendant l’installation de l’appareil Utilisé par les pilotes et les applications pour l’interaction des appareils
Définitions GUID Généralement défini dans Devguid.h Défini dans les fichiers d’en-tête spécifiques à l’appareil (par exemple, Ntddmou.h, Ntddpar.h)
Critères de regroupement Appareils installés et configurés de la même façon En règle générale, les interfaces d’appareil qui implémentent un contrat d’E/S particulier
Notification Non utilisé pour les notifications d’arrivée ou de suppression de l’appareil Utilisé pour inscrire les notifications d’arrivée et de suppression de l’interface de l’appareil
Examples Capteurs, microprogramme, Bluetooth Capture audio, rendu audio, capteur de lumière ambiante
Relation Un appareil appartient à une classe d’installation Un appareil peut exposer zéro ou plusieurs interfaces d’appareil dans différentes classes d’interface
Vie Pertinent pendant le processus d’installation Pertinent pendant l’opération de l’appareil

Il est important de faire la distinction entre les deux types de classes d’appareil : les classes d’interface d’appareil et les classes de configuration d’appareil. Les deux peuvent être facilement confondus. Dans le code en mode utilisateur, les deux classes utilisent le même ensemble de fonctions d’installation d’appareil. Ils utilisent également le même jeu de structures de données (jeux d’informations sur l’appareil).

Même classe d’installation, différentes classes d’interface :

  • Appareils : deux appareils de capteur différents
  • Classe d’installation : les deux appareils se trouvent dans la classe Sensors .
  • Classes d’interface : un capteur expose une interface d’appareil de capteur de lumière ambiante, et l’autre expose une interface d’appareil accéléromètre.

Considérez un périphérique de souris USB et un périphérique clavier USB. Les deux utilisent la même classe d’interface (Human Interface Device). Mais ils appartiennent à différentes classes d’installation, souris et clavier, respectivement.

Même classe d’interface, différentes classes d’installation :

  • Appareils : une souris USB et un clavier USB
  • Classe d’interface : les deux appareils utilisent la même classe d’interface (appareil d’interface humaine) pour communiquer avec le système.
  • Classes d’installation : l’appareil souris appartient à la classe d’installation de la souris, tandis que l’appareil clavier appartient à la classe de configuration du clavier.

Classes de configuration d’appareil

Les classes d’installation des appareils sont des catégories prédéfinies utilisées uniquement pour l’installation et la configuration des appareils dans Windows. Ils aident le système d’exploitation à comprendre comment gérer l’appareil pendant le processus d’installation. Les classes d’installation fournissent un mécanisme permettant de regrouper les appareils installés et configurés de la même façon. Pour plus d’informations sur les classes de configuration, consultez les classes d’installation d’appareils définies par le système disponibles pour les fournisseurs.

Les classes d’installation des appareils Windows sont définies dans le fichier système Devguid.h. Ce fichier définit une série de GUID pour les classes d’installation. Toutefois, les classes d’installation d’appareil représentées dans Devguid.h ne doivent pas être confondues avec les classes d’interface d’appareil. Le fichier Devguid.h contient uniquement des GUID pour les classes d’installation.

Classes d’interface d’appareil

Les classes d’interface d’appareil fournissent un mécanisme permettant de regrouper les interfaces d’appareil en fonction des caractéristiques partagées ou des fonctionnalités. Les pilotes et les applications utilisateur peuvent s’inscrire aux notifications relatives aux interfaces d’appareil dans une classe d’interface particulière. Cela signifie qu’ils sont avertis lorsqu’une interface d’appareil appartenant à cette classe est activée (arrive) ou est désactivée (supprimée). Ils n’ont pas besoin de suivre les appareils individuels. Les classes d’interface d’appareil regroupent les interfaces d’appareil exposées par les appareils. Vous vous inscrivez aux notifications d’arrivée et de suppression des interfaces d’appareil.

Les définitions des classes d’interface ne sont pas fournies dans un seul fichier. Une classe d’interface d’appareil est toujours définie dans un fichier d’en-tête qui appartient exclusivement à une classe particulière d’appareils. Par exemple, Ntddmou.h contient la définition de GUID_DEVINTERFACE_MOUSE, le GUID représentant la classe d’interface de la souris. Ntddpar.h définit le GUID de la classe d’interface pour les appareils parallèles. Ntddpcm.h définit le GUID de la classe d’interface standard pour les appareils PCMCIA. Ntddstor.h définit le GUID de la classe d’interface pour les périphériques de stockage.

Pour vous inscrire aux notifications d’interface d’appareil, utilisez les GUID trouvés dans les fichiers d’en-tête spécifiques à la classe d’interface de l’appareil. Ces GUID vous permettent d’être averti lorsqu’une instance d’interface d’appareil arrive. Si un pilote s’inscrit pour la notification à l’aide d’un GUID de classe d’installation au lieu d’un GUID de classe d’interface, il n’est pas averti lorsqu’une interface arrive.

Lors de la définition d’une nouvelle classe d’interface, n’utilisez pas de GUID unique pour identifier à la fois une classe d’installation et une classe d’interface.