Paramètres du Registre USB pour un pilote de contrôleur de fonction
Les oem doivent définir plusieurs valeurs de Registre pour s’assurer que leur appareil est énuméré avec les métadonnées appropriées lorsqu’il est connecté à un ordinateur. Ces valeurs spécifient des descripteurs d’appareil et de configuration pour les pilotes côté périphérique USB dans Windows. Les oem qui créent et incluent leurs propres interfaces doivent définir des valeurs de Registre supplémentaires pour que leurs interfaces soient chargées et utilisées.
Les clés de Registre liées aux pilotes USB côté périphérique se trouvent sous : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
Cette rubrique décrit les paramètres de la clé et des sous-clés précédentes qui définissent les descripteurs d’appareil, de configuration et d’interface pour l’appareil.
Clé de Registre USBFN
Les informations de configuration du périphérique USB se trouvent dans le Registre sous : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
Ce tableau décrit ses sous-clés. Certains d’entre eux peuvent être modifiés par les oem. Pour plus d’informations sur les valeurs prises en charge pour chaque sous-clé, consultez les sections ci-dessous.
Sous-clé | Description |
---|---|
Alternatives | Cette sous-clé contient des sous-clés supplémentaires qui décrivent une interface qui a un ou plusieurs autres paramètres. |
Associations | Cette sous-clé définit les descripteurs d’association d’interface (IAD). Chaque IAD permet de regrouper plusieurs interfaces en une seule fonction. Chaque sous-clé représente un IAD différent et les OEM peuvent modifier les valeurs de ces sous-clés. |
Par défaut | Cette sous-clé contient des valeurs par défaut utilisées pour décrire des paramètres spécifiques à l’appareil, tels que le VID et le PID. Il s’agit d’une sous-clé appartenant à Microsoft dont les valeurs sont remplacées par celles de la clé parente. |
Configurations | Cette sous-clé contient des sous-clés supplémentaires qui contiennent des valeurs de descripteur de configuration utilisées lors de l’énumération USB. Par exemple, la configuration de test standard peut exister sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig. |
Configurations\Default | Il s’agit d’une sous-clé appartenant à Microsoft. Il contient des valeurs pour la configuration par défaut. Les interfaces de la configuration par défaut sont ajoutées avant la configuration actuelle présente lorsque la valeur IncludeDefaultCfg est définie sur 1 sous la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . |
Interfaces | Cette sous-clé contient des sous-clés supplémentaires qui décrivent des descripteurs d’interface spécifiques. Par exemple, l’interface IP sur USB peut résider sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb. Le nom de la sous-clé d’interface est également utilisé comme ID matériel du périphérique enfant USBFN pour le chargement du pilote de classe USBFn. Dans l’exemple IP sur USB, l’ID matériel du périphérique enfant USBFN est USBFN\IpOverUsb. |
Ce tableau décrit les valeurs que les oem peuvent définir dans la cléHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . Les valeurs qui ne sont pas définies dans cette clé supposent que les valeurs par défaut définies par Microsoft sousHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default.
Tous les oem doivent définir les valeurs idVendor, idProduct, ManufacturerString et ProductString . Les oem qui créent et ajoutent leurs propres interfaces doivent également définir CurrentConfiguration sur le nom de la sous-clé sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations qui inclut leurs interfaces dans interfaceList.
Valeur | Type | Propriétaire | Description |
---|---|---|---|
IncludeDefaultCfg | REG_DWORD | OEM | Définissez sur 1 lorsque les oem souhaitent inclure les interfaces de la configuration par défaut, comme IpOverUsb ou MTP. |
idVendor | REG_DWORD | OEM | Identificateur de fournisseur du descripteur d’appareil envoyé à l’hôte pendant l’énumération. |
idProduct | REG_DWORD | OEM | Identificateur de produit du descripteur d’appareil envoyé à l’hôte pendant l’énumération. |
ManufacturerString | REG_SZ | OEM | Chaîne du fabricant envoyée à l’hôte pour identifier le fabricant de l’appareil. |
ProductString | REG_SZ | OEM | Chaîne qui décrit l’appareil en tant que produit. La valeur par défaut est Windows 10 Mobile Appareil. Cette valeur est utilisée comme nom d’affichage de l’appareil dans l’interface utilisateur de l’ordinateur connecté. Les oem doivent s’assurer que cette valeur correspond à la valeur de PhoneModelName sous la sous-clé DeviceTargetingInfo. |
iSerialNumber | REG_DWORD | OEM | Si cette valeur est définie sur 0, l’appareil n’a pas de numéro de série. Si cette valeur n’est pas égale à zéro ou n’existe pas, le numéro de série est généré de manière unique par appareil. |
CurrentConfiguration | REG_SZ | OEM | Cette chaîne doit correspondre au nom d’une sous-clé de configuration. Cette chaîne détermine la configuration à utiliser pour générer un descripteur de configuration pour l’énumération de périphérique USB. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Définissez sur 1 lorsque vous souhaitez indiquer que les demandes de point de terminaison de classe sont acceptées. Les demandes de point de terminaison de classe ne sont pas acceptées par défaut. Définissez sur 0 (ou ne définissez pas cette valeur de Registre) lorsque vous souhaitez indiquer que les demandes de point de terminaison de classe ne sont pas acceptées ou ne sont acceptées que pour des interfaces spécifiques. Consultez la valeur ClassEndpointRequestEnabled dans la section Clé de Registre USBFN\Interfaces pour savoir comment accepter les demandes de point de terminaison de classe pour des interfaces spécifiques. |
Clé de Registre USBFN\Configurations
Ce tableau décrit les valeurs que les oem peuvent définir pour les sous-clés sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations. Chaque sous-clé représente une configuration USB différente. Si l’OEM souhaite créer sa propre interface, il doit définir une nouvelle configuration qui contient les interfaces à utiliser. Pour ce faire, créez une sous-clé sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations qui utilise le nom de la configuration et renseignez la sous-clé avec les valeurs de cette table. En outre, pour que le pilote USB utilise la nouvelle configuration, la valeur CurrentConfiguration (décrite dans le tableau précédent) doit être définie sur le nom de la sous-clé de configuration.
Valeur | Type | Propriétaire | Description |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Contient une liste de noms d’interface qui correspondent aux sous-clés d’interface sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces, les associations IAD définies sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associationset les interfaces alternatives définies sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates. Ces clés déterminent les interfaces utilisées pour décrire le descripteur de configuration composite. Si la valeur IncludeDefaultCfg sous la cléHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN est définie sur 1, cette liste est ajoutée à la liste des interfaces par défaut appartenant à Microsoft pour créer la liste complète des interfaces que l’appareil utilisera pour énumérer. |
MSOSCompatIdDescriptor | REG_BINARY | OEM ou Microsoft | facultatif. Définit un descripteur de fonctionnalité de système d’exploitation d’ID de compat étendu pour la configuration. Si la valeur IncludeDefaultCfg sous la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN est définie sur 1, les fonctions de ce descripteur sont ajoutées aux fonctions et interfaces dans la configuration par défaut. |
Clé de Registre USBFN\Interfaces
Ce tableau décrit les valeurs que les fabricants OEM peuvent modifier pour les sous-clés sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces.
Chaque sous-clé représente une interface USB différente. Pour définir une interface, créez une sous-clé sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces en utilisant le nom de l’interface, puis renseignez-la avec les valeurs du tableau ci-dessous. En outre, une interface n’est incluse que si l’interface fait partie de l’InterfaceList de CurrentConfiguration.
Valeur | Type | Propriétaire | Description |
---|---|---|---|
InterfaceDescriptor | REG_BINARY | OEM ou Microsoft | Représentation binaire d’un descripteur d’interface à envoyer à l’hôte pendant l’énumération USB. Les valeurs bInterfaceNumber et iInterface sont automatiquement remplies par la pile de fonctions USB après la compilation d’un descripteur de configuration complet pour éviter les conflits avec d’autres descripteurs d’interface. |
InterfaceGUID | REG_SZ | OEM ou Microsoft | GUID qui identifie de manière unique une interface sur le bus. |
Numéro d’interface | REG_DWORD | OEM ou Microsoft | facultatif. Cette valeur est utilisée pour affecter un numéro d’interface fixe à une fonction. Les numéros d’interface 0-1F sont réservés aux fonctions héritées, 20-3F sont réservés à Microsoft et 40-5F sont réservés aux oem. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | facultatif. Définit un descripteur de fonctionnalité de système d’exploitation de propriété étendue pour l’interface. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Cette valeur de Registre n’est valide que lorsque HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabledn’est pas présent ou est défini sur 0. Définissez cette valeur de Registre sur 1 lorsque vous souhaitez indiquer que les demandes de point de terminaison de classe pour cette interface sont acceptées. Définissez sur 0 (ou ne définissez pas cette valeur de Registre) lorsque vous souhaitez indiquer que les demandes de point de terminaison de classe pour cette interface ne sont pas acceptées. |
Clé de Registre USBFN\Alternates
La sous-clé alternates est utilisée pour définir une interface unique qui a une ou plusieurs interfaces alternatives. Ce tableau décrit les valeurs que les fabricants OEM peuvent modifier pour les sous-clés sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates.
Chaque sous-clé représente une interface différente. Pour définir une interface avec d’autres paramètres, créez une sous-clé sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates en utilisant le nom de l’interface et renseignez-la avec les valeurs du tableau ci-dessous.
Valeur | Type | Propriétaire | Description |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Liste de deux autres noms d’interface qui correspondent aux interfaces définies sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces. Cette clé définit collectivement une interface avec d’autres paramètres. La première interface correspond à l’autre paramètre 0, la deuxième interface correspond à l’autre paramètre 1, et ainsi de suite. |
Numéro d’interface | REG_DWORD | OEM ou Microsoft | facultatif. Cette valeur est utilisée pour affecter un numéro d’interface fixe à une fonction. Les numéros d’interface 0-1F sont réservés aux fonctions héritées, 20-3F sont réservés à Microsoft et 40-5F sont réservés aux oem. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | facultatif. Définit un descripteur de fonctionnalité de système d’exploitation de propriété étendue pour l’interface. |
Clé de Registre USBFN\Associations
Les fabricants OEM peuvent spécifier des associations en définissant des descripteurs d’association d’interface (IAD). Chaque IAD permet de regrouper plusieurs interfaces en une seule fonction. Ce tableau décrit les valeurs que les fabricants OEM peuvent modifier pour les sous-clés sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations.
Chaque sous-clé représente un IAD différent. Pour définir une association, créez une sous-clé sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations en utilisant le nom de l’IAD et renseignez-la avec les valeurs du tableau ci-dessous.
Valeur | Type | Propriétaire | Description |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Liste des interfaces ou d’autres interfaces associées à une fonction USB. Si la taille de la liste est inférieure à 2, la pile des pilotes de fonction ne parvient pas à se charger. D’autres fonctions ou interfaces continuent de se charger. |
bFunctionClass | REG_DWORD | OEM ou Microsoft | Code de classe de la fonction, défini sur 02. |
bFunctionSubClass | REG_DWORD | OEM ou Microsoft | Code de sous-classe de la fonction, défini sur 0d. |
bFunctionProtocol | REG_DWORD | Code de protocole de la fonction, défini sur 01. | |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | facultatif. Définit un descripteur de fonctionnalité de système d’exploitation de propriété étendue pour l’interface. |
Cas d’usage : Activation de MirrorLink
MirrorLink est une norme d’interopérabilité qui permet l’intégration entre les appareils mobiles et les systèmes d’infodivertissement automobile. L’appareil doit exposer une interface NCM CDC USB au client MirrorLink. En tant qu’appareil CDC (Communications Device Class), il est nécessaire de décrire les interfaces de données à l’aide d’un descripteur IAD (Interface Association Descriptor) et/ou d’un descripteur d’union de fonction CDC.
Pour activer la connectivité MirrorLink sur Windows 10 Mobile’appareil, l’OEM doit apporter ces modifications pour exposer un IAD.
Créez une association pour les interfaces de communication et de données à l’aide d’un descripteur d’association d’interface (IAD) en définissant les valeurs de Registre indiquées dans le tableau précédent.
En plus des paramètres du Registre, définissez cette valeur de Registre sur une valeur différente de zéro.
Valeur Type Propriétaire Description MirrorLink REG_DWORD OEM ou Microsoft Une valeur autre que zéro indique que l’interface prend en charge MirrorLink. La pile de fonctions USB ne bloque pas la commande USB MirrorLink. Des descripteurs spécifiques à une classe peuvent être inclus dans le jeu de descripteur d’interface défini dans le Registre. Le champ de taille doit être défini dans ces descripteurs afin que la pile de pilotes de fonction USB puisse les analyser avec précision.
Un descripteur d’union de fonction CDC peut également être défini comme un descripteur d’interface Class-Specific ; Toutefois, les numéros d’interface spécifiés par le descripteur Union sont statiques et ne sont pas attribués par la pile de pilotes de fonction USB, et la présence d’un descripteur Union n’entraîne pas l’association des interfaces décrites par celui-ci à une seule AOP enfant. Un IAD est requis pour cette association.