Condividi tramite


Enumerazione dei dispositivi compositi USB

Quando un nuovo dispositivo USB è connesso a un computer host, il driver del bus USB crea un oggetto dispositivo fisico (PDO) per il dispositivo e genera un evento PnP per segnalare il nuovo PDO. Il sistema operativo esegue quindi una query sul driver del bus per individuare gli ID hardware associati al PDO.

Per tutti i dispositivi USB, il driver del bus USB segnala un ID dispositivo con il formato seguente:

USB\VID_xxxx&PID_yyyy

I valori xxxx e yyyy vengono acquisiti direttamente dai campi idVendor e idProduct del descrittore di dispositivo, rispettivamente.

Il driver del bus segnala anche un identificatore compatibile (ID) di USB\COMPOSITE, se il dispositivo soddisfa i requisiti seguenti:

  • Il campo della classe del dispositivo del descrittore di dispositivo (bDeviceClass) deve contenere un valore pari a zero oppure i campi della classe (bDeviceClass), della sottoclasse (bDeviceSubClass) e del protocollo (bDeviceProtocol) del descrittore del dispositivo devono avere i valori rispettivamente 0xEF, 0x02 e 0x01, come illustrato in Descrittore associazione interfaccia USB.

  • Il dispositivo deve avere più interfacce.

  • Il dispositivo deve avere una singola configurazione.

Il driver del bus controlla anche i campi della classe dispositivo (bDeviceClass), della sottoclasse (bDeviceSubClass) e del protocollo (bDeviceProtocol) del descrittore del dispositivo. Se questi campi sono zero, il dispositivo è un dispositivo composito e il driver del bus segnala un identificatore compatibile aggiuntivo (ID) di USB\COMPOSITE per il PDO.

Dopo che il driver del bus recupera l'hardware e gli ID compatibili per il nuovo PDO, il sistema operativo cerca i file INF. Se uno dei file INF contiene una corrispondenza per l'ID dispositivo, Windows carica tale driver e il driver padre generico non entra in gioco. Se nessun file INF contiene l'ID dispositivo e pdo ha un ID compatibile, Windows cerca l'ID compatibile. Questa ricerca produce una corrispondenza in Usb.inf e fa sì che il sistema operativo carichi il driver padre generico USB (Usbccgp.sys).

Se il dispositivo non ha le caratteristiche per generare un ID compatibile di USB\COMPOSITE, devi fornire un file INF che carica il driver padre generico. Il file INF deve contenere una sezione needs/includes che fa riferimento a Usb.inf.

Se il dispositivo composito ha più configurazioni, il file INF specificato deve specificare quale configurazione deve essere usata dall'elemento padre generico nel Registro di sistema. Le chiavi del Registro di sistema necessarie sono descritte in Configurazione Usbccgp.sys per selezionare una configurazione USB non predefinita.