Der USB-Bus ist physisch so ausgelegt, dass das Einstecken (und Entfernen) eines Steckers vom Host-Controller erkannt werden kann. Wenn dieses "Plug" -Ereignis auftritt, informiert der Host-Controller seinen Gerätetreiber, der den Bus durchsucht, und fordert jedes Gerät auf, sich zu identifizieren.
Alle USB-Geräte enthalten eine Sammlung von Informationen über das Gerät, die als Deskriptoren bezeichnet werden. Gerätedeskriptoren werden von allen Geräten mit demselben Befehl abgerufen. Dadurch kann ein Gerätetreiber für den USB-Bus selbst ein neu angeschlossenes Gerät effektiv fragen, was es ist, und eine angemessene Antwort erwarten.
Von allen Deskriptoren werden nur wenige direkt verwendet, um Treiber an die meisten Geräte anzupassen. Dies liegt daran, dass USB Geräteklassen definiert, und in der Regel reicht der Systemtreiber für jede Geräteklasse aus, um alle Geräte zu handhaben, von denen behauptet wird, sie seien in dieser Klasse.
Alle Tastaturen geben an, in der HID-Klasse (Human Interface) zu sein, wie beispielsweise Mäuse, Tablets und Gamecontroller. Die HID-Klasse verfügt über mehrere Unterklassen (Tastaturen, Mäuse usw.), sodass jede wie erwartet behandelt wird.
Die meisten Festplatten-ähnlichen Geräte behaupten, in der Mass Storage-Klasse zu sein, und der Systemtreiber funktioniert auch für diese.
Neben der Klasse und der Unterklasse enthalten die Deskriptoren auch eine Hersteller-ID (VID), eine Produkt-ID (PID) und eine Revision. Die Lieferanten-IDs werden von der Normenkommission vergeben (meistens in der Reihenfolge der Ausgabe, aber einige Unternehmen haben spezielle Anfragen erhalten: Intel ist beispielsweise 0x8086). Produkt-IDs werden von jedem Hersteller zugewiesen, und die Kombination aus VID und PID muss für jedes freigegebene Produkt eindeutig sein.
Wenn ein Gerät zum ersten Mal installiert wird, werden VID, PID, Revision, Klasse und Unterklasse auf vorhersagbare Weise verwendet, um den geladenen Gerätetreiber auszuwählen. Hersteller- und produktspezifische Namen ermöglichen es einem Anbieter, ein Gerät anzupassen, das andernfalls (fast) korrekt vom Lagersystemtreiber gehandhabt wird.
Ein weiterer wichtiger Deskriptor ist die Geräteseriennummer. Wenn ein Gerät eine Seriennummer hat, kann diese auch beim erneuten Anschließen erkannt und behandelt werden, auch wenn ein anderer physischer USB-Anschluss verwendet wird. Dies ist wichtig für Speichergeräte, damit ihnen derselbe Laufwerksbuchstabe zugewiesen wird, und für Geräte wie Adapter für serielle Anschlüsse und Modems, damit sie die gleiche COM-Anschlussbezeichnung erhalten.
Dieser gesamte Prozess ist unter dokumentiert MSDN , aber die Details verteilen sich auf verschiedene Orte.