Bearbeiten

USB in Windows – Häufig gestellte Fragen

Dieses Thema enthält häufig gestellte Fragen für Treiberentwickler, die mit der Entwicklung und Integration von USB-Geräten und -Treibern in Windows-Betriebssysteme noch nicht vertraut sind.

Ich höre zahlreiche USB-Begriffe fast austauschbar herumgeworfen. Was bedeuten sie alle?

Sagen Sie, Sie sehen etwas wie : "Dank USB 3.0 kann ich ein SuperSpeed USB-Usb-Stick an den xHCI-Hostcontroller meines PCs anschließen und Dateien schneller kopieren."

Lassen Sie uns die USB-Begriffe in diesem Satz verstehen. USB 3.0, USB 2.0 und USB 1.0 finden Sie in der Usb-Spezifikationsrevisionsnummer des USB Implementers-Forums. Die USB-Spezifikationen definieren, wie Host-PC und USB-Gerät miteinander kommunizieren.

Die Versionsnummer gibt auch die maximale Übertragungsgeschwindigkeit an. Die neueste Spezifikationsrevision ist USB 3.0, das eine maximale Übertragungsgeschwindigkeit von bis zu 5 GBit/s angibt. USB 1.0 definiert zwei unterschiedliche Datenraten, USB mit niedriger Geschwindigkeit (bis zu 1,5 Mbit/s) und USB mit voller Geschwindigkeit (bis zu 12 Mbit/s). USB 2.0 definiert eine neue Datenrate, Hochgeschwindigkeits-USB (480 MBit/s), während gleichzeitig die Unterstützung für Geräte mit niedriger und voller Geschwindigkeit beibehalten wird. USB 3.0 funktioniert weiterhin mit allen zuvor definierten Datenraten. Wenn Sie sich die Produktverpackung ansehen, verweist SuperSpeed USB auf die neuesten USB 3.0-Geräte. Hi-Speed USB wird verwendet, um Hochgeschwindigkeits-USB 2.0-Geräte zu beschreiben. USB ohne Deskriptor bezieht sich auf Geräte mit niedriger Geschwindigkeit und voller Geschwindigkeit.

Zusätzlich zum USB-Protokoll gibt es eine zweite Spezifikation für den USB-Hostcontroller, das Hardwarestück auf dem PC, mit dem ein Gerät verbunden ist. Die Hostcontrollerschnittstellenspezifikation definiert, wie Hardware und Software des Hostcontrollers interagieren. Die eXtensible Host Controller Interface (xHCI) definiert einen USB 3.0-Hostcontroller. Die Enhanced Host Controller Interface (EHCI) definiert einen USB 2.0-Hostcontroller. Der Universal Host Controller (UHCI) und der Open Host Controller (OHCI) sind zwei alternative Implementierungen eines USB 1.0-Hostcontrollers.

Verfügt mein PC über USB 3.0-Anschlüsse?

USB 3.0-Anschlüsse sind entweder mit dem SuperSpeed USB-Logo gekennzeichnet oder der Anschluss ist in der Regel blau.

Port mit USB-Logo

blauer USB 3.0-Anschluss

Neuere PCs verfügen über USB 3.0- und USB 2.0-Anschlüsse. Wenn Ihr SuperSpeed USB-Gerät mit Höchstgeschwindigkeit arbeiten soll, suchen Sie nach einem USB 3.0-Anschluss, und schließen Sie das Gerät an diesen Anschluss an. Ein SuperSpeed-Gerät, das an einen USB 2.0-Port angeschlossen ist, arbeitet mit hoher Geschwindigkeit.

Sie können auch überprüfen, ob es sich bei einem bestimmten Port um einen USB 3.0-Port in Geräte-Manager handelt. Öffnen Sie in Windows Vista oder neueren Versionen von Windows Geräte-Manager, und wählen Sie den Port aus der Liste aus.

USB-Hostcontroller im Geräte-Manager

Wenn Sie über einen eXtensible Host Controller verfügen, unterstützt er USB 3.0.

Muss ich Treiber für meinen eXtensible-Hostcontroller installieren?

Windows 8 und Windows Server 2012 unterstützen USB 3.0.

Wenn der PC über USB 3.0-Ports verfügt und eine Version von Windows vor Windows 8 ausgeführt wird, werden die Hostcontrollertreiber vom PC-Hersteller bereitgestellt. Wenn Sie diese Treiber erneut installieren müssen, müssen Sie sie vom Hersteller erhalten.

Wenn Sie ihrem PC einen USB 3.0-Controller Karte hinzugefügt haben, auf dem eine Windows-Version vor Windows 8 ausgeführt wird, müssen Sie die vom Controller Karte Hersteller bereitgestellten Treiber installieren.

In Windows 8 funktionieren die von Microsoft bereitgestellten USB 3.0-Treiber (USB-Treiberstapel) mit den meisten Hostcontrollern. Der Microsoft USB 3.0-Treiberstapel funktioniert nicht mit dem Fresco Logic FL1000-Controller. Um zu ermitteln, ob Sie über einen FL1000-Controller verfügen, öffnen Sie Geräte-Manager, und erweitern Sie Universal Serial Bus-Controller. Zeigen Sie die Controllereigenschaften an, indem Sie den Controllerknoten auswählen und halten (oder mit der rechten Maustaste darauf klicken). Wählen Sie auf der Registerkarte Details die Eigenschaft Hardware-IDs in der Liste aus. Wenn die Hardware-ID mit PCI\VEN_1B73&DEV_1000 beginnt, handelt es sich um fl1000. Laden Sie für diesen Controller Treiber von Ihrem PC oder Controller Karte Herstellers herunter, und installieren Sie sie.

Warum werden mehrere Hostcontroller auf meinem System angezeigt?

Zusätzlich zu den USB-Geräten, die Sie mit Ihrem PC verbinden, gibt es eine Reihe von Geräten, die in den PC integriert sind, die möglicherweise über USB verbunden sind, z. B. eine Webcam, ein Fingerabdruckleser, ein SD-Kartenleser. Um alle diese Geräte anzuschließen und weiterhin externe USB-Anschlüsse bereitzustellen, unterstützt der PC mehrere USB-Hostcontroller.

