Share via


Serieller USB-Treiber (Usbser.sys)

Wichtig

Dieses Thema richtet sich an Programmierer. Wenn Sie ein Kunde sind, bei dem USB-Probleme auftreten, finden Sie weitere Informationen unter Problembehandlung bei häufigen USB-Problemen.

Verwenden Sie den von Microsoft bereitgestellten USB-Treiber (Usbser.sys) für Ihr Kommunikations- und CDC-Steuerungsgerät. Microsoft empfiehlt Ihnen, die in Windows enthaltenen Treiber nach Möglichkeit zu verwenden.

Unterstützte Versionen

  • Windows 11
  • Windows 10

Gilt für:

  • Gerätehersteller von CDC-Steuerungsgeräten

In Windows 10 wurde der Treiber mithilfe des Kernelmodus-Treiberframeworks neu geschrieben, um die Gesamtstabilität des Treibers zu verbessern.

  • Verbesserte Plug & Play und Energieverwaltung durch den Treiber.
  • Energieverwaltungsfeatures wie selektives Anhalten von USB hinzugefügt.

Darüber hinaus können UWP-Anwendungen jetzt die APIs verwenden, die vom Windows.Devices.SerialCommunication-Namespace bereitgestellt werden, mit denen Apps mit diesen Geräten kommunizieren können.

Usbser.sys Installation

Laden Sie den im Lieferumfang von Microsoft bereitgestellten Treiber (Usbser.sys) für Ihr Kommunikations- und CDC-Steuerungsgerät.

Hinweis

Wenn Sie versuchen, einen in Windows enthaltenen USB-Geräteklassentreiber zu installieren, müssen Sie den Treiber nicht herunterladen. Sie werden automatisch installiert. Wenn sie nicht automatisch installiert werden, wenden Sie sich an den Gerätehersteller. Eine Liste der in Windows enthaltenen USB-Geräteklassentreiber finden Sie unter USB-Geräteklassentreiber, die in Windows enthalten sind.

Ab Windows 10 wurde Usbser.inf dem Verzeichnis %Systemroot%\INF hinzugefügt, das Usbser.sys als funktionales Geräteobjekt (Functional Device Object, FDO) im Gerätestapel lädt. Wenn Ihr Gerät zur Kommunikations- und CDC-Steuerungsgeräteklasse gehört, wird Usbser.sys automatisch geladen. Sie müssen keinen eigenen INF schreiben, um auf den Treiber zu verweisen. Der Treiber wird basierend auf einer kompatiblen ID-Übereinstimmung geladen, ähnlich wie andere USB-Geräteklassentreiber, die in Windows enthalten sind.

USB\Class_02

USB\Class_02&SubClass_02

  • Wenn Sie Usbser.sys automatisch laden möchten, legen Sie im Gerätedeskriptor den Klassencode auf 02 und den Unterklassencode auf 02 fest. Bei diesem Ansatz müssen Sie keine INF-Dateien für Ihr Gerät verteilen, da das System Usbser.inf verwendet. Weitere Informationen finden Sie unter Klassendefinitionen für Kommunikationsgeräte 1.2.

  • Wenn Ihr Gerät den Klassencode 02 angibt, aber einen anderen Codewert der Unterklasse als 02, wirdUsbser.sys nicht automatisch geladen. Der Plug & Play-Manager versucht, einen Treiber zu finden. Wenn kein geeigneter Treiber gefunden wird, ist auf dem Gerät möglicherweise kein Treiber geladen. Möglicherweise müssen Sie Ihren eigenen Treiber laden oder einen INF schreiben, der auf einen anderen im Lieferumfang enthaltenen Treiber verweist.

  • Wenn Ihr Gerät Klassen- und Unterklassencodes auf 02 angibt und Sie einen anderen Treiber anstelle von Usbser.sysladen möchten, müssen Sie einen INF schreiben, der die Hardware-ID des Geräts und den zu installierenden Treiber angibt. Sehen Sie sich beispielsweise die INF-Dateien an, die in Beispieltreibern enthalten sind, und suchen Sie nach Geräten, die Ihrem Gerät ähneln. Informationen zu INF-Abschnitten finden Sie unter Übersicht über INF-Dateien.

Konfigurieren des selektiven Anhaltens für Usbser.sys

Ab Windows 10 unterstützt Usbser.sysusb Selective Suspend. Es ermöglicht dem angeschlossenen USB-zu-Seriellen Gerät, bei nicht verwendetem Strom in einen Zustand mit geringer Leistung zu gelangen, während das System im S0-Zustand verbleibt. Wenn die Kommunikation mit dem Gerät fortgesetzt wird, kann das Gerät den Angehalten-Zustand verlassen und den Arbeitszustand fortsetzen. Das Feature ist standardmäßig deaktiviert und kann durch Festlegen des Eintrags IdleUsbSelectiveSuspendPolicy unter diesem Registrierungsschlüssel aktiviert und konfiguriert werden:

HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\<hardware id>\\<instance id>\\Device Parameters

Zum Konfigurieren der Energieverwaltungsfeatures vonUsbser.syskönnen Sie IdleUsbSelectiveSuspendPolicy auf festlegen:

  • "0x00000001": Gibt selektives Anhalten im Leerlauf ein, d. h. wenn keine aktiven Datenübertragungen zum oder vom Gerät vorhanden sind.

  • "0x00000000": Gibt selektives Anhalten nur dann ein, wenn keine geöffneten Handles für das Gerät vorhanden sind.

Dieser Eintrag kann auf zwei Arten hinzugefügt werden:

  • Schreiben Sie einen INF, der auf den Installations-INF verweist, und fügen Sie den Registrierungseintrag im HW hinzu. AddReg-Abschnitt .

  • Beschreiben Sie den Registrierungseintrag in einem Funktionsdeskriptor für erweiterte Eigenschaften. Fügen Sie einen Abschnitt mit einer benutzerdefinierten Eigenschaft hinzu, der das Feld bPropertyName auf eine Unicode-Zeichenfolge, "IdleUsbSelectiveSuspendPolicy" und wPropertyNameLength auf 62 Bytes festlegt. Legen Sie das Feld bPropertyData auf "0x00000001" oder "0x00000000" fest. Die Eigenschaftswerte werden als little-endian 32-Bit-Ganzzahlen gespeichert.

    Weitere Informationen finden Sie unter Microsoft-Betriebssystemdeskriptoren.

Entwickeln von Windows-Anwendungen für ein USB-CDC-Gerät

Ab Windows 10 kann eine Windows-App Anforderungen an Usbser.sys senden, indem sie den Windows.Devices.SerialCommunication-Namespace verwendet. Es definiert Windows-Runtime Klassen, die für die Kommunikation mit einem USB-CDC-Gerät über einen seriellen Port oder eine Abstraktion eines seriellen Ports verwendet werden können. Die Klassen bieten Funktionen zum Ermitteln solcher seriellen Geräte, Lese- und Schreibdaten und steuern serielle Eigenschaften für die Flusssteuerung, z. B. Festlegen der Baudrate und Signalzustände.