Freigeben über


Einführung in WinUSB für Entwickler

Als Treiberentwickler kann das Verständnis von WinUSB (Windows USB) Ihren Entwicklungsprozess erheblich optimieren, insbesondere beim Arbeiten mit USB-Geräten. WinUSB ist ein generischer Treiber in Windows, mit dem Sie mit USB-Geräten kommunizieren können, ohne einen benutzerdefinierten Treiber schreiben zu müssen. Dadurch können Sie Zeit sparen, Komplexität reduzieren und kompatibilitätsübergreifend in verschiedenen Windows-Versionen sicherstellen.

Wichtige Vorteile der Verwendung von WinUSB

  1. Vereinfachte Entwicklung:

    • Benutzerfreundlichkeit: WinUSB abstrahiert einen Großteil der Komplexität der USB-Kommunikation und erleichtert die Interaktion mit USB-Geräten.
    • Kein benutzerdefinierter Treiber erforderlich: Für viele USB-Geräte kann WinUSB direkt verwendet werden, ohne dass ein benutzerdefinierter Treiber geschrieben und verwaltet werden muss.
  2. Plattformübergreifende Kompatibilität:

    • Standardisierte Schnittstelle: WinUSB bietet eine standardisierte Schnittstelle für die USB-Kommunikation, die von Vorteil sein kann, um die Kompatibilität in verschiedenen Windows-Versionen sicherzustellen.
  3. Zeit- und Kosteneffizienz:

    • Reduzierte Entwicklungszeit: Die Verwendung von WinUSB kann die zum Entwickeln und Testen eines USB-Treibers erforderliche Zeit erheblich reduzieren.
    • Niedrigere Wartungskosten: Da WinUSB von Microsoft verwaltet wird, können Sie sich darauf verlassen, dass sie aktualisiert und unterstützt wird, wodurch die langfristigen Wartungskosten reduziert werden.
  4. Zugriff auf USB-Features:

    • Vollständige USB-Funktionalität: WinUSB unterstützt eine vielzahl von USB-Funktionen, einschließlich Massenübertragungen, Steuerungsübertragungen, Unterbrechungsübertragungen und isochronen Übertragungen.

Was Sie mit WinUSB erreichen können

  1. Gerätekommunikation:

    • Datenübertragung: Senden und Empfangen von Daten an und von einem USB-Gerät mithilfe von Massen-, Steuer-, Unterbrechungs- oder isochronen Übertragungen.
    • Steuerungsanforderungen: Senden von Steuerelementanforderungen zum Konfigurieren des Geräts oder Abrufen von Informationen.
  2. Gerätekonfiguration:

    • Einstellungskonfiguration: Konfigurieren Sie das USB-Gerät, indem Sie Konfigurationen, Schnittstellen und alternative Einstellungen auswählen.
    • Endpunktverwaltung: Verwalten von Endpunkten für die Datenübertragung.
  3. Geräteenumeration:

    • Geräteidentifikation: Aufzählen und Identifizieren von USB-Geräten, die mit dem System verbunden sind.
    • Deskriptorabruf: Abrufen von Gerätedeskriptoren, Konfigurationsdeskriptoren, Schnittstellendeskriptoren und Endpunktdeskriptoren.
  4. Benutzerdefinierte Anwendungen:

    • Benutzermodusanwendungen: Entwickeln von Benutzermodusanwendungen, die mit USB-Geräten kommunizieren, mithilfe der WinUSB-API.
    • Firmwareupdates: Implementieren sie Firmwareupdatemechanismen für USB-Geräte.
  5. Testen und Debuggen:

    • Prototyperstellung: Schnelle Prototyp-USB-Gerätekommunikation zum Testen der Hardwarefunktionalität.
    • Debuggen: Verwenden Sie WinUSB, um Kommunikationsprobleme zwischen dem Host und dem USB-Gerät zu debuggen.

Komponenten von WinUSB

WinUSB beinhaltet:

  • Ein Kernelmodustreiber (winusb.sys)
  • Eine Dynamic Link Library (winusb.dll) im Benutzermodus, die WinUSB-Funktionen verfügbar macht, die in winusb.h beschrieben sind. Sie können diese Funktionen nutzen, um USB-Geräte mit Software im Benutzermodus zu verwalten.

Standardmäßig wird winusb.sys im Kernelmodusstapel des Geräts als oberer Filtertreiber installiert. Apps kommunizieren mit dem UMDF-Funktionstreiber des Geräts, um Anforderungen zum Lesen, Schreiben oder zur Steuerung der Geräte-E/A zu stellen. In dieser Konfiguration dient winusb.sys als Plug & Play- und Energiebesitzer des Gerätestapels. Sie können auch winusb.sys als Funktionstreiber für ein USB-Gerät installieren.

Erste Schritte mit WinUSB

Dieser Abschnitt enthält Informationen zu:

  • Auswahl des richtigen Treibers für ein Gerät
  • Verwendung von WinUSB für die Kommunikation mit USB-Geräten
  • Installieren von winusb.sys als Funktionstreiber für ein USB-Gerät

Außerdem finden Sie detaillierte Codebeispiele, die zeigen, wie Apps und USB-Geräte kommunizieren.

Hinweis

WinUSB unterstützt isochrone Übertragungen ab Windows 8.