Der USB 3.0 xHCI-Hostcontroller ist vollständig abwärtskompatibel mit allen USB-Gerätegeschwindigkeiten, SuperSpeed, High-Speed, Voller Geschwindigkeit und niedriger Geschwindigkeit. Sie können jedes Gerät direkt mit einem xHCI-Controller verbinden und erwarten, dass dieses Gerät funktioniert. Für EHCI-Controller ist dies nicht der Fall. Während die USB 2.0-Spezifikation alle Geschwindigkeiten von Geräten unterstützt, unterstützt der EHCI-Controller nur Hochgeschwindigkeits-USB-Geräte. Damit USB-Geräte mit voller Geschwindigkeit und niedrigen Geschwindigkeiten funktionieren, müssen sie über einen USB 2.0-Hub mit dem EHCI-Controller verbunden sein, oder sie müssen mit einem UHCI- oder OHCI-Controller verbunden sein.

Bei neueren PCs sind die meisten USB 2.0-Ports, die von PCs verfügbar gemacht werden, einem USB 2.0-Hub nachgeschaltet. Dieser Hub ist mit einem EHCI-Controller verbunden. Dadurch kann der USB 2.0-Anschluss des PCs mit allen Geschwindigkeiten von Geräten arbeiten. SuperSpeed-Geräte verhalten sich wie Hochgeschwindigkeitsgeräte, wenn sie an einen 2.0-Port angeschlossen sind.

Nachdem die USB 2.0-Spezifikation veröffentlicht wurde, verwendeten PCs eine Kombination von Hostcontrollern, um alle Geschwindigkeiten von Geräten zu unterstützen. Ein einzelner USB 2.0-Port wird mit zwei Hostcontrollern, einem EHCI-Hostcontroller und einem UHCI- oder OHCI-Hostcontroller verkabelt. Wenn Sie ein Gerät anfügen, leitet die Hardware die Verbindung dynamisch an einen der beiden Hosts weiter. Die Routine hängt von der Geschwindigkeit des Geräts ab.

Warum werden zwei Hubs in Geräte-Manager angezeigt, wenn ich nur einen USB 3.0-Hub angeschlossen habe?

Während xHCI-Hostcontroller mit jeder Gerätegeschwindigkeit arbeiten, funktioniert ein SuperSpeed-Hub nur mit SuperSpeed-Geräten. Um sicherzustellen, dass USB 3.0-Hubs mit allen Geschwindigkeiten arbeiten können, verfügen sie über zwei Teile: einen SuperSpeed-Hub und einen USB 2.0-Hub. Ein USB 3.0-Hub kann alle Geschwindigkeiten unterstützen, indem geräte basierend auf der Gerätegeschwindigkeit dynamisch an den SuperSpeed-Hub oder den 2.0-Hub weitergeleitet werden.

Öffnen Sie Geräte-Manager, zeigen Sie Geräte nach Verbindung an, und suchen Sie dann Ihren eXtensible Host Controller. Wenn Sie einen einzelnen USB 3.0-Hub an Ihren USB 3.0-Anschluss anschließen, gibt es zwei Hubs nach dem Root Hub der Controller.

USB 3.0 Hub im Geräte-Manager

Im folgenden Beispiel sind ein SuperSpeed-USB-Speichergerät und ein USB-Audiogerät an einen USB 3.0-Hub angeschlossen. Sie können sehen, dass sich das Speichergerät im Downstream des SuperSpeed-Hubs befindet, und das Audiogerät befindet sich nach dem USB 2.0-Hub.

USB 3.0 Hub mit verbundenen Geräten im Geräte-Manager

Welche Gruppe von Treibern wird für die Geräte geladen, die mit 2.0-Ports verbunden sind?

Für jeden Typ von Hostcontrollern wird ein anderer Satz von Binärdateien geladen. Es ist wichtig zu verstehen, dass der USB-Treiberstapel, den Windows lädt, mit dem Typ des Hostcontrollers korreliert, nicht mit der Geschwindigkeit des verbundenen Geräts.

In diesem Image sehen Sie, welche Treiber für die einzelnen Typen von USB-Hostcontrollern geladen werden.

USB-Treiberstapel in Windows 8

Wenn der USB 3.0-Port ordnungsgemäß an einen xHCI-Controller weitergeleitet wird, lädt Windows den xHCI-Treiberstapel (auch als USB 3.0-Treiberstapel bezeichnet).

Wenn der USB 2.0-Anschluss über einen USB 2.0-Hub mit einem EHCI-Controller verbunden ist, wird der Datenverkehr über den EHCI-Controller übertragen, und der USB 2.0-Treiberstapel wird geladen.

Weitere Informationen zu den Treibern im USB-Treiberstapel finden Sie unter USB-hostseitige Treiber in Windows.

Wenn die USB 2.0-Ports des PCs einen Begleitcontroller verwenden, hängt der Hostcontroller, an den der Port weitergeleitet wird, von der Gerätegeschwindigkeit ab. Ein Gerät mit niedriger Geschwindigkeit stellt beispielsweise eine Verbindung über einen UHCI- oder OHCI-Controller her und verwendet den USBUHCI- oder USBOHCI-Treiber. Der PC leitet ein Hochgeschwindigkeitsgerät an einen EHCI-Controller weiter, daher verwendet Windows den USBEHCI-Treiber.

Unterschiedliche Gerätegeschwindigkeiten bestimmen nicht den Treiber, der für den Controller geladen wird. Allerdings können unterschiedliche Gerätegeschwindigkeiten bestimmen, welcher Controller verwendet wird. Der Controller verwendet immer denselben Treiber.

Gewusst wie bestimmen, ob mein USB 3.0-Gerät als SuperSpeed verwendet wird?

