Partager via


Énumération des périphériques composites USB

Lorsqu’un nouveau périphérique USB est connecté à une machine hôte, le pilote de bus USB crée un objet de périphérique physique (PDO) pour l’appareil et génère un événement PnP pour signaler le nouveau PDO. Le système d’exploitation interroge ensuite le pilote de bus pour les ID matériels associés à l’objet PDO.

Pour tous les périphériques USB, le pilote de bus USB signale un ID d’appareil au format suivant :

USB\VID_xxxx&PID_yyyy

Les valeurs xxxx et aaaa sont extraites directement des champs idVendor et idProduct du descripteur d’appareil, respectivement.

Le pilote bus signale également un identificateur compatible (ID) de USB\COMPOSITE, si l’appareil répond aux exigences suivantes :

  • Le champ de classe d’appareil du descripteur d’appareil (bDeviceClass) doit contenir une valeur zéro ou la classe (bDeviceClass), les sous-classes (bDeviceSubClass) et les champs de protocole (bDeviceProtocol) du descripteur d’appareil doivent avoir les valeurs 0xEF, 0x02 et 0x01 respectivement, comme expliqué dans le descripteur d’association d’interface USB.

  • L’appareil doit avoir plusieurs interfaces.

  • L’appareil doit avoir une configuration unique.

Le pilote bus vérifie également les champs de classe d’appareil (bDeviceClass), de sous-classe (bDeviceSubClass) et de protocole (bDeviceProtocol) du descripteur d’appareil. Si ces champs sont zéro, l’appareil est un périphérique composite et le pilote bus signale un identificateur (ID) supplémentaire compatible usb\COMPOSITE pour l’opération PDO.

Une fois que le pilote de bus a récupéré le matériel et les ID compatibles pour le nouveau PDO, le système d’exploitation recherche les fichiers INF. Si l’un des fichiers INF contient une correspondance pour l’ID d’appareil, Windows charge ce pilote et le pilote parent générique n’entre pas en jeu. Si aucun fichier INF ne contient l’ID d’appareil et que le PDO a un ID compatible, Windows recherche l’ID compatible. Cette recherche produit une correspondance dans Usb.inf et provoque le chargement du pilote parent générique USB (Usbccgp.sys) par le système d’exploitation.

Si votre appareil n’a pas les caractéristiques pour générer un ID compatible usb\COMPOSITE, vous devez fournir un fichier INF qui charge le pilote parent générique. Le fichier INF doit contenir une section besoins/inclut qui fait référence à Usb.inf.

Si votre appareil composite a plusieurs configurations, le fichier INF que vous fournissez doit spécifier la configuration que le parent générique doit utiliser dans le Registre. Les clés de Registre nécessaires sont décrites dans Configuration de Usbccgp.sys pour sélectionner une configuration USB non par défaut.