Il bus USB è progettato fisicamente in modo che l'atto di inserire (e rimuovere) una spina possa essere riconosciuto dal controller host. Quando si verifica questo evento "plug", il controller host informa il driver del dispositivo che esegue la scansione del bus e chiede a ciascun dispositivo di identificarsi.
Tutti i dispositivi USB contengono una raccolta di informazioni sul dispositivo, denominate descrittori. I descrittori dei dispositivi vengono recuperati da tutti i dispositivi con lo stesso comando. Ciò consente a un driver di dispositivo per il bus USB stesso di chiedere effettivamente a un dispositivo appena connesso di cosa si tratta e si aspetta di ottenere una risposta ragionevole.
Di tutti i descrittori, solo alcuni vengono utilizzati direttamente per abbinare i driver alla maggior parte dei dispositivi. Questo perché USB definisce le classi di dispositivi e di solito il driver di sistema per ciascuna classe di dispositivi è sufficiente per gestire tutti i dispositivi che dichiarano di appartenere a quella classe.
Tutte le tastiere dichiareranno di essere nella classe HID (Human Interface), come ad esempio mouse, tablet e controller di gioco. La classe HID ha diverse sottoclassi (tastiere, mouse, ecc.), Quindi ognuna viene gestita nel modo previsto.
La maggior parte dei dispositivi simili a dischi dichiarerà di essere nella classe di archiviazione di massa e il driver di sistema funziona anche per quelli.
Oltre alla classe e alla sottoclasse, i descrittori includono anche un ID fornitore (VID), un ID prodotto (PID) e una revisione. Gli ID fornitore sono assegnati dal comitato standard (principalmente in ordine di emissione ma alcune aziende hanno ricevuto richieste speciali: intel è 0x8086, ad esempio). Gli ID prodotto sono assegnati da ciascun fornitore e la combinazione di VID e PID deve essere univoca per ciascun prodotto rilasciato.
Quando un dispositivo viene installato per la prima volta, VID, PID, revisione, classe e sottoclasse vengono utilizzati in modo prevedibile per scegliere il driver di dispositivo che viene caricato. La presenza di nomi specifici di fornitori e prodotti consente a un fornitore di personalizzare un dispositivo che altrimenti potrebbe essere gestito (quasi) correttamente dal driver del sistema di magazzino.
Un altro descrittore importante è il numero di serie del dispositivo. Se un dispositivo ha un numero seriale, può essere riconosciuto e trattato allo stesso modo quando ricollegato, anche se viene utilizzata una porta USB fisica diversa. Questo è importante per i dispositivi di archiviazione in modo che ricevano la stessa lettera di unità e per dispositivi come adattatori e modem di porte seriali in modo che ricevano la stessa designazione della porta COM.
L'intero processo è documentato su MSDN , ma i dettagli sono sparsi in vari luoghi.