Stellen Sie in Windows 8 zunächst sicher, dass Sie über einen USB 3.0-Anschluss und einen xHCI-Hostcontroller verfügen. Wenn Ihr SuperSpeed USB-Gerät mit dem xHCI-Hostcontroller verbunden ist, zeigt Windows 8 in bestimmten Teilen der Windows 8-Benutzeroberfläche die Meldung "Mit USB 3.0 verbunden" an. Wenn das Gerät mit einem EHCI-Controller anstelle ihres XHCI-Controllers verbunden ist, wird in den Meldungen stattdessen folgendes angezeigt: "Das Gerät kann schneller funktionieren, wenn es mit USB 3.0 verbunden ist".

Sie können diese UI-Meldungen in den PC-Einstellungen anzeigen.

  1. Öffnen Sie die Charms-Leiste (Ziehen Sie den Cursor in die obere oder untere rechte Ecke des Bildschirms, geben Sie Windows-Taste + C ein, oder wischen Sie mit dem Finger von rechts nach rechts).
  2. Wählen Sie Einstellungen und dann PC-Einstellungen ändern aus.
  3. Wählen Sie unter PC-Einstellungendie Option Geräte aus.

Diese Abbildung zeigt die UI-Meldung, wenn das USB 3.0-Gerät mit SuperSpeed arbeitet.

Screenshot:

Diese Abbildung zeigt die Ui-Meldung, wenn das USB-Gerät mit einer Busgeschwindigkeit arbeitet, die niedriger als SuperSpeed ist.

Screenshot: Ausgewählte

Sie können ähnliche Meldungen in Geräten und Druckern anzeigen, wie in diesen Bildern gezeigt.

Screenshot:

Superspeed-Gerät mit Hoher Geschwindigkeit

Wenn das USB 3.0-Gerät ein Speichergerät ist, zeigt Windows Explorer ähnliche Meldungen an, wenn die Volumebezeichnung ausgewählt ist, wie unten gezeigt. Beachten Sie, dass der Bereich Ansicht –> Details ausgewählt sein muss, damit die Nachricht sichtbar ist.

Screenshot, der ein in

Superspeed-USB-Gerät mit Hoher Geschwindigkeit

Wenn Sie einen Gerätetreiber schreiben, ist das usbView-Tool , das im Windows Driver Kit (WDK) enthalten ist, sehr nützlich. Für die Windows 8 WDK hat Microsoft USBView aktualisiert, um SuperSpeed-USB-Informationen anzuzeigen. Sie können dieses Tool verwenden, um zu bestimmen, ob Ihr Gerät mit SuperSpeed betrieben wird. Diese Abbildung zeigt ein USB 3.0-Gerät, das bei SuperSpeed in USBView betrieben wird.

Superspeed-USB-Gerät mit Supergeschwindigkeit

Wenn Sie Gerätetreiberentwickler sind, macht der USB-Treiberstapel eine neue IOCTL verfügbar, die als IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 bezeichnet wird, mit der Sie Geschwindigkeitsinformationen für USB 3.0-Geräte abfragen können.

Warum ist mein SuperSpeed-USB-Gerät nicht schneller als ein entsprechendes High-Speed-USB-Gerät?

Wenn ein USB 3.0-USB-Gerät nicht schneller als ein Hochgeschwindigkeits-USB-Gerät ist, funktioniert es im Allgemeinen nicht bei SuperSpeed. Wenn das SuperSpeed-USB-Gerät an einen USB 3.0-Anschluss angeschlossen ist, kann es aus folgenden Gründen nicht bei SuperSpeed betrieben werden:

  • Sie verwenden einen USB 2.0-Hub.

    Wenn Sie einen Hub verwenden, überprüfen Sie, ob es sich um einen USB 3.0-Hub handelt. Wenn Sie einen USB 2.0-Hub verwenden, arbeiten alle angeschlossenen SuperSpeed-USB-Geräte mit Hoher Geschwindigkeit. Ersetzen Sie entweder den Hub durch einen USB 3.0-Hub, oder schließen Sie das Gerät direkt an den USB 3.0-Anschluss an.

  • Die Firmware auf dem USB 3.0-Hub ist veraltet.

    Bestimmte frühere USB 3.0-Hubs funktionierten nicht gut. Daher verwendet Windows nur den 2.0-Teil dieser Hubs. Wenn Geräte-Manager einen "nicht funktionsfähigen" Hub angibt, wie in dieser Abbildung gezeigt, verwendet Windows 8 nicht den 3.0-Teil Ihres Hubs.

    nicht funktionsfähiger Superspeed-USB-Hub

    Sie können Ihr SuperSpeed-Gerät entweder direkt an den USB 3.0-Anschluss anschließen oder die Firmware auf Ihrem Hub aktualisieren. Windows 8 erkennt Hubs mit neuerer Firmware.

  • Das Gerät ist mit einem USB 2.0-Kabel verbunden.

    Stellen Sie sicher, dass das Kabel, das zum Anschließen des Geräts verwendet wird, ein USB 3.0-Kabel ist. Es ist auch möglich, dass das USB 3.0-Kabel Signalintegritätsprobleme aufweist. In diesem Fall kann das Gerät zu hoher Geschwindigkeit wechseln. In diesem Fall müssen Sie ein anderes USB 3.0-Kabel verwenden.

  • Die Firmware auf dem Gerät ist veraltet.

    Aktualisieren Sie die Firmware für das SuperSpeed USB-Gerät, indem Sie die neueste Version auf der Website des Herstellers abrufen. Einige SuperSpeed-USB-Gerätehersteller veröffentlichen Fehlerbehebungen für Fehler, die auf dem Gerät gefunden wurden, als Firmwareupdates.

  • Die Firmware auf dem Hostcontroller ist veraltet.

    Aktualisieren Sie die Firmware für den USB 3.0-Controller, indem Sie die neueste Version vom Standort Ihres PC-Herstellers oder von Ihrem Add-In Karte Website des Herstellers abrufen. Einige USB 3.0-Controllerhersteller veröffentlichen Fehlerbehebungen für Fehler, die im Controller gefunden wurden, als Firmwareupdates.

  • Das BIOS für Ihr System ist veraltet.

    Aktualisieren Sie das BIOS für Ihr System, indem Sie die neueste Version von Ihrem PC-Hersteller abrufen. Auf einigen Hauptplatinen kann das BIOS ein Gerät, das mit einem xHCI-Hostcontroller verbunden ist, fälschlicherweise an einen EHCI-Controller weiterleiten. Dieses falsche Routing zwingt ein SuperSpeed-USB-Gerät, mit Hoher Geschwindigkeit zu arbeiten. Ein BIOS-Update kann dieses Problem beheben.

