Aufzählung von USB-Verbundgeräten

Wenn ein neues USB-Gerät an einen Hostcomputer angeschlossen ist, erstellt der USB-Bustreiber ein physisches Geräteobjekt (PDO) für das Gerät und generiert ein PnP-Ereignis, um den neuen PDO zu melden. Das Betriebssystem fragt dann den Bustreiber nach den Hardware-IDs ab, die dem PDO zugeordnet sind.

Für alle USB-Geräte meldet der USB-Bustreiber eine Geräte-ID mit dem folgenden Format:

USB\VID_xxxx&PID_yyyy

Die Werte "xxxx " und "yyyy" werden direkt aus den Feldern "idVendor " bzw . "idProduct " des Gerätedeskriptors entnommen.

Der Bustreiber meldet außerdem einen kompatiblen Bezeichner (ID) von USB\COMPOSITE, wenn das Gerät die folgenden Anforderungen erfüllt:

  • Das Geräteklassenfeld des Gerätedeskriptors (bDeviceClass) muss einen Wert von Null oder die Klasse (bDeviceClass), Unterklassen (bDeviceSubClass) und Protokollfelder (bDeviceProtocol) des Gerätedeskriptors enthalten, die werte 0xEF, 0x02 und 0x01 aufweisen, wie in USB Interface Association Descriptor erläutert.

  • Das Gerät muss über mehrere Schnittstellen verfügen.

  • Das Gerät muss über eine einzige Konfiguration verfügen.

Der Bustreiber überprüft außerdem die Geräteklasse (bDeviceClass), unterklassen (bDeviceSubClass) und die Protokolle (bDeviceProtocol) des Gerätedeskriptors. Wenn diese Felder null sind, handelt es sich bei dem Gerät um ein zusammengesetztes Gerät, und der Bustreiber meldet einen zusätzlichen kompatiblen Bezeichner (ID) von USB\COMPOSITE für die PDO.

Nachdem der Bustreiber die Hardware und kompatibleN IDs für die neue PDO abgerufen hat, durchsucht das Betriebssystem die INF-Dateien. Wenn eine der INF-Dateien eine Übereinstimmung für die Geräte-ID enthält, lädt Windows diesen Treiber, und der generische übergeordnete Treiber wird nicht wiedergegeben. Wenn keine INF-Datei die Geräte-ID enthält und die PDO über eine kompatible ID verfügt, sucht Windows nach der kompatiblen ID. Diese Suche erzeugt eine Übereinstimmung in Usb.inf und bewirkt, dass das Betriebssystem den generischen ÜBERGEORDNETEn USB-Treiber (Usbccgp.sys) lädt.

Wenn Ihr Gerät nicht über die Merkmale verfügt, um eine kompatible ID von USB\COMPOSITE zu generieren, müssen Sie eine INF-Datei bereitstellen, die den generischen übergeordneten Treiber lädt. Die INF-Datei sollte einen Abschnitt enthalten, der auf Usb.inf verweist.

Wenn Ihr zusammengesetztes Gerät über mehrere Konfigurationen verfügt, muss die von Ihnen angegebene INF-Datei angeben, welche Konfiguration das generische übergeordnete Element in der Registrierung verwenden soll. Die erforderlichen Registrierungsschlüssel werden unter Konfigurieren von Usbccgp.sys zum Auswählen einer nicht standardmäßigen USB-Konfiguration beschrieben.