Condividi tramite


Supporto di Plug and Play

Questo articolo descrive il processo di enumerazione nel bus seriale universale.

Quando un dispositivo è collegato a un computer basato su Windows, lo stack USB di Windows enumera il dispositivo, estrae i dettagli dal dispositivo, incluso il descrittore di interfaccia (o descrittori) del dispositivo e quindi genera un set di ID hardware e ID compatibili per il dispositivo.

Per un elenco completo degli ID hardware USB, vedere la sezione "Stringhe di identificazione dispositivo" in Installazione del dispositivo.

Gli esempi nelle sezioni seguenti illustrano due scenari:

  • ID USB per un singolo dispositivo USB a interfaccia
  • ID USB per un dispositivo USB multi-interfaccia (composito)

Esempio 1: dispositivo USB HID a interfaccia singola

Questo esempio mostra come vengono generati gli ID hardware e gli ID compatibili per un dispositivo USB a interfaccia singola in un sistema che esegue Windows 2000 o Windows XP.

Quando il dispositivo è originariamente enumerato dallo stack USB, il driver USBHUB estrae idVendor, idProduct e bcdDevice dal descrittore del dispositivo. Questi tre campi sono incorporati per generare un ID hardware USB. Si noti che i numeri fornitore, dispositivo e revisione vengono sempre archiviati in formato esadecimale.

La generazione dell'ID compatibile per il dispositivo è più complessa. Il codice di classe, il codice della sottoclasse e il codice del protocollo sono determinati dal descrittore dell'interfaccia bInterfaceClass, bInterfaceSubClass e bInterfaceProtocol. Questi valori sono in formato esadecimale a due cifre.

Nota Se si specifica un INF, gli identificatori hardware devono corrispondere agli identificatori in grassetto nella colonna sinistra della tabella seguente. È consigliabile evitare di usare gli identificatori compatibili elencati nella colonna destra.

Identificatori hardware: identificatori compatibili

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz: USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy: USB\Class_aa&SubClass_bb

: USB\Class_aa

Esempio 2: dispositivo USB HID a più interfacce/funzioni (dispositivo composito)

I dispositivi USB con più funzioni sono denominati dispositivi compositi. Questo esempio mostra come vengono generati gli ID hardware e gli ID compatibili per i dispositivi USB compositi in Windows. Quando un nuovo dispositivo composito USB viene collegato a un sistema computer che esegue Windows, il driver USBHUB crea un oggetto dispositivo fisico (PDO) e notifica al sistema operativo che il relativo set di dispositivi figlio è stato modificato. Dopo aver eseguito una query sul driver hub per trovare gli ID hardware associati al nuovo PDO, il sistema cerca i file INF appropriati per trovare una corrispondenza per gli identificatori. Se un fornitore sceglie di caricare un solo driver per l'intero dispositivo (ovvero non usando il driver di dispositivo composito) e multiplex tutte le interfacce nel software con tale driver, il fornitore deve specificare una corrispondenza di ID hardware per impedire al sistema operativo di raccogliere la corrispondenza di classificazione inferiore (USB\COMPOSITE).

Nota Se si specifica un INF, gli identificatori hardware devono corrispondere agli identificatori in grassetto nella colonna sinistra della tabella seguente. È consigliabile evitare di usare gli identificatori compatibili elencati nella colonna destra.

Identificatori hardware: identificatori compatibili

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz: USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy: USB\Class_aa&SubClass_bb

: USB\Class_aa

: USB\COMPOSITE

Se, tuttavia, non viene trovata alcuna corrispondenza hardware, Plug and Play di Windows usa l'identificatore USB\COMPOSITE per caricare il driver padre generico USB (USBCCGP). Il driver padre generico crea quindi un set separato di PDO (uno per ogni interfaccia) con un set separato di ID hardware per ogni interfaccia del dispositivo composito. Nella sezione seguente viene visualizzato il formato degli ID hardware per i PDO figlio.

Per compilare il set di ID hardware per il PDO di ogni interfaccia, il driver USBCCGP aggiunge il numero di interfaccia (che è un valore esadecimale in base zero) alla fine dell'ID hardware.

Il codice di classe, il codice della sottoclasse e il codice del protocollo sono determinati rispettivamente dai campi bInterfaceClass, bInterfaceSubClass e bInterfaceProtocol del descrittore di interfaccia. Questi valori sono in formato esadecimale a due cifre.

Nota Se si specifica un INF, per caricare il driver o per fornire un nome descrittivo del dispositivo, gli identificatori hardware devono corrispondere agli identificatori in grassetto nella colonna sinistra della tabella seguente. È consigliabile evitare di usare gli identificatori compatibili elencati nella colonna destra.

Identificatori hardware: identificatori compatibili

USB\Vid_xxxx&Pid_yyyy&Rev_zzzz&MI_ww: USB\Class_aa&SubClass_bb&Prot_cc

USB\Vid_xxxx&Pid_yyyy&MI_ww: USB\Class_aa&SubClass_bb

: USB\Class_aa