Le bus USB est physiquement conçu de sorte que l'acte d'insérer (et de retirer) une prise puisse être reconnu par le contrôleur hôte. Lorsque cet événement "plug" se produit, le contrôleur hôte informe son pilote de périphérique qui scanne le bus et demande à chaque périphérique de s'identifier.
Tous les périphériques USB contiennent une collection d'informations sur le périphérique, appelées descripteurs. Les descripteurs de périphériques sont récupérés sur tous les périphériques avec la même commande. Cela permet à un pilote de périphérique pour le bus USB lui-même de demander efficacement à un périphérique nouvellement connecté ce qu'il est et de s'attendre à obtenir une réponse raisonnable.
De tous les descripteurs, seuls quelques-uns sont directement utilisés pour faire correspondre les pilotes à la plupart des périphériques. Cela est dû au fait que l'USB définit des classes de périphériques, et généralement le pilote système pour chaque classe de périphérique est suffisant pour gérer tous les périphériques qui prétendent appartenir à cette classe.
Tous les claviers prétendent appartenir à la classe HID (Human Interface), tout comme les souris, les tablettes et les contrôleurs de jeu, par exemple. La classe HID a plusieurs sous-classes (claviers, souris, etc.), donc chacune est gérée de la manière attendue.
La plupart des périphériques de type disque prétendent appartenir à la classe de stockage de masse, et le pilote système ne fonctionne que pour ceux-ci également.
Outre la classe et la sous-classe, les descripteurs incluent également un ID de fournisseur (VID), un ID de produit (PID) et une révision. Les identifiants des fournisseurs sont attribués par le comité des normes (principalement par ordre d'émission, mais certaines entreprises ont reçu des demandes spéciales: Intel est 0x8086, par exemple). Les ID de produit sont attribués par chaque fournisseur et la combinaison de VID et PID doit être unique pour chaque produit commercialisé.
Lorsqu'un périphérique est installé pour la première fois, le VID, le PID, la révision, la classe et la sous-classe sont utilisés de manière prévisible pour choisir le pilote de périphérique qui est chargé. Le fait d'avoir des noms spécifiques de fournisseur et de produit permet à un fournisseur de personnaliser un périphérique qui pourrait autrement être géré (presque) correctement par le pilote du système de stock.
Un autre descripteur important est le numéro de série de l'appareil. Si un appareil possède un numéro de série, il peut être reconnu et traité de la même manière lorsqu'il est branché à nouveau, même si un port USB physique différent est utilisé. Ceci est important pour les périphériques de stockage afin qu'ils reçoivent la même lettre de lecteur et pour les périphériques tels que les adaptateurs de port série et les modems afin qu'ils reçoivent la même désignation de port COM.
L'ensemble de ce processus est documenté sur MSDN , mais les détails sont répartis sur une variété d'endroits.