Ist es möglich, ein zusammengesetztes und ein zusammengesetztes Gerät in einem Stück Hardware zu verwenden?

Ja. Die Microsoft Natural Keyboard Pro, die über einen busbetriebenen Hub mit drei Anschlüssen verfügt, ist ein Beispiel für ein zusammengesetztes USB-Gerät. Das Gerät verfügt über ein zusammengesetztes Gerät, das an Port 1 angefügt ist. Dem Endbenutzer werden zwei zusätzliche Ports verfügbar gemacht.

Das Gerät, das an Port 1 angeschlossen ist, ist ein zusammengesetztes Gerät mit niedriger Geschwindigkeit. Das Gerät verfügt über zwei Schnittstellen, die beide der USB-Standardgeräteklassendefinition für Human Interface Devices (HID) entsprechen. Das zusammengesetzte Gerät stellt zwei HID-Schnittstellen bereit, anstatt alle Sammlungen über eine einzelne HID-Schnittstelle mithilfe von Sammlungen der obersten Ebene zu multiplexen. Dieses Design wurde aus Kompatibilität mit älteren BIOS ausgewählt.

Warum werden einige meiner USB-Geräte neu installiert, wenn sie an einen neuen Port verschoben werden?

In Betriebssystemen von Windows 2000 und höher wird ein neues objekt physisches Gerät (PDO) erstellt, wenn ein USB-Gerät von einem Port auf einen anderen verschoben wird. Wenn die Hardware eine eindeutige USB-Seriennummer meldet, wird keine neue PDO erstellt.

Um dasselbe PDO wiederzuverwenden und sicherzustellen, dass die Geräteoberfläche unverändert bleibt, unabhängig davon, ob das Gerät wieder in denselben Port oder einen neuen Port eingefügt wird, müssen Hardwarehersteller eine Seriennummer auf ihrem Gerät speichern. Gemäß den Anforderungen des Windows-Hardwarezertifizierungsprogramms muss die Seriennummer für alle Geräte, die die Geräteinstallations-ID gemeinsam nutzen, eindeutig sein.

Gibt es eine Liste von Designempfehlungen für USB-Produktverpackungen?

Usb-IF hat mit Microsoft und anderen USB-IF-Mitgliedsunternehmen zusammengearbeitet, um eine Liste von Empfehlungen für unabhängige Hardwareanbieter zu entwickeln, die in ihre Verpackung aufgenommen werden sollen.

Weitere Informationen finden Sie auf der USB-Website.

Informationen zu USB Hi-Speed und SuperSpeed finden Sie unter: https://www.usb.org/.

Muss ich meinen Clienttreiber umschreiben, um USB 3.0-Geräte zu unterstützen?

Alle vorhandenen Clienttreiber sollten weiterhin funktionieren, wie es ist, wenn ein Low-, Full- oder High-Speed-Gerät an einen USB 3.0-Port angeschlossen ist. In Windows 8 haben wir die Kompatibilität mit vorhandenen Clienttreibern sichergestellt.

Der USB 3.0-Treiberstapel verwaltet IRQL-Ebenen, Aufruferkontext und Fehler status, Wiederholungshäufigkeit und Zeitsteuerung bei der Interaktion mit Geräten und vieles mehr, um sicherzustellen, dass vorhandene Treiber weiterhin funktionieren. Es ist immer noch sehr wichtig zu testen.

Häufige Fehler treten auf:

  • Die Endpunktdeskriptoranalyse des Treibers bricht aufgrund des Vorhandenseins von SuperSpeed-Endpunkt-Begleitdeskriptoren ab.
  • Aufgrund der erhöhten Geschwindigkeit können Zeitsteuerungsprobleme auf Der Ebene des Anwendungsprotokolls auftreten.
  • Die vom Endpunkt unterstützte maximale Paketgröße kann unterschiedlich sein.
  • Aufgrund der Funktionsenergieverwaltung kann das Timing für den selektiven Angehalten-Vorgang unterschiedlich sein.

In Windows 7 und früheren Versionen der Betriebssysteme wird der USB 3.0-Treiberstapel von Drittanbietern bereitgestellt. Daher wird dringend empfohlen, dass Sie Ihren Treiber testen, um mit USB-Treiberstapeln von Drittanbietern zu arbeiten.

Neue Clienttreiber in Windows 8 für High Speed- und SuperSpeed-USB-Geräte sollten sich für neue Funktionen entscheiden.

Welcher Treiber wird für die Verwendung meines SuperSpeed-Speichergeräts geladen, Uaspstor.sys oder Usbstor.sys?

Das USB Attached SCSI(UAS)-Protokoll ist ein neues Massenspeicherprotokoll, das entwickelt wurde, um die Leistung gegenüber dem etablierten USB-Massenspeicherprotokoll Bulk-Only-Transport (BOT) zu verbessern. Dazu reduziert er den Protokollmehraufwand, unterstützt natives SATA Command Queuing (NCQ) und verarbeitet mehrere Befehle parallel. Dazu nutzt UAS ein neues USB 3.0-Feature für Massenübertragungen, die als Streams bezeichnet werden.

Der vorhandene Massenspeichertreiber Usbstor.sys verwendet das BOT-Protokoll. Es funktioniert mit allen Geschwindigkeiten von Geräten, einschließlich SuperSpeed-USB-Geräten.

Für Windows 8 enthält Microsoft einen neuen Massenspeicherklassentreiber, Uaspstor.sys der das UAS-Protokoll verwendet. Da Streams neu in USB 3.0 sind, können Uaspstor.sys Streams nur verwenden, wenn die Hardware Streams unterstützt (ein SuperSpeed-USB-Gerät ist an einen xHCI-Hostcontroller angeschlossen). Der Treiber bietet auch Unterstützung für Softwarestreams, sodass er auch für Geräte mit hoher Geschwindigkeit geladen werden kann, unabhängig vom Hosttyp.

