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

Lorsqu’un nouveau périphérique USB est connecté à un ordinateur 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’ADO.

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

USB\VID_xxxx&PID_yyyy

Notez quexxxx et aaaa sont extraits directement des champs idVendor et idProduct du descripteur d’appareil, respectivement.

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

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

  • L’appareil doit avoir plusieurs interfaces.

  • L’appareil doit avoir une seule configuration.

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

Après avoir 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 de périphérique, Windows charge le pilote indiqué par ce fichier INF 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. Cela produit une correspondance dans Usb.inf et entraîne le chargement du pilote parent générique USB (Usbccgp.sys) par le système d’exploitation.

Si vous souhaitez que le pilote parent générique gère votre appareil, mais que celui-ci ne possède pas les caractéristiques nécessaires pour garantir que le système génère 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 needs/includes 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 définie par défaut.

Pilote parent générique USB (Usbccgp.sys)
Pilotes USB fournis par Microsoft