Configurazione di Usbccgp.sys per selezionare una configurazione USB non predefinita
Questo articolo fornisce informazioni sulle impostazioni del Registro di sistema che configurano il modo in cui Usbccgp.sys seleziona una configurazione USB. L'argomento descrive anche come Usbccgp.sys gestisce le richieste di configurazione select inviate da un driver client che controlla una delle funzioni di un dispositivo composito.
Un dispositivo composito USB è costituito da più funzioni (dispositivi funzionali) all'interno di un singolo dispositivo USB. Se Windows carica il driver padre generico ( Usbccgp.sys) fornito da Microsoft per un dispositivo composito, da quel punto in poi Usbccgp.sys è responsabile della selezione della configurazione del dispositivo. Ogni interfaccia o raccolta di interfacce di un dispositivo composito è, in molti aspetti, ad esempio un dispositivo separato con il proprio oggetto dispositivo fisico (PDO). La reimpostazione della configurazione del dispositivo modifica la configurazione per tutte le interfacce del dispositivo, non solo quella che controlla il driver client. Il sistema operativo non consente questa operazione. Pertanto, un driver client che controlla un set di interfacce o una raccolta di interfacce del dispositivo composito non può modificare la configurazione inizialmente impostata da Usbccgp.sys.
Tuttavia, in Windows Vista e versioni successive di Windows, è possibile aggiungere i valori del Registro di sistema seguenti per specificare la configurazione da selezionare:
Chiave del Registro di sistema | Type | Value | Valore predefinito |
---|---|---|---|
OriginalConfigurationValue | REG_DWORD | Indice di configurazione USB. Usbccgp.sys usa prima OriginalConfigurationValue per una richiesta di configurazione select. | 0 |
AltConfigurationValue | REG_DWORD | Indice di configurazione da usare se la richiesta di configurazione select-configuration con OriginalConfigurationValue ha esito negativo. | 0 |
Nota
Per impostazione predefinita, le impostazioni del Registro di sistema precedenti non sono presenti. Devono essere aggiunti sotto la chiave hardware (nota anche come "dispositivo") del dispositivo USB.
L'impostazione del Registro di sistema consente al driver CCGP di selezionare una configurazione alternativa.
I valori del Registro di sistema descritti nella tabella precedente corrispondono all'indice di configurazione definito da USB, indicato dal membro bConfigurationValue del descrittore di configurazione (USB_CONFIGURATION_DESCRIPTOR) e non dai valori bConfigurationNum riportati nel descrittore di configurazione del dispositivo. Prima di tutto, Usbccgp.sys invia una richiesta di configurazione select-configuration al driver del bus USB padre (Usbhub.sys) usando l'indice di configurazione USB specificato da OriginalConfigurationValue. Se la richiesta ha esito negativo, Usbccgp.sys tenta di usare il valore specificato in AlternateConfigurationValue. Usbccgp.sys usa i valori predefiniti se AlternateConfigurationValue o OriginalConfigurationValue non sono validi.
Una richiesta di configurazione selezionata può avere esito negativo per molti motivi. L'errore più comune si verifica quando il dispositivo non risponde correttamente alla richiesta o quando il valore bMaxPower (potenza richiesta dalla configurazione richiesta) supera il valore di alimentazione supportato dalla porta hub. Ad esempio, bMaxPower per una configurazione specifica (specificata da OriginalConfigurationValue) è 100 milliamperes, ma la porta hub è in grado di fornire solo 50 milliamperes. Quando Usbccgp.sys invia una richiesta di configurazione selezionata per tale configurazione, lo stack di driver USB (in particolare, il driver della porta USB) non riesce la richiesta. Usbccgp.sys quindi invia un'altra richiesta di configurazione select specificando la configurazione indicata da AltConfigurationValue. Se la configurazione alternativa richiede o meno 50 milliamperes e non si verificano altri problemi, la richiesta di configurazione di selezione viene completata correttamente.
Funzionalità di compatibilità
Anche se un driver client per una funzione nel dispositivo composito non è in grado di selezionare la configurazione di un dispositivo composito, il driver client può comunque inviare una richiesta di configurazione select-configuration a Usbccgp.sys. Per informazioni su come compilare la richiesta, vedere How to Select a Configuration for a USB Device (Come selezionare una configurazione per un dispositivo USB). Usbccgp.sys esegue le attività seguenti dopo aver ricevuto una richiesta di configurazione select-configuration da un driver client:
- Convalida la richiesta ricevuta usando gli stessi criteri usati dal driver della porta USB per convalidare le richieste di configurazione select.The received request by using the same criteria used by the USB port driver to validate any select-configuration requests.
- Se la richiesta specifica le impostazioni dell'interfaccia o della pipe diverse dalle impostazioni correnti, Usbccgp.sys invia una richiesta di interfaccia select inviando un'URB_FUNCTION_SELECT_INTERFACE del tipo per modificare le impostazioni esistenti alle nuove impostazioni di interfaccia e pipe.
- Copia il contenuto memorizzato nella cache delle strutture di USBD_INTERFACE_INFORMATION e USBD_PIPE_INFORMATION nell'oggetto BLOB.
- Completa l'elemento DELL'OGGETTO.