Wenn Sie ein Massenspeichergerät mit Windows 8 verbinden und dieses Gerät UAS unterstützt, lädt Windows Uaspstor.sys. In einigen Fällen kann es bekannte Probleme mit Hardwarestreams auf einem bestimmten xHCI-Hostcontroller oder bekannte Probleme mit der UAS-Protokollimplementierung eines Geräts geben. In diesen Fällen greift Windows auf das BOT-Protokoll zurück und lädt stattdessen den Usbstor.sys Treiber.

Uaspstor.sys ist neu in Windows 8. Es ist in früheren Versionen von Windows nicht vorhanden.

Welche USB DWG-Klassen werden von Microsoft unterstützt?

Windows unterstützt mehrere USB-Klassen, die von der USB Device Working Group (DWG) definiert wurden. Die aktuelle Liste der USB-Klassenspezifikationen und -Klassencodes finden Sie auf der USB DWG-Website unter https://www.usb.org/documents.

In dieser Tabelle werden die USB DWG-Klassen hervorgehoben, die in Windows unterstützt werden, und außerdem werden die Versionen von Windows identifiziert, die die einzelnen Klassen unterstützen.

Klassenspezifikation bDeviceClass-Code Treibername Windows-Unterstützung
Bluetooth-Klasse 0xE0 Bthusb.sys Windows XP und höher
Chip/Smart Karte Interface Devices (CCID) 0x0B Usbccid.sys

Windows Server 2008 und höher

Windows Vista und höher

Windows Server 2003

Windows XP

Windows 2000

Hub-Klasse 0x09 Usbhub.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Eingabegerät (Human Interface Device, HID) 0x03 Hidusb.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Massenspeicherklasse (MSC) 0x08 Usbstor.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

USB Attached SCSI (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

Druckklasse 0x07 Usbprint.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Scannen/Bildverarbeitung (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Medienübertragung (MTP) 0x06 WpdUsb.sys

Windows Server 2003 und höher

Windows XP und höher

USB-Audioklasse 0x01 Usbaudio.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Modemklasse (CDC) 0x02 Usbser.sys

Windows Server 2003 und höher

Windows XP und höher

Windows 2000 und höher

Videoklasse (UVC) 0x0E Usbvideo.sys

Windows Vista und höher

Windows XP

*Spezielle Anweisungen sind erforderlich, um diesen Treiber zu laden, da dieser Treiber möglicherweise später als das Betriebssystem veröffentlicht wurde. Windows-Klassentreiber unterstützen möglicherweise nicht alle Features, die in einer DWG-Klassenspezifikation beschrieben sind. In diesem Fall wird der Treiber nicht basierend auf der Klassenbesprechung geladen. Weitere Informationen zu implementierten Features in einer Klassenspezifikation finden Sie in der WDK-Dokumentation.

Welche Geräteeinrichtungsklasse sollte ich für ein benutzerdefiniertes USB-Gerät verwenden?

Microsoft stellt systemdefinierte Setupklassen für die meisten Gerätetypen bereit. Systemdefinierte Setupklassen-GUIDs werden in Devguid.h definiert. Weitere Informationen finden Sie im WDK. Eine Liste der Windows-Klassen-GUIDs finden Sie in den folgenden Themen:

Unabhängige Hardwareanbieter müssen die Setupklasse verwenden, die dem Typ des USB-Geräts zugeordnet ist, nicht dem Bustyp. Wenn Sie einen Gerätetyp entwickeln, für den Microsoft keine vorhandene Klassen-GUID bereitgestellt hat, können Sie eine neue Geräteeinrichtungsklasse definieren.

In Windows 8 wurde eine neue Setupklasse mit dem Namen USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}) definiert. Wenn Sie einen Gerätetyp entwickeln, ordnen Sie Ihr Gerät USBDevice anstelle der Setupklasse USB zu. Die USBDevice-Klasse funktioniert unter Windows Vista und höheren Versionen des Betriebssystems.

Die Setupklasse USB (ClassGuid = {36fc9e60-c465-11cf-8056-44455354000}) ist nur für USB-Hostcontroller und USB-Hubs reserviert und darf nicht für andere Gerätekategorien verwendet werden. Die fehlerhafte Verwendung dieser Setupklasse kann dazu führen, dass der Gerätetreiber bei den Windows-Logotests fehlschlägt.

Warum wird meine CPU nicht in C3 eingegeben, wenn ich einige USB-Geräte anstecke?

Wenn ein USB-Gerät angeschlossen ist, ruft der USB-Hostcontroller den Frameplaner ab, bei dem es sich um einen DMA-Bus (Direct Memory Access) master Vorgangs handelt. "Unterbrechungsereignisse" wie Bus-master Datenverkehr, Interrupts oder mehrere andere Systemaktivitäten verschieben eine CPU aus C3, da der Cache der CPU per Definition nicht abgesunken werden kann, während er sich in C3 befindet.

Es gibt zwei Wege, dieses Problem zu umgehen:

  • Hardwareentfernung.

    Manchmal kann die Hardware vom Universal Serial Bus elektronisch getrennt werden. Wenn beispielsweise Speichermedien aus dem USB-Reader entfernt werden, kann der USB-Reader eine elektronische Verbindung emulieren und wieder verbinden, wenn das Medium wieder eingelagert wird. In diesem Fall können die C3-Übergänge auftreten, da sich keine USB-Geräte auf dem Hostcontroller befinden.

  • Selektives Anhalten.

    Die einzige Alternative, die in Windows XP und höheren Betriebssystemen verfügbar ist, ist die Unterstützung des selektiven Anhaltens von USB. Mit dieser Funktion kann ein Treiber ein USB-Gerät anhalten, das er steuert, wenn sich das Gerät im Leerlauf befindet, obwohl das System selbst in einem vollständig betriebsfähigen Energiezustand (S0) verbleibt. Selektives Anhalten ist besonders leistungsfähig, wenn es von allen USB-Funktionstreibern unterstützt wird. Wenn es auch nur ein Treiber nicht unterstützt, kann die CPU nicht in C3 eingeben. Weitere Informationen zum selektiven Anhalten finden Sie im WDK.

