Impostazioni del Registro di sistema USB per un driver del controller di funzione
Gli OEM devono impostare diversi valori del Registro di sistema per assicurarsi che il dispositivo enumera con i metadati corretti quando si è connessi a un computer. Questi valori specificano i descrittori di configurazione e dispositivo per i driver lato dispositivo USB in Windows. Gli OEM che creano e includono le proprie interfacce devono impostare valori aggiuntivi del Registro di sistema affinché le interfacce vengano caricate e usate.
Le chiavi del Registro di sistema correlate ai driver USB sul lato dispositivo sono in: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
In questo argomento vengono descritte le impostazioni per la chiave e le sottochiavi precedenti che definiscono i descrittori di dispositivo, configurazione e interfaccia per il dispositivo.
Chiave del Registro di sistema USBFN
Le informazioni di configurazione per il dispositivo USB si trovano nel Registro di sistema in: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN
Questa tabella descrive le relative sottochiavi. Alcuni di essi possono essere modificati dagli OEM. Altre informazioni sui valori supportati per ogni sottochiave sono disponibili nelle sezioni seguenti.
Chiave di sottoscrizione | Descrizione |
---|---|
Glifi alternativi | Questa sottochiave contiene sottochiavi aggiuntive che descrivono un'interfaccia con una o più impostazioni alternative. |
Associazioni | Questa sottochiave definisce i descrittori di associazione dell'interfaccia (ID). Ogni IAD consente di raggruppare più interfacce in una singola funzione. Ogni sottochiave rappresenta un IAD diverso e gli OEM possono modificare i valori per tali sottochiavi. |
Default | Questa sottochiave contiene valori predefiniti usati per descrivere le impostazioni specifiche del dispositivo, ad esempio VID e PID. Si tratta di una sottochiave di proprietà di Microsoft i cui valori vengono sostituiti da quelli nella chiave padre. |
Configurazioni | Questa sottochiave contiene sottochiavi aggiuntive che contengono valori del descrittore di configurazione usati durante l'enumerazione USB. Ad esempio, la configurazione di test standard potrebbe esistere in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig. |
Configurazioni\Impostazione predefinita | Si tratta di una sottochiave di proprietà di Microsoft. Contiene valori per la configurazione predefinita. Le interfacce nella configurazione predefinita vengono aggiunte prima della configurazione corrente presente quando il valore IncludeDefaultCfg è impostato su 1 sotto la chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . |
Interfacce | Questa sottochiave contiene sottochiavi aggiuntive che descrivono descritto descrittori di interfaccia specifici. Ad esempio, l'indirizzo IP tramite l'interfaccia USB può risiedere inHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb. Il nome della sottochiave dell'interfaccia viene usato anche come ID hardware del dispositivo figlio USBFN per il caricamento del driver di classe USBFn. Nell'esempio IP tramite USB, l'ID hardware del dispositivo figlio USBFN sarà USBFN\IpOverUsb. |
Questa tabella descrive i valori che gli OEM possono definire nella chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN . I valori non definiti in questa chiave presuppongono i valori predefiniti definiti da Microsoft in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default.
Tutti gli OEM devono impostare i valori idVendor, idProduct, ManufacturerString e ProductString . Gli OEM che creano e aggiungono le proprie interfacce devono anche impostare CurrentConfiguration sul nome della sottochiave inHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations che include le relative interfacce in InterfaceList.
Valore | Tipo | Proprietario | Descrizione |
---|---|---|---|
IncludeDefaultCfg | REG_DWORD | OEM | Impostare su 1 quando gli OEM vogliono includere le interfacce della configurazione predefinita, ad esempio IpOverUsb o MTP. |
idVendor | REG_DWORD | OEM | Identificatore del fornitore per il descrittore del dispositivo inviato all'host durante l'enumerazione. |
idProduct | REG_DWORD | OEM | Identificatore del prodotto per il descrittore di dispositivo inviato all'host durante l'enumerazione. |
ManufacturerString | REG_SZ | OEM | Stringa del produttore inviata all'host per identificare il produttore del dispositivo. |
ProductString | REG_SZ | OEM | Stringa che descrive il dispositivo come prodotto. Il valore predefinito è Windows 10 Mobile Dispositivo. Questo valore viene usato come nome visualizzato del dispositivo nell'interfaccia utente del computer connesso. Gli OEM devono assicurarsi che questo valore corrisponda al valore del valore PhoneModelName nella sottochiave DeviceTargetingInfo. |
iSerialNumber | REG_DWORD | OEM | Se questo valore è impostato su 0, il dispositivo non ha un numero di serie. Se questo valore è diverso da zero o non esiste, il numero di serie viene generato in modo univoco per ogni dispositivo. |
CurrentConfiguration | REG_SZ | OEM | Questa stringa deve corrispondere al nome di una sottochiave di configurazione. Questa stringa determina la configurazione da usare per compilare un descrittore di configurazione per l'enumerazione del dispositivo USB. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Impostare su 1 quando si vuole indicare che le richieste di endpoint di classe vengono accettate. Le richieste di endpoint di classe non vengono accettate per impostazione predefinita. Impostare su 0 (o non impostare questo valore del Registro di sistema) quando si desidera indicare che le richieste di endpoint di classe non vengono accettate o vengono accettate solo per interfacce specifiche. Vedere il valore ClassEndpointRequestEnabled nella sezione Chiave del Registro di sistema USBFN\Interfaces per informazioni su come accettare richieste di endpoint di classe per interfacce specifiche. |
Chiave del Registro di sistema USBFN\Configurations
Questa tabella descrive i valori che gli OEM possono definire per le sottochiavi inHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations. Ogni sottochiave rappresenta una configurazione USB diversa. Se l'OEM vuole creare la propria interfaccia, l'OEM deve definire una nuova configurazione che contiene le interfacce da usare. A tale scopo, creare una sottochiave in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations che usa il nome della configurazione e popolare la sottochiave con i valori in questa tabella. Inoltre, affinché il driver USB usi la nuova configurazione, il valore CurrentConfiguration (descritto nella tabella precedente) deve essere impostato sul nome della sottochiave di configurazione.
Valore | Tipo | Proprietario | Descrizione |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Contiene un elenco di nomi di interfaccia che corrispondono alle sottochiavi dell'interfaccia inHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces, le associazioni IAD definite in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associationse le interfacce alternative definite in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates. Tali chiavi determinano le interfacce usate per descrivere il descrittore di configurazione composito. Se il valore IncludeDefaultCfg nella chiave diHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN è impostato su 1, questo elenco viene aggiunto all'elenco di interfacce predefinite di proprietà di Microsoft per creare l'elenco di interfacce completo che verrà usato dal dispositivo per enumerare. |
MSOSCompatIdDescriptor | REG_BINARY | OEM o Microsoft | facoltativo. Definisce un descrittore di funzionalità del sistema operativo Compat esteso per la configurazione. Se il valore IncludeDefaultCfg nella chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN è impostato su 1, le funzioni di questo descrittore vengono aggiunte alle funzioni e alle interfacce nella configurazione predefinita. |
Chiave del Registro di sistema USBFN\Interfaces
Questa tabella descrive i valori che gli OEMS possono modificare per le sotto-chiavi in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces.
Ogni sottochiave rappresenta un'interfaccia USB diversa. Per definire un'interfaccia, creare una sottochiave in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces usando il nome dell'interfaccia e popolarla con i valori della tabella seguente. Inoltre, un'interfaccia verrà inclusa solo se l'interfaccia fa parte dell'InterfacciaList dell'oggettoCurrentConfiguration.
Valore | Tipo | Proprietario | Descrizione |
---|---|---|---|
InterfaceDescriptor | REG_BINARY | OEM o Microsoft | Rappresentazione binaria di un descrittore di interfaccia da inviare all'host durante l'enumerazione USB. I valori bInterfaceNumber e iInterface vengono popolati automaticamente dallo stack di funzioni USB dopo aver compilato un descrittore di configurazione completo per evitare conflitti con altri descrittori dell'interfaccia. |
InterfaceGUID | REG_SZ | OEM o Microsoft | GUID che identifica in modo univoco un'interfaccia sul bus. |
InterfaceNumber | REG_DWORD | OEM o Microsoft | facoltativo. Questo valore viene usato per assegnare un numero di interfaccia fisso a una funzione. I numeri di interfaccia 0-1F sono riservati alle funzioni legacy, 20-3F sono riservati a Microsoft e 40-5F sono riservati per l'uso da parte di OEMs. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | facoltativo. Definisce un descrittore delle funzionalità del sistema operativo delle proprietà estese per l'interfaccia. |
ClassEndpointRequestEnabled | REG_DWORD | OEM | Questo valore del Registro di sistema è valido solo quando HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabled non è presente o è impostato su 0. Impostare questo valore del Registro di sistema su 1 quando si vuole indicare che le richieste di endpoint di classe per questa interfaccia vengono accettate. Impostare su 0 (o non impostare questo valore del Registro di sistema) quando si desidera indicare che le richieste di endpoint di classe per questa interfaccia non vengono accettate. |
Chiave del Registro di sistema USBFN\Alternates
La sottochiave alternativa viene usata per definire una singola interfaccia con una o più interfacce alternative. Questa tabella descrive i valori che gli OEMS possono modificare per le sotto-chiavi in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates.
Ogni sottochiave rappresenta un'interfaccia diversa. Per definire un'interfaccia con impostazioni alternative, creare una sottochiave in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates usando il nome dell'interfaccia e popolarla con i valori della tabella seguente.
Valore | Tipo | Proprietario | Descrizione |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Elenco di due nomi di interfaccia che corrispondono alle interfacce definite in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces. Tale chiave definisce collettivamente un'interfaccia con impostazioni alternative. La prima interfaccia corrisponde all'impostazione alternativa 0, la seconda interfaccia corrisponde all'impostazione alternativa 1 e così via. |
InterfaceNumber | REG_DWORD | OEM o Microsoft | facoltativo. Questo valore viene usato per assegnare un numero di interfaccia fisso a una funzione. I numeri di interfaccia 0-1F sono riservati alle funzioni legacy, 20-3F sono riservati a Microsoft e 40-5F sono riservati per l'uso da parte di OEMs. |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | facoltativo. Definisce un descrittore delle funzionalità del sistema operativo delle proprietà estese per l'interfaccia. |
Chiave del Registro di sistema USBFN\Associazioni
Gli OEMs possono specificare le associazioni definendo descrittori dell'associazione di interfacce (ID). Ogni IAD consente di raggruppare più interfacce in una singola funzione. Questa tabella descrive i valori che gli OEMS possono modificare per le sotto-chiavi in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations.
Ogni sottochiave rappresenta un IAD diverso. Per definire un'associazione, creare una sottochiave in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations usando il nome dell'IAD e popolarla con i valori della tabella seguente.
Valore | Tipo | Proprietario | Descrizione |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM o Microsoft | Elenco di interfacce o interfacce alternative associate a una funzione USB. Se le dimensioni dell'elenco sono inferiori a 2, lo stack di driver di funzione non riesce a caricare. Altre funzioni o interfacce continuano a caricare. |
bFunctionClass | REG_DWORD | OEM o Microsoft | Codice di classe della funzione, impostato su 02. |
bFunctionSubClass | REG_DWORD | OEM o Microsoft | Codice della sottoclasse della funzione, impostato su 0d. |
bFunctionProtocol | REG_DWORD | Codice del protocollo della funzione, impostato su 01. | |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM o Microsoft | facoltativo. Definisce un descrittore delle funzionalità del sistema operativo delle proprietà estese per l'interfaccia. |
Caso d'uso: Abilitazione di MirrorLink
MirrorLink è uno standard di interoperabilità che consente l'integrazione tra dispositivi mobili e sistemi di infotainment dell'auto. Il dispositivo deve esporre un'interfaccia NCM USB CDC al client MirrorLink. Come dispositivo Cdc (Communications Device Class), è necessario descrivere le interfacce dati usando un descrittore IAD (Interface Association Descriptor) e/o un descrittore dell'unione delle funzioni CDC.
Per abilitare la connettività MirrorLink nel dispositivo Windows 10 Mobile, l'OEM deve apportare queste modifiche per esporre un IAD.
Creare un'associazione per le interfacce di comunicazione e dati usando un descrittore di associazione dell'interfaccia (IAD) impostando i valori del Registro di sistema visualizzati nella tabella precedente.
Oltre alle impostazioni del Registro di sistema, impostare questo valore del Registro di sistema su un valore diverso da zero.
Valore Tipo Proprietario Descrizione MirrorLink REG_DWORD OEM o Microsoft Un valore diverso da zero indica che l'interfaccia supporta MirrorLink. Lo stack di funzioni USB non blocca il comando MirrorLink USB. I descrittori specifici della classe possono essere inclusi nel set di descrittori dell'interfaccia definito nel Registro di sistema. Il campo delle dimensioni deve essere impostato in tali descrittori in modo che lo stack di driver di funzione USB possa analizzarli in modo accurato.
In alternativa, un descrittore dell'unione delle funzioni CDC può essere definito anche come descrittore di interfaccia Class-Specific; tuttavia, i numeri di interfaccia specificati dal descrittore Union sono statici e non vengono assegnati dallo stack di driver di funzione USB e la presenza di un descrittore Union non causa l'associazione delle interfacce descritte da un singolo PDO figlio. Per tale associazione è necessario un IAD.