Configuración del Registro USB para un controlador de controlador de función
Los OEM deben establecer varios valores del Registro para asegurarse de que su dispositivo enumera con los metadatos correctos cuando se conecta a un equipo. Estos valores especifican descriptores de configuración y dispositivo para los controladores del lado del dispositivo USB en Windows. Los OEM que crean e incluyen sus propias interfaces deben establecer valores de registro adicionales para que sus interfaces se carguen y usen.
Las claves del Registro relacionadas con los controladores USB del lado del dispositivo están en: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
En este tema se describe la configuración de la clave anterior y las subclaves que definen los descriptores de dispositivo, configuración e interfaz para el dispositivo.
Clave del Registro USBFN
La información de configuración del dispositivo USB se encuentra en el registro en: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
En esta tabla se describen sus subcarpetas. Algunos de ellos se pueden modificar mediante oem. En las secciones siguientes se proporciona más información sobre los valores admitidos para cada sub clave.
Subclave | Descripción |
---|---|
Alternativas | Esta subclave contiene subclaves adicionales que describen una interfaz que tiene una o varias configuraciones alternativas. |
Asociaciones | Esta sub clave define descriptores de asociación de interfaz (IAD). Cada IAD permite agrupar varias interfaces en una sola función. Cada sub clave representa un IAD y los OEM diferentes pueden modificar los valores de esas sub-claves. |
Valor predeterminado | Esta subclave contiene valores predeterminados que se usan para describir la configuración específica del dispositivo, como vid y PID. Se trata de una sub clave propiedad de Microsoft cuyos valores se reemplazan por los de la clave primaria. |
Configuraciones | Esta sub clave contiene subcarpetas adicionales que contienen valores de descriptor de configuración que se usan durante la enumeración USB. Por ejemplo, la configuración de prueba estándar podría existir en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig. |
Configuraciones\Valor predeterminado | Se trata de una subtarea propiedad de Microsoft. Contiene valores para la configuración predeterminada. Las interfaces de la configuración predeterminada se agregan antes de la configuración actual presente cuando el valor IncludeDefaultCfg se establece en 1 en la claveHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . |
Interfaces | Esta sub clave contiene subcarpetas adicionales que describen descriptores de interfaz específicos. Por ejemplo, la dirección IP a través de la interfaz USB puede residir en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb. El nombre de la subclase de la interfaz también se usa como identificador de hardware del dispositivo secundario USBFN para cargar el controlador de clase USBFn. En el ejemplo de IP sobre USB, el identificador de hardware del dispositivo secundario USBFN será USBFN\IpOverUsb. |
En esta tabla se describen los valores que los OEM pueden definir en la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . Los valores que no están definidos en esta clave asumen los valores predeterminados definidos por Microsoft en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default.
Todos los OEM deben establecer los valores idVendor, idProduct, ManufacturerString y ProductString . Los OEM que crean y agregan sus propias interfaces también deben establecer CurrentConfiguration en el nombre de la sub clave en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations que incluya sus interfaces en InterfaceList.
Valor | Tipo | Propietario | Descripción |
---|---|---|---|
IncludeDefaultCfg | REG_DWORD | OEM | Se establece en 1 cuando los OEM desean incluir las interfaces de la configuración predeterminada, como IpOverUsb o MTP. |
idVendor | REG_DWORD | OEM | Identificador del proveedor del descriptor de dispositivo que se envía al host durante la enumeración. |
idProduct | REG_DWORD | OEM | Identificador de producto del descriptor de dispositivo que se envía al host durante la enumeración. |
ManufacturerString | REG_SZ | OEM | Cadena de fabricante que se envía al host para identificar el fabricante del dispositivo. |
ProductString | REG_SZ | OEM | Cadena que describe el dispositivo como un producto. El valor predeterminado es Windows 10 Mobile Dispositivo. Este valor se usa como nombre para mostrar del dispositivo en la interfaz de usuario del equipo conectado. Los OEM deben asegurarse de que este valor coincide con el valor del valor PhoneModelName en la sub clave DeviceTargetingInfo. |
iSerialNumber | REG_DWORD | OEM | Si este valor se establece en 0, el dispositivo no tiene un número de serie. Si este valor es distinto de cero o no existe, el número de serie se genera de forma única por dispositivo. |
CurrentConfiguration | REG_SZ | OEM | Esta cadena debe corresponder al nombre de una sub clave de configuración. Esta cadena determina qué configuración se va a usar para crear un descriptor de configuración para la enumeración de dispositivos USB. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Establézcalo en 1 cuando desee indicar que se aceptan solicitudes de punto de conexión de clase. Las solicitudes de punto de conexión de clase no se aceptan de forma predeterminada. Establezca en 0 (o no establezca este valor del Registro) cuando desee indicar que las solicitudes de punto de conexión de clase no se aceptan o solo se aceptan para interfaces específicas. Consulte el valor ClassEndpointRequestEnabled en la sección clave del Registro USBFN\Interfaces para obtener información sobre cómo aceptar solicitudes de punto de conexión de clase para interfaces específicas. |
Clave del Registro USBFN\Configurations
En esta tabla se describen los valores que los OEM pueden definir para las sub claves en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations. Cada subtarea representa una configuración USB diferente. Si el OEM quiere crear su propia interfaz, el OEM debe definir una nueva configuración que contenga las interfaces que se van a usar. Para ello, cree una sub clave en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations que use el nombre de la configuración y rellene la sub clave con los valores de esta tabla. Además, para que el controlador USB use la nueva configuración, el valor CurrentConfiguration (descrito en la tabla anterior) debe establecerse en el nombre de la sub clave de configuración.
Valor | Tipo | Propietario | Descripción |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Contiene una lista de nombres de interfaz que corresponden a sub-claves de interfaz en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces, las asociaciones de IAD definidas en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associationsy las interfaces alternativas definidas en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates. Estas claves determinan las interfaces que se usan para describir el descriptor de configuración compuesto. Si el valor IncludeDefaultCfg de la claveHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN se establece en 1, esta lista se anexa a la lista de interfaz predeterminada propiedad de Microsoft para crear la lista de interfaz completa que el dispositivo usará para enumerar. |
MSOSCompatIdDescriptor | REG_BINARY | OEM o Microsoft | Opcional. Define un descriptor de características del sistema operativo de compatibilidad extendida para la configuración. Si el valor IncludeDefaultCfg de la claveHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN se establece en 1, las funciones de este descriptor se anexan a las funciones e interfaces de la configuración predeterminada. |
Clave del Registro USBFN\Interfaces
En esta tabla se describen los valores que los OEM pueden modificar para las sub-claves en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces.
Cada sub-clave representa una interfaz USB diferente. Para definir una interfaz, cree una sub-clave en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces con el nombre de la interfaz y rellénela con los valores de la tabla siguiente. Además, solo se incluirá una interfaz si la interfaz forma parte de InterfaceList de CurrentConfiguration.
Valor | Tipo | Propietario | Descripción |
---|---|---|---|
InterfaceDescriptor | REG_BINARY | OEM o Microsoft | Representación binaria de un descriptor de interfaz que se va a enviar al host durante la enumeración USB. La pila de funciones USB rellena automáticamente los valores bInterfaceNumber e iInterface después de compilar un descriptor de configuración completo para evitar conflictos con otros descriptores de interfaz. |
InterfaceGUID | REG_SZ | OEM o Microsoft | GUID que identifica de forma única una interfaz en el bus. |
InterfaceNumber | REG_DWORD | OEM o Microsoft | Opcional. Este valor se usa para asignar un número fijo de interfaz a una función. Los números de interfaz 0-1F están reservados para funciones heredadas, 20-3F están reservados para Microsoft y 40-5F están reservados para su uso por los OEM. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | Opcional. Define un descriptor de características del sistema operativo de propiedad extendida para la interfaz. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Este valor del Registro solo es válido cuando HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabled no está presente o se establece en 0. Establezca este valor del Registro en 1 cuando desee indicar que se aceptan solicitudes de punto de conexión de clase para esta interfaz. Establézcalo en 0 (o no establezca este valor del Registro) cuando desee indicar que no se aceptan solicitudes de punto de conexión de clase para esta interfaz. |
Clave del Registro USBFN\Alternates
La sub clave alternativa se usa para definir una sola interfaz que tenga una o varias interfaces alternativas. En esta tabla se describen los valores que los OEM pueden modificar para las sub-claves en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates.
Cada sub-clave representa una interfaz diferente. Para definir una interfaz con valores alternativos, cree una subclave en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates mediante el nombre de la interfaz y rellénela con los valores de la tabla siguiente.
Valor | Tipo | Propietario | Descripción |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Lista de dos de más nombres de interfaz que corresponden a interfaces definidas en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces. Esa clave define colectivamente una interfaz con una configuración alternativa. La primera interfaz corresponde a la configuración alternativa 0, la segunda interfaz corresponde a la configuración alternativa 1, etc. |
InterfaceNumber | REG_DWORD | OEM o Microsoft | Opcional. Este valor se usa para asignar un número fijo de interfaz a una función. Los números de interfaz 0-1F están reservados para funciones heredadas, 20-3F están reservados para Microsoft y 40-5F están reservados para su uso por los OEM. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | Opcional. Define un descriptor de características del sistema operativo de propiedad extendida para la interfaz. |
Clave del Registro USBFN\Associations
Los OEM pueden especificar asociaciones definiendo descriptores de asociación de interfaz (IAD). Cada IAD permite agrupar varias interfaces en una sola función. En esta tabla se describen los valores que los OEM pueden modificar para las sub-claves en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations.
Cada subtarea representa un IAD diferente. Para definir una asociación, cree una sub-clave en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations mediante el nombre del IAD y rellénela con los valores de la tabla siguiente.
Valor | Tipo | Propietario | Descripción |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Lista de interfaces o interfaces alternativas asociadas a una función USB. Si el tamaño de la lista es inferior a 2, la pila del controlador de función no se carga. Otras funciones o interfaces continúan cargando. |
bFunctionClass | REG_DWORD | OEM o Microsoft | El código de clase de la función, establecido en 02. |
bFunctionSubClass | REG_DWORD | OEM o Microsoft | El código de subclase de la función, establecido en 0d. |
bFunctionProtocol | REG_DWORD | El código de protocolo de la función, establecido en 01. | |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | Opcional. Define un descriptor de características del sistema operativo de propiedad extendida para la interfaz. |
Caso de uso: Habilitación de MirrorLink
MirrorLink es un estándar de interoperabilidad que permite la integración entre dispositivos móviles y sistemas de información de automóviles. El dispositivo debe exponer una interfaz NCM CDC USB al cliente MirrorLink. Como dispositivo de clase de dispositivo de comunicaciones (CDC), es necesario describir las interfaces de datos mediante un descriptor de asociación de interfaz (IAD) o un descriptor de unión de funciones CDC.
Para habilitar la conectividad MirrorLink en Windows 10 Mobile dispositivo, el OEM debe realizar estos cambios para exponer un IAD.
Cree una asociación para las interfaces de comunicación y datos mediante un Descriptor de asociación de interfaz (IAD) estableciendo los valores del Registro que se muestran en la tabla anterior.
Además de la configuración del Registro, establezca este valor del Registro en un valor distinto de cero.
Valor Tipo Propietario Descripción MirrorLink REG_DWORD OEM o Microsoft Un valor distinto de cero indica que la interfaz admite MirrorLink. La pila de funciones USB no detiene el comando USB MirrorLink. Los descriptores específicos de clase se pueden incluir en el conjunto de descriptores de interfaz que se define en el Registro. El campo de tamaño debe establecerse en esos descriptores para que la pila del controlador de función USB pueda analizarlos con precisión.
Como alternativa, un descriptor de unión de funciones CDC también se puede definir como descriptor de interfaz de Class-Specific; Sin embargo, los números de interfaz especificados por el descriptor union son estáticos y no se asignan mediante la pila del controlador de función USB, y la presencia de un descriptor union no hace que las interfaces descritas por ella estén asociadas a un único PDO secundario. Se requiere un IAD para esa asociación.