Configurações do registro USB para um driver do controlador de funções
Os OEMs devem definir vários valores de Registro para garantir que seu dispositivo enumera com os metadados corretos quando conectado a um computador. Esses valores especificam descritores de dispositivo e configuração para os drivers usb do lado do dispositivo no Windows. Os OEMs que criam e incluem suas próprias interfaces devem definir valores adicionais do Registro para que suas interfaces sejam carregadas e usadas.
As chaves do Registro relacionadas aos drivers USB do lado do dispositivo estão em: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
Este tópico descreve as configurações para a chave e as subchaves anteriores que definem os descritores de dispositivo, configuração e interface para o dispositivo.
Chave do Registro USBFN
As informações de configuração do dispositivo USB estão no registro em: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
Esta tabela descreve suas subchaves. Alguns deles podem ser modificados por OEMs. Mais informações sobre os valores com suporte para cada sub-chave são fornecidas nas seções abaixo.
Subchave | Descrição |
---|---|
Alternativos | Essa subchave contém subchaves adicionais que descrevem uma interface que tem uma ou mais configurações alternativas. |
Associações | Essa sub-chave define IADs (descritores de associação de interface). Cada IAD permite que várias interfaces sejam agrupadas em uma única função. Cada subchave representa um IAD diferente e os OEMs podem modificar os valores dessas subchaves. |
Default | Essa subchave contém valores padrão que são usados para descrever configurações específicas do dispositivo, como VID e PID. Essa é uma subchave de propriedade da Microsoft cujos valores são substituídos por aqueles na chave pai. |
Configurações | Essa subchave contém subchaves adicionais que contêm valores de descritor de configuração que são usados durante a enumeração USB. Por exemplo, a configuração de teste padrão pode existir emHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig. |
Configurações\Padrão | Essa é uma subchave de propriedade da Microsoft. Ele contém valores para a configuração padrão. As interfaces na configuração padrão são adicionadas antes da configuração atual presente quando o valor IncludeDefaultCfg é definido como 1 na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . |
Interfaces | Essa subchave contém subchaves adicionais que descrevem descritores de interface específicos. Por exemplo, o IP sobre a interface USB pode residir em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb. O nome da subchave da interface também é usado como a ID de hardware do dispositivo filho USBFN para carregar o driver de classe USBFn. No exemplo DE IP por USB, a ID de hardware do dispositivo filho USBFN será USBFN\IpOverUsb. |
Esta tabela descreve os valores que os OEMs podem definir na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . Os valores que não são definidos nessa chave pressupõem os valores padrão definidos pela Microsoft em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default.
Todos os OEMs devem definir os valores idVendor, idProduct, ManufacturerString e ProductString . Os OEMs que criam e adicionam suas próprias interfaces também devem definir CurrentConfiguration como o nome da subchave em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations que inclui suas interfaces na InterfaceList.
Valor | Tipo | Proprietário | Descrição |
---|---|---|---|
IncludeDefaultCfg | REG_DWORD | OEM | Defina como 1 quando os OEMs quiserem incluir as interfaces da configuração Padrão, como IpOverUsb ou MTP. |
idVendor | REG_DWORD | OEM | O identificador do fornecedor do descritor de dispositivo que é enviado ao host durante a enumeração. |
idProduct | REG_DWORD | OEM | O identificador do produto para o descritor de dispositivo que é enviado para o host durante a enumeração. |
ManufacturerString | REG_SZ | OEM | A cadeia de caracteres do fabricante que é enviada ao host para identificar o fabricante do dispositivo. |
ProductString | REG_SZ | OEM | Uma cadeia de caracteres que descreve o dispositivo como um produto. O valor padrão é Windows 10 Mobile Device. Esse valor é usado como o nome de exibição do dispositivo na interface do usuário do computador conectado. Os OEMs devem verificar se esse valor corresponde ao valor de PhoneModelName na sub-chave DeviceTargetingInfo. |
iSerialNumber | REG_DWORD | OEM | Se esse valor for definido como 0, o dispositivo não terá um número de série. Se esse valor for diferente de zero ou não existir, o número de série será gerado exclusivamente por dispositivo. |
CurrentConfiguration | REG_SZ | OEM | Essa cadeia de caracteres deve corresponder ao nome de uma subchave de configuração. Essa cadeia de caracteres determina qual configuração usar para criar um descritor de configuração para enumeração de dispositivo USB. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Defina como 1 quando desejar indicar que as solicitações de ponto de extremidade de classe são aceitas. As solicitações de ponto de extremidade de classe não são aceitas por padrão. Defina como 0 (ou não defina esse valor do Registro) quando você quiser indicar que as solicitações de ponto de extremidade de classe não são aceitas ou são aceitas apenas para interfaces específicas. Consulte o valor ClassEndpointRequestEnabled na seção chave do Registro USBFN\Interfaces para saber como aceitar solicitações de ponto de extremidade de classe para interfaces específicas. |
Chave do Registro USBFN\Configurations
Esta tabela descreve os valores que os OEMs podem definir para subchaves em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations. Cada subchave representa uma configuração USB diferente. Se o OEM quiser criar sua própria interface, o OEM deverá definir uma nova configuração que contenha as interfaces a serem usadas. Para fazer isso, crie uma subchave em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations que usa o nome da configuração e preencha a subchave com os valores nesta tabela. Além disso, para que o driver USB use a nova configuração, o valor CurrentConfiguration (descrito na tabela anterior) deve ser definido como o nome da subchave de configuração.
Valor | Tipo | Proprietário | Descrição |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Contém uma lista de nomes de interface que correspondem às subchaves de interface em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces, as associações do IAD definidas emHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associationse as interfaces alternativas definidas emHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates. Essas chaves determinam as interfaces usadas para descrever o descritor de configuração composta. Se o valor IncludeDefaultCfg na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN estiver definido como 1, essa lista será acrescentada à lista de interfaces padrão de propriedade da Microsoft para criar a lista de interface completa que o dispositivo usará para enumerar. |
MSOSCompatIdDescriptor | REG_BINARY | OEM ou Microsoft | Opcional. Define um descritor de recursos do sistema operacional de ID de compatibilidade estendido para a configuração. Se o valor IncludeDefaultCfg sob a chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN for definido como 1, as funções nesse descritor serão acrescentadas às funções e interfaces na configuração padrão. |
Chave do Registro USBFN\Interfaces
Esta tabela descreve os valores que os OEMs podem modificar para subchaves em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces.
Cada sub-chave representa uma interface USB diferente. Para definir uma interface, crie uma sub-chave em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces usando o nome da interface e preencha-a com os valores na tabela abaixo. Além disso, uma interface só será incluída se a interface fizer parte da InterfaceList do CurrentConfiguration.
Valor | Tipo | Proprietário | Descrição |
---|---|---|---|
InterfaceDescriptor | REG_BINARY | OEM ou Microsoft | Uma representação binária de um descritor de interface para enviar ao host durante a enumeração USB. Os valores bInterfaceNumber e iInterface são preenchidos automaticamente pela pilha de funções USB depois de compilar um descritor de configuração completo para evitar conflitos com outros descritores de interface. |
InterfaceGUID | REG_SZ | OEM ou Microsoft | Um GUID que identifica exclusivamente uma interface no barramento. |
InterfaceNumber | REG_DWORD | OEM ou Microsoft | Opcional. Esse valor é usado para atribuir um número de interface fixa a uma função. Os números de interface 0-1F são reservados para funções herdadas, 20-3F são reservados para a Microsoft e 40-5F são reservados para uso por OEMs. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | Opcional. Define um Descritor de Recurso do SO de Propriedade Estendida para a interface. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Esse valor do Registro só é válido quando HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabled não está presente ou é definido como 0. Defina esse valor do Registro como 1 quando desejar indicar que as solicitações de ponto de extremidade de classe para essa interface são aceitas. Defina como 0 (ou não defina esse valor do Registro) quando desejar indicar que as solicitações de ponto de extremidade de classe para essa interface não são aceitas. |
Chave do Registro USBFN\Alternates
A sub-chave alternativa é usada para definir uma única interface que tenha uma ou mais interfaces alternativas. Esta tabela descreve os valores que os OEMs podem modificar para subchaves em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates.
Cada sub-chave representa uma interface diferente. Para definir uma interface com configurações alternativas, crie uma sub-chave em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates usando o nome da interface e preencha-a com os valores na tabela abaixo.
Valor | Tipo | Proprietário | Descrição |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Uma lista de dois dos mais nomes de interface que correspondem às interfaces definidas emHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces. Essa chave define coletivamente uma interface com configurações alternativas. A primeira interface corresponde à configuração alternativa 0, a segunda interface corresponde à configuração alternativa 1 e assim por diante. |
InterfaceNumber | REG_DWORD | OEM ou Microsoft | Opcional. Esse valor é usado para atribuir um número de interface fixa a uma função. Os números de interface 0-1F são reservados para funções herdadas, 20-3F são reservados para a Microsoft e 40-5F são reservados para uso por OEMs. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | Opcional. Define um Descritor de Recurso do SO de Propriedade Estendida para a interface. |
Chave do Registro USBFN\Associations
Os OEMs podem especificar associações definindo IADs (Descritores de Associação de Interface). Cada IAD permite que várias interfaces sejam agrupadas em uma única função. Esta tabela descreve os valores que os OEMs podem modificar para subchaves em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations.
Cada sub-chave representa um IAD diferente. Para definir uma associação, crie uma sub-chave em HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations usando o nome do IAD e preencha-a com os valores na tabela abaixo.
Valor | Tipo | Proprietário | Descrição |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM ou Microsoft | Uma lista de interfaces ou interfaces alternativas associadas a uma função USB. Se o tamanho da lista for menor que 2, a pilha do driver de função falhará ao carregar. Outras funções ou interfaces continuam a ser carregadas. |
bFunctionClass | REG_DWORD | OEM ou Microsoft | O código de classe da função, definido como 02. |
bFunctionSubClass | REG_DWORD | OEM ou Microsoft | O código de subclasse da função, definido como 0d. |
bFunctionProtocol | REG_DWORD | O código de protocolo da função, definido como 01. | |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM ou Microsoft | Opcional. Define um Descritor de Recurso do SO de Propriedade Estendida para a interface. |
Caso de uso: habilitando o MirrorLink
MirrorLink é um padrão de interoperabilidade que permite a integração entre dispositivos móveis e sistemas de infotainment de carro. O dispositivo deve expor uma interface USB CDC NCM ao cliente MirrorLink. Como um dispositivo CDC (Classe de Dispositivo de Comunicações), é necessário descrever as interfaces de dados usando um IAD (Descritor de Associação de Interface) e/ou um Descritor de União de Funções CDC.
Para habilitar a conectividade MirrorLink no dispositivo Windows 10 Mobile, o OEM deve fazer essas alterações para expor um IAD.
Crie uma associação para as interfaces de comunicação e dados usando um IAD (Descritor de Associação de Interface) definindo os valores do Registro mostrados na tabela anterior.
Além das configurações do Registro, defina esse valor do Registro como um valor diferente de zero.
Valor Tipo Proprietário Descrição MirrorLink REG_DWORD OEM ou Microsoft Um valor diferente de zero indica que a interface dá suporte a MirrorLink. A pilha de funções USB não para o comando USB MirrorLink. Os descritores específicos da classe podem ser incluídos no conjunto de descritores de interface definido no Registro. O campo de tamanho deve ser definido nesses descritores para que a pilha do driver de função USB possa analisá-los com precisão.
Como alternativa, um descritor cdc function union também pode ser definido como um descritor de interface Class-Specific; no entanto, os números de interface especificados pelo descritor union são estáticos e não são atribuídos pela pilha de driver de função USB, e a presença de um descritor Union não faz com que as interfaces descritas por ele sejam associadas a um único PDO filho. Um IAD é necessário para essa associação.