Partager via


Prise en charge Plug-and-Play

Cet article décrit le processus d’énumération sur le bus série universel.

Lorsqu’un appareil est branché à un ordinateur Windows, la pile USB Windows énumère l’appareil, en extrayant les détails de l’appareil, y compris le descripteur d’interface (ou les descripteurs) de l’appareil, puis génère un ensemble d’ID matériels et d’ID compatibles pour l’appareil.

Pour obtenir la liste complète des ID matériels USB, consultez la section « Chaînes d’identification de l’appareil » sous Installation de l’appareil.

Les exemples des sections suivantes illustrent deux scénarios :

  • ID USB pour un seul périphérique USB d’interface
  • ID USB pour un périphérique USB multi-interface (composite)

Exemple 1 : Périphérique USB HID à interface unique

Cet exemple montre comment les ID matériels et les ID compatibles sont générés pour un périphérique USB à interface unique sur un système exécutant Windows 2000 ou Windows XP.

Lorsque l’appareil est énuméré à l’origine par la pile USB, le pilote USBHUB extrait idVendor, idProduct et bcdDevice à partir du descripteur de l’appareil. Ces trois champs sont incorporés pour générer un ID matériel USB. Notez que les numéros de fournisseur, d’appareil et de révision sont toujours stockés au format hexadécimal.

La génération de l’ID compatible pour l’appareil est plus complexe. Le code de classe, le code de sous-classe et le code de protocole sont déterminés par le code bInterfaceClass, bInterfaceSubClass et bInterfaceProtocol de l’interface. Ces valeurs sont au format hexadécimal à deux chiffres.

Notez que si vous fournissez un INF, vos identificateurs matériels doivent correspondre aux identificateurs en gras dans la colonne gauche du tableau suivant. (Vous devez éviter d’utiliser les identificateurs compatibles répertoriés dans la colonne de droite.)

Identificateurs matériels : identificateurs compatibles

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz : USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy : USB\Class_aa&SubClass_bb

: USB\Class_aa

Exemple 2 : périphérique USB HID de plusieurs interfaces/fonctions (périphérique composite)

Les périphériques USB avec plusieurs fonctions sont appelés périphériques composites. Cet exemple montre comment les ID matériels et les ID compatibles sont générés pour les périphériques USB composites sur Windows. Lorsqu’un nouveau périphérique composite USB est connecté à un système d’ordinateur exécutant Windows, le pilote USBHUB crée un objet de périphérique physique (PDO) et avertit le système d’exploitation que son ensemble d’appareils enfants a changé. Après avoir interrogé le pilote hub pour les ID matériels associés au nouveau PDO, le système recherche les fichiers INF appropriés pour trouver une correspondance pour les identificateurs. Si un fournisseur choisit de charger un seul pilote pour l’ensemble de l’appareil (autrement dit, sans utiliser le pilote de périphérique composite) et multiplexer toutes les interfaces du logiciel avec ce pilote, le fournisseur doit spécifier une correspondance d’ID matériel pour empêcher le système d’exploitation de récupérer la correspondance de classement inférieur (USB\COMPOSITE).

Notez que si vous fournissez un INF, vos identificateurs matériels doivent correspondre aux identificateurs en gras dans la colonne gauche du tableau suivant. (Vous devez éviter d’utiliser les identificateurs compatibles répertoriés dans la colonne de droite.)

Identificateurs matériels : identificateurs compatibles

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz : USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy : USB\Class_aa&SubClass_bb

: USB\Class_aa

: USB\COMPOSITE

Si, toutefois, aucune correspondance matérielle n’est trouvée, Windows Plug-and-Play utilise l’identificateur USB\COMPOSITE pour charger le pilote USB Generic Parent (USBCCGP). Le pilote parent générique crée ensuite un ensemble distinct de PDOs (un pour chaque interface) avec un ensemble distinct d’ID matériels pour chaque interface de l’appareil composite. La section suivante affiche le format des ID matériels pour les PDO enfants.

Pour générer l’ensemble d’ID matériels pour le PDO de chaque interface, le pilote USBCCGP ajoute le numéro d’interface (qui est une valeur hexadécimale de base zéro) à la fin de l’ID matériel.

Le code de classe, le code de sous-classe et le code de protocole sont déterminés par les champs bInterfaceClass, bInterfaceSubClass et bInterfaceProtocol du descripteur d’interface, respectivement. Ces valeurs sont au format hexadécimal à deux chiffres.

Notez que si vous fournissez un INF, soit pour charger votre pilote, soit pour fournir un nom d’appareil convivial, vos identificateurs matériels doivent correspondre aux identificateurs en gras dans la colonne gauche du tableau suivant. (Vous devez éviter d’utiliser les identificateurs compatibles répertoriés dans la colonne de droite.)

Identificateurs matériels : identificateurs compatibles

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz&MI_ww : USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy&MI_ww : USB\Class_aa&SubClass_bb

: USB\Class_aa