Configuration de Usbccgp.sys pour sélectionner une configuration USB autre que la configuration par défaut
Cet article fournit des informations sur les paramètres de Registre qui configurent la façon dont Usbccgp.sys sélectionne une configuration USB. La rubrique décrit également comment Usbccgp.sys gère les demandes de configuration de sélection envoyées par un pilote client qui contrôle l’une des fonctions d’un appareil composite.
Un périphérique composite USB se compose de plusieurs fonctions (périphériques fonctionnels) au sein d’un seul périphérique USB. Si Windows charge le pilote parent générique USB (Usbccgp.sys) fourni par Microsoft pour un appareil composite, à partir de ce point, Usbccgp.sys est responsable de la sélection de la configuration de l’appareil. Chaque interface ou collection d’interface d’un appareil composite est, à bien des égards, comme un appareil distinct qui a son propre objet d’appareil physique (PDO). La réinitialisation de la configuration de l’appareil modifie la configuration de toutes les interfaces de l’appareil, pas seulement celle que le pilote client contrôle. Le système d’exploitation ne l’autorise pas. Par conséquent, un pilote client qui contrôle un ensemble d’interfaces ou une collection d’interfaces de l’appareil composite ne peut pas modifier la configuration initialement définie par Usbccgp.sys.
Toutefois, dans Windows Vista et les versions ultérieures de Windows, vous pouvez ajouter les valeurs de Registre suivantes pour spécifier la configuration à sélectionner :
Clé de Registre | Type | Valeur | Valeur par défaut |
---|---|---|---|
OriginalConfigurationValue | REG_DWORD | Index de configuration USB. Usbccgp.sys utilise d’abord OriginalConfigurationValue pour une demande de configuration de sélection. | 0 |
AltConfigurationValue | REG_DWORD | Index de configuration à utiliser si la demande select-configuration avec OriginalConfigurationValue échoue. | 0 |
Notes
Par défaut, les paramètres de Registre précédents ne sont pas présents. Ils doivent être ajoutés sous la clé matérielle (également appelée « appareil ») du périphérique USB.
Le paramètre de Registre permet au pilote GCCP de sélectionner une autre configuration.
Les valeurs de Registre décrites dans le tableau précédent correspondent à l’index de configuration défini par USB, indiqué par le membre bConfigurationValue du descripteur de configuration (USB_CONFIGURATION_DESCRIPTOR) et non par les valeurs bConfigurationNum signalées dans le descripteur de configuration de l’appareil. Tout d’abord, Usbccgp.sys envoie une demande de configuration de sélection au pilote de bus USB parent (Usbhub.sys) à l’aide de l’index de configuration USB spécifié par OriginalConfigurationValue. Si cette demande échoue, Usbccgp.sys tente d’utiliser la valeur spécifiée dans AlternateConfigurationValue. Usbccgp.sys utilise des valeurs par défaut si AlternateConfigurationValue ou OriginalConfigurationValue ne sont pas valides.
Une demande de configuration de sélection peut échouer pour de nombreuses raisons. L’échec le plus courant se produit lorsque l’appareil ne répond pas correctement à la demande ou lorsque la valeur bMaxPower (puissance requise par la configuration demandée) dépasse la valeur d’alimentation prise en charge par le port hub. Par exemple, bMaxPower pour une configuration particulière (spécifiée par OriginalConfigurationValue) est de 100 milliampères, mais le port hub ne peut fournir que 50 milliampères. Lorsque Usbccgp.sys envoie une demande de configuration de sélection pour cette configuration, la pile de pilotes USB (en particulier, le pilote de port USB) échoue à la demande. Usbccgp.sys envoie ensuite une autre demande de configuration de sélection en spécifiant la configuration indiquée par AltConfigurationValue. Si l’autre configuration nécessite 50 milliampères ou moins et qu’aucun autre problème ne se produit, la demande de configuration de sélection se termine correctement.
Fonctionnalité de compatibilité
Même si un pilote client pour une fonction dans l’appareil composite n’est pas en mesure de sélectionner la configuration d’un périphérique composite, le pilote client peut toujours envoyer une demande de sélection de configuration à Usbccgp.sys. Pour plus d’informations sur la création de cette demande, consultez Sélection d’une configuration pour un périphérique USB. Usbccgp.sys effectue les tâches suivantes après avoir reçu une demande de sélection de configuration à partir d’un pilote client :
- Valide la demande reçue en utilisant les mêmes critères que celui utilisé par le pilote de port USB pour valider les demandes de configuration de sélection.
- Si la demande spécifie des paramètres d’interface ou de canal différents des paramètres actuels, Usbccgp.sys émet une demande d’interface de sélection en envoyant un URB du type URB_FUNCTION_SELECT_INTERFACE pour modifier les paramètres existants vers les nouveaux paramètres d’interface et de canal.
- Copie le contenu mis en cache des structures USBD_INTERFACE_INFORMATION et USBD_PIPE_INFORMATION dans l’URB.
- Termine l’URB.