Welche USB-Klassentreiber unterstützen selektives Anhalten?

Im Folgenden ist eine Liste der USB-Klassentreiber in Windows 8 aufgeführt, die selektives Anhalten unterstützen:

  • Bluetooth

    Dieser Treiber kann Geräte auf Computern mit Windows XP Service Pack 2 und höheren Versionen von Windows selektiv anhalten. Der Treiber erfordert das Bluetooth-Funkgerät, um die selbstgesteuerten und Remote-Aktivierungsbits im Konfigurationsdeskriptor festzulegen. Der Treiber hält das Bluetooth-Funkgerät selektiv an (D2), wenn keine aktiven Bluetooth-Verbindungen vorhanden sind.

  • USB HID

    Dieser Treiber kann ein HID-Gerät selektiv anhalten. Es liegt in Ihrer Verantwortung, das Remoteaktivierungssignal bei allen Gerätezustandsänderungen auszulösen. Um selektives Anhalten im HID-Stapel zu aktivieren, muss der Registrierungswert SelectiveSuspendEnabled für die spezifische VID+PID des Geräts aktiviert sein. Beispiele finden Sie unter Input.inf.

    Auf Systemen, die den verbundenen Standbymodus von Windows 8 unterstützen, wechselt dieser Treiber in die selektive Aussetzung (D2), wenn sich das System im verbundenen Standbymodus befindet. Dieser Treiber kann das System reaktivieren und den Bildschirm einschalten.

  • USB-Hub

    Dieser Treiber kann einen Stamm- oder externen Hub selektiv anhalten, wenn keine Geräte an ihn angefügt sind oder wenn alle Geräte, die an diesen Hub angefügt sind, selektiv angehalten werden können.

  • USB-Modem

    Dieser Treiber kann das Gerät selektiv anhalten, wenn keine aktiven Modemverbindungen vorhanden sind.

  • USB-Speicher (BOT)

    Dieser Treiber kann Speichergeräte (D3) auf Systemen, die Windows 8 Connected Standby unterstützen, selektiv anhalten, wenn diese Systeme in den verbundenen Standbymodus wechseln. Wie HID gibt es eine Registrierungsüberschreibung, um das selektive Anhalten auf allen Windows 8 Systemen zu ermöglichen.

  • USB-Speicher (UAS)

    Dieser Treiber kann ein Speichergerät selektiv anhalten (D3), wenn es sich für einen Timeoutzeitraum im Leerlauf befindet.

  • USB-Video

    Dieser Treiber kann eine Webcam unter Windows Vista und höher selektiv anhalten (D3).

  • USB-Audio

    Dieser Treiber kann ein USB-Audiogerät unter Windows 7 und höher selektiv anhalten (D3), wenn sich der Computer im Akkubetrieb befindet.

  • Zusammengesetztes USB

    Dieser Treiber kann zusammengesetzte Geräte (D3) selektiv anhalten, wenn alle untergeordneten Elemente angehalten sind. Auf Systemen, die D3-Cold unterstützen, müssen sich alle Kinder für D3-Cold entscheiden.

  • USB-Smartcard

    Dieser Treiber kann Smartcard-Schnittstellengeräte (D2) standardmäßig unter Windows 7 und höher selektiv anhalten.

  • Generische USB-Peripheriegeräte (WinUSB)

    Dieser Treiber kann Geräte (D3) unter Windows Vista und höheren Betriebssystemen standardmäßig selektiv anhalten.

  • WWAN: 3G- oder WiMax-Dongles

    Dieser Treiber kann Geräte selektiv anhalten. Wenn ein aktives Abonnement vorhanden ist, wechselt das Gerät in D2. Ohne aktives Abonnement wechselt das Gerät in D3.

Warum kann ein USB-Gerät Windows nicht von S3 wecken?

Ein USB-Gerät kann Windows aus verschiedenen Gründen nicht aus S3 wiedererwecken, z. B. aus folgenden Gründen:

  1. Falsches BIOS.

    Stellen Sie sicher, dass das neueste BIOS auf dem Computer installiert ist. Um die neueste BIOS-Revision für den Computer zu erhalten, besuchen Sie die Website des OEM oder ODM.

  2. BIOS, das nicht aktiviert ist, um zu reaktivieren.

    Einige BIOS ermöglichen es, die Aktivierung von S3 und S4 zu deaktivieren. Vergewissern Sie sich, dass das BIOS für die Aktivierung von S3 aktiviert ist.

  3. DER USBBIOSx-Registrierungsschlüssel wird nicht festgelegt.

    Eine sauber Installation von Windows XP verfügt nicht über den Registrierungsschlüssel USBBIOSx. Wenn der OEM oder ODM überprüft, ob das BIOS von S3 reaktiviert werden kann, legen Sie diesen Registrierungsschlüssel auf 0x00 fest, und starten Sie den Computer neu.

  4. Der Hostcontroller verfügt in S3 oder S4 nicht über Strom.

    Häufig schneidet der PC die Stromversorgung eines Add-Ins Karte, wenn sich der PC in einem niedrigeren Leistungszustand befindet. Wenn das Add-In Karte über keine Stromversorgung verfügt, kann es kein Aktivierungsereignis erkennen und kann den PC nicht reaktivieren.

Weitere Informationen finden Sie in der USB-Problembehandlung im Hilfe- und Supportcenter unter Windows XP und höheren Versionen von Windows.

Muss ich Treiber für meinen erweiterten Hostcontroller (USB 2.0) installieren?

Die folgenden Versionen von Windows unterstützen den erweiterten USB 2.0-Hostcontroller:

  • Windows Vista und höher
  • Windows Server 2003 und höher
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

