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" acontece, o controlador host informa seu driver de dispositivo que verifica 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 próprio barramento USB efetivamente pergunte a um dispositivo recém-conectado o que é 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 alegam estar na classe HID (Interface Humana), assim como ratos, tablets e controladores de jogo, por exemplo. A classe HID possui várias subclasses (teclados, mouses, etc.), portanto, cada uma é tratada da maneira esperada.
A maioria dos dispositivos do tipo disco diz estar na classe de armazenamento em massa, e o driver do sistema também funciona para eles.
Além da classe e subclasse, os descritores também incluem um ID do fornecedor (VID), um ID do produto (PID) e uma revisão. Os IDs do fornecedor são atribuídos pelo comitê de padrões (principalmente na ordem de emissão, mas algumas empresas recebem solicitações especiais: intel é 0x8086, por exemplo). As IDs do produto são atribuídas por cada fornecedor, e a combinação de VID e PID deve ser exclusiva para cada produto liberado.
Quando um dispositivo é instalado pela primeira vez, o VID, o PID, a revisão, a classe e a subclasse são usados de maneira previsível para escolher o driver de dispositivo carregado. Ter nomes específicos de fornecedor e produto permite que um fornecedor personalize um dispositivo que, de outra forma, poderia ser tratado (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 que uma porta USB física diferente seja usada. Isso é importante para os dispositivos de armazenamento, para que eles recebam a mesma letra de unidade e para dispositivos como adaptadores de porta serial e modems, para que recebam a mesma designação de porta COM.
Todo esse processo está documentado no MSDN , mas os detalhes estão espalhados por vários lugares.