O barramento USB é fisicamente projetado para que o ato de inserir (e remover) um plugue possa ser reconhecido pelo controlador host. Quando esse evento "plug" ocorre, o controlador host informa seu driver de dispositivo que varre o barramento e solicita que cada dispositivo se identifique.
Todos os dispositivos USB contêm uma coleção de informações sobre o dispositivo, denominadas descritores. Os descritores de dispositivos são recuperados de todos os dispositivos com o mesmo comando. Isso permite que um driver de dispositivo para o barramento USB em si peça efetivamente a um dispositivo recém-conectado o que ele é e espere obter uma resposta razoável.
De todos os descritores, apenas alguns são usados diretamente para corresponder os drivers à maioria dos dispositivos. Isso ocorre porque o USB define classes de dispositivos e, geralmente, o driver do sistema para cada classe de dispositivo é suficiente para manipular todos os dispositivos que afirmam estar nessa classe.
Todos os teclados pretendem estar na classe HID (Human Interface), assim como mouses, tablets e controladores de jogos, por exemplo. A classe HID tem várias subclasses (teclados, mouses, etc.), então cada uma é manipulada da maneira esperada.
A maioria dos dispositivos semelhantes a discos afirmam estar na classe Mass Storage, e o driver do sistema também funciona para eles também.
Além da classe e da subclasse, os descritores também incluem um ID de fornecedor (VID), ID do produto (PID) e revisão. Os IDs de fornecedores são atribuídos pelo comitê de padrões (principalmente na ordem de emissão, mas algumas empresas recebem solicitações especiais: a intel é 0x8086, por exemplo). As IDs de produtos são atribuídas por cada fornecedor e a combinação de VID e PID deve ser exclusiva para cada produto lançado.
Quando um dispositivo é instalado pela primeira vez, o VID, PID, revisão, classe e subclasse são usados de uma maneira previsível para escolher o driver de dispositivo que é carregado. Ter nomes específicos de fornecedores e produtos possibilita que um fornecedor personalize um dispositivo que poderia ser manipulado (quase) corretamente pelo driver do sistema de estoque.
Outro descritor importante é o número de série do dispositivo. Se um dispositivo tiver um número de série, ele poderá ser reconhecido e tratado da mesma forma quando conectado novamente, mesmo se uma porta USB física diferente for usada. Isso é importante para dispositivos de armazenamento para que eles recebam a mesma letra de unidade atribuída e para dispositivos como adaptadores de porta serial e modems, de forma que recebam a mesma designação de porta COM.
Todo este processo está documentado em MSDN , mas os detalhes estão espalhados em vários lugares.