Hinweis Da Windows 2000 und Windows XP veröffentlicht wurden, bevor USB 2.0-Hardware verfügbar war, wurden die Treiber für diese Betriebssysteme in den Service Packs veröffentlicht. So installieren Sie Treiber:

  1. Führen Sie das in der Antwort auf die erste Frage beschriebene Verfahren aus, um zu überprüfen, ob Ihr Computer über USB 2.0-Anschlüsse verfügt und dass Sie einen Treiber für den erweiterten Hostcontroller installieren müssen.

  2. Erweitern Sie im Fenster Geräte-Manager den Abschnitt Andere Geräte, wie in der ersten Frage erläutert, und doppelklicken Sie dann auf USB-Controller (Universal Serial Bus).

  3. Wählen Sie im Dialogfeld Eigenschaften auf der Registerkarte Allgemein die Option Treiber neu installieren aus.

    Treiber neu installieren

  4. Wählen Sie im Assistenten zum Hinzufügen neuer Hardware die Option Software automatisch installieren (empfohlen) und dann Weiter aus. Fahren Sie mit dem Assistenten fort, übernehmen Sie alle Standardoptionen, bis Sie die letzte Seite des Assistenten erreicht haben, und wählen Sie dann Fertig stellen aus. Möglicherweise müssen Sie den Computer neu starten, um die Installation abzuschließen.

Hinweis Um sicherzustellen, dass die neuesten Updates auf Ihrem Computer installiert sind, besuchen Sie Windows Update regelmäßig.

Kann ich den Hinweis "HI-SPEED USB-Gerät an nicht HI-SPEED-USB-Anschluss angeschlossen" deaktivieren?

Windows XP und höhere Versionen von Windows erstellen einen Popuphinweis, wenn ein Hi-Speed-USB-Gerät an einen USB-Anschluss angeschlossen ist, der keine Hohe Geschwindigkeit unterstützt. Um die schnellste Leistung des Geräts zu erzielen, müssen Benutzer den Hinweis auswählen und den Anweisungen auf dem Bildschirm folgen.

Führen Sie die folgenden Schritte aus, um den Hinweis zu deaktivieren:

  1. Beginnen Sie Geräte-Manager, wie in der ersten Frage in dieser FAQ beschrieben.
  2. Erweitern Sie im Fenster Geräte-Manager den Knoten Universelle serielle Bus-Controller. Suchen Sie nach einem Hostcontroller mit dem Wort "Universal" oder "Open" im Titel. Wenn Sie eine finden, doppelklicken Sie darauf.
  3. Wählen Sie auf der Registerkarte Erweitert des Dialogfelds Eigenschaften die Option Nicht über USB-Fehler informieren aus.

Hinweis Das vorherige Verfahren deaktiviert alle USB-Benachrichtigungen, nicht nur "HI-SPEED USB-Gerät an nicht-HI-SPEED-Anschluss angeschlossen".

Ist mein USB 2.0 Hub Single-TT oder Multi-TT?

Ein USB 2.0-Hub kann über einen Transaktionsübersetzer (TT) für alle nachgeschalteten Ports am Hub (einzelne TT) oder über einen TT für jeden nachgeschalteten Port des Hubs (mehrere TT) verfügen.

Der Wert des Felds bDeviceProtocol des USB-Gerätedeskriptors und das Feld bInterfaceProtocol des USB-Schnittstellendeskriptors geben an, ob ein Hub single-TT oder multi-TT ist:

  • Einzel-TT. bDeviceProtocol == 0x01
  • Multi-TT. bDeviceProtocol == 0x02

Usbhub.sys verwendet diese Einstellung, um den Multi-TT-Modus oder den Einzel-TT-Modus zu aktivieren. Unter Windows XP und höher aktiviert Usbhub.sys immer den Multi-TT-Modus auf einem Multi-TT-Hub. Weitere Informationen zum TT-Layout finden Sie in den Abschnitten 11.14.1.3 und 11.23.1 der USB 2.0-Spezifikation.

Welche Zeichen oder Bytes sind in einer USB-Seriennummer gültig?

Das Feld iSerialNumber des USB-Gerätedeskriptors gibt an, ob das Gerät über eine Seriennummer verfügt und wo die Nummer wie folgt gespeichert wird:

  • iSerialNumber == 0x00: Das USB-Gerät hat keine Seriennummer.
  • iSerialNumber != 0x00 : Das USB-Gerät verfügt über eine Seriennummer. Der iSerialNumber zugewiesene Wert ist der Zeichenfolgenindex der Seriennummer.

Wenn das Gerät über eine Seriennummer verfügt, muss die Seriennummer jeden instance desselben Geräts eindeutig identifizieren.

Wenn z. B. zwei Gerätedeskriptoren identische Werte für die Felder idVendor, idProduct und bcdDevice aufweisen, muss das Feld iSerialNumber unterschiedlich sein, um ein Gerät vom anderen zu unterscheiden.

Plug & Play erfordert, dass jedes Byte in einer USB-Seriennummer gültig ist. Wenn ein einzelnes Byte ungültig ist, verwirft Windows die Seriennummer und behandelt das Gerät so, als hätte es keine Seriennummer. Die folgenden Bytewerte sind für USB-Seriennummern ungültig:

  • 0x2C.
  • Werte kleiner als 0x20.
  • Werte größer als 0x7F.

Weitere Informationen zum iSerialNumber-Wert finden Sie im Abschnitt 9.6.1 der USB 2.0-Spezifikation.

Welche LANGID wird in einer Zeichenfolgenanforderung in lokalisierten Builds von Windows verwendet?

Ein USB-Gerät gibt das Vorhandensein einer Seriennummer an, indem das Feld iSerialNumber des USB-Gerätedeskriptors auf den Zeichenfolgenindex der Seriennummer festgelegt wird. Um die Seriennummer abzurufen, stellt Windows eine Zeichenfolgenanforderung aus, wobei der Sprachbezeichner (LANGID) auf 0x0409 (US-Englisch) festgelegt ist. Windows verwendet diese LANGID immer zum Abrufen von USB-Seriennummern, auch für Versionen von Windows, die für andere Sprachen lokalisiert sind.

Welche LANGID wird verwendet, um die Seriennummer eines Geräts zu extrahieren?

Ein USB-Gerät gibt das Vorhandensein einer Seriennummer an, indem das Feld iSerialNumber des USB-Gerätedeskriptors auf den Zeichenfolgenindex der Seriennummer festgelegt wird. Um die Seriennummer abzurufen, stellt Windows eine Zeichenfolgenanforderung aus, wobei der Sprachbezeichner (LANGID) auf 0x0409 (US-Englisch) festgelegt ist. Windows verwendet diese LANGID immer zum Abrufen von USB-Seriennummern, auch für Versionen von Windows, die für andere Sprachen lokalisiert sind.

Wie sollten Nummern mehreren Schnittstellen auf einem zusammengesetzten Gerät zugewiesen werden?

Windows behandelt USB-Geräte mit mehr als einer Schnittstelle in der ersten Konfiguration als zusammengesetzte Geräte.

Für Windows XP Service Pack 1 und frühere Versionen von Windows:

  • Schnittstellennummern müssen nullbasiert sein.
  • Schnittstellennummern müssen aufeinanderfolgende und erhöhend sein.

Für Windows XP Service Pack 2 und höhere Versionen von Windows müssen die Schnittstellennummern nur steigen, nicht aufeinanderfolgende.

Alternative Einstellungen für eine Schnittstelle sollten wie folgt für alle Versionen von Windows zugewiesen werden:

  • Der Standardwert für eine Schnittstelle ist immer die alternative Einstellung Null.
  • Zusätzliche Alternativeinstellungsnummern müssen aufeinanderfolgende und erhöhend sein.

Weitere Informationen zu alternativen Einstellungen finden Sie in Abschnitt 9.6.5 der USB 2.0-Spezifikation.

Was sind die wichtigsten Einschränkungen, die von Usbccgp.sys auferlegt werden?

Usbccgp.sys unterstützt zusammengesetzte Geräte für:

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Obwohl es möglicherweise immer noch möglich ist ,Usbhub.sys als übergeordneter Treiber für das zusammengesetzte Gerät unter diesen und höheren Versionen von Windows zu laden, empfiehlt Microsoft dies nicht, da dies zu Hardwarekompatibilitätsfehlern führen kann. Sie sollten stattdessen Usbccgp.sys verwenden.

Um sicherzustellen, dass Sie den richtigen Treiber für Ihr zusammengesetztes Gerät laden, verwenden Sie die Anweisungen Include und Needs in Ihren INF-Dateien wie folgt:

Include = USB.INF
Needs = Composite.Dev

Die wichtigsten Einschränkungen, die von Usbccgp.sys für Hardwaregeräte und Treiber auferlegt werden, sind wie folgt:

  • Usbccgp unterstützt nur die Standardkonfiguration Konfiguration 0.

  • Usbccgp unterstützt selektives Anhalten in Windows XP und Windows Server 2003 nicht. Dieses Feature wird nur in Windows Vista und höheren Versionen von Windows unterstützt. Hinweis Usbccgp unterstützt selektives Anhalten in Windows XP SP1 und höheren Versionen von Windows XP, jedoch mit eingeschränkten Funktionen. Für diese Versionen von Windows wird das zusammengesetzte Gerät nur dann in selektives Anhalten versetzt, wenn jede untergeordnete Funktion des Geräts über eine ausstehende Idle-IRP verfügt. Usbccgp unterstützt selektives Anhalten in Windows XP RTM nicht.

  • Usbccgp unterstützt den Schnittstellenzuordnungsdeskriptor (Interface Association Descriptor, IAD) nur in Windows XP SP2, Windows Server 2003 SP1 und höheren Versionen von Windows.

  • Usbccgp unterstützt nicht secutive Schnittstellennummern nur in Windows XP SP2, Windows Server 2003 SP1 und höheren Versionen von Windows.

Gewusst wie die Debugablaufverfolgung für USB-Kernbinärdateien aktivieren?

Unterstützt Windows Schnittstellenzuordnungsdeskriptoren?

Ja. Der USB 2.0 Interface Association Descriptor (IAD) Engineering Change Notification (ECN) hat eine neue Standardmethode zum Beschreiben einer Gruppierung von Schnittstellen und deren alternativen Einstellungen innerhalb einer Funktion eingeführt. IAD kann verwendet werden, um zwei oder mehr aufeinanderfolgende Schnittstellen und alternative Einstellungen innerhalb einer Funktion zu identifizieren.

Microsoft arbeitet derzeit mit IHVs zusammen, um Geräte zu entwickeln, die IAD unterstützen. Die folgenden Betriebssysteme unterstützen IAD:

  • Windows XP Service Pack 2 und höher
  • Windows Server 2003 Service Pack 1 und höher
  • Windows Vista

Verarbeitet der USB-Stapel verkettete MDLs in einer URB?

Diese Funktionalität wird vom USB 3.0-Treiberstapel unterstützt, der in Windows enthalten ist.

Kann ein Treiber mehr als eine URB in einem IRP haben?

Nein. Diese Funktionalität wird vom USB-Stapel, der in Windows enthalten ist, nicht unterstützt.

Unterstützt Windows zusammengesetzte USB-Hubs?

Ein zusammengesetztes USB-Gerät - auch als Multifunktions-USB-Gerät bezeichnet - macht mehrere Funktionen verfügbar, von denen jede als unabhängiges Gerät behandelt werden kann. Das System lädt den generischen übergeordneten USB-Treiber Usbccgp.sys, um als übergeordneter Treiber für die Funktionen des Geräts zu dienen. Der generische übergeordnete USB-Treiber listet die Funktionen des zusammengesetzten Geräts auf, als ob es sich um separate USB-Geräte handelte, und erstellt dann ein PDO und erstellt einen Gerätestapel für jede Funktion.

Ein zusammengesetztes USB-Gerät kann keine Funktion verfügbar machen, die als Hub dient. Windows listet solche Hubs nicht ordnungsgemäß auf, und der Versuch, das Gerät zu installieren, kann zu einem Systemabsturz führen.