Share via


USB-Anforderungsblöcke (URBs)

Dieser Artikel beschreibt einen USB Request Block (URB) und enthält Informationen dazu, wie ein USB-Clienttreiber WDM-Routinen (Windows Driver Model) verwenden kann, um URBs zuzuweisen, zu erstellen und an den USB-Treiberstapel zu übermitteln.

Ein USB-Clienttreiber (Universal Serial Bus) kann nicht direkt mit seinem Gerät kommunizieren. Stattdessen erstellt der Clienttreiber Anforderungen und übermittelt sie zur Verarbeitung an den USB-Treiberstapel. Innerhalb jeder Anforderung stellt der Clienttreiber eine Datenstruktur mit variabler Länge bereit, die als USB Request Block (URB) bezeichnet wird. Die URB-Struktur beschreibt die Details der Anforderung und enthält auch Informationen über die status der abgeschlossenen Anforderung. Der Clienttreiber führt alle gerätespezifischen Vorgänge, einschließlich Datenübertragungen, über URBs aus. Der Clienttreiber muss die URB mit Informationen zur Anforderung initialisieren, bevor sie an den USB-Treiberstapel übermittelt wird. Für bestimmte Arten von Anforderungen stellt Microsoft Hilfsroutinen und Makros bereit, die eine URB-Struktur zuordnen und die erforderlichen Elemente der URB-Struktur mit details füllen, die vom Clienttreiber bereitgestellt werden.

Jede URB beginnt mit einem Standardheader mit fester Größe (_URB_HEADER), dessen Zweck darin besteht, den Typ des angeforderten Vorgangs zu identifizieren. Das Length-Element von _URB_HEADER gibt die Größe der URB in Bytes an. Der Funktionsmember , der eine aus einer Reihe systemdefinierter URB_FUNCTION_XXX Konstanten sein muss, bestimmt den Typ des angeforderten Vorgangs. Bei Datenübertragungen gibt dieses Element für instance den Übertragungstyp an. Funktionscodes URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER und URB_FUNCTION_ISOCH_TRANSFER auf Steuerungs-, Massen-/Unterbrechungsübertragungen bzw. isochrone Übertragungen hinweisen. Der USB-Treiberstapel verwendet das Statuselement, um einen USB-spezifischen status Code zurückzugeben.

Um eine URB zu übermitteln, verwendet der Clienttreiber die IOCTL_INTERNAL_USB_SUBMIT_URB-Anforderung , die mithilfe eines E/A-Anforderungspakets (IRP) vom Typ IRP_MJ_INTERNAL_DEVICE_CONTROL an das Gerät übermittelt wird.

Nachdem der USB-Treiberstapel die URB verarbeitet hat, verwendet der Treiberstapel das Statuselement der URB-Struktur, um einen USB-spezifischen status Code zurückzugeben.

Hinweis

KmDF- und UMDF-Treiberentwickler sollten die entsprechenden Frameworkschnittstellen für die Kommunikation mit einem USB-Gerät verwenden. Weitere Informationen finden Sie unter Arbeiten mit USB-Geräten für KMDF-Treiber und Arbeiten mit USB-Schnittstellen in UMDF. In diesen Themen werden die zugrunde liegenden WDM-Treiberschnittstellen erläutert, die für die USB-Gerätekommunikation verwendet werden.

In diesem Abschnitt

Thema BESCHREIBUNG
Zuweisung und Erstellen von URBs In diesem Thema wird beschrieben, wie ein USB-Clienttreiber wdM-Treiberroutinen (Windows Driver Model) verwenden kann, um eine URB zuzuordnen und zu formatieren, bevor die Anforderung an den von Microsoft bereitgestellten USB-Treiberstapel gesendet wird.
Übermitteln einer URB In diesem Thema werden die Schritte beschrieben, die erforderlich sind, um eine initialisierte URB an den USB-Treiberstapel zu übermitteln, um eine bestimmte Anforderung zu verarbeiten.
Bewährte Methoden: Verwenden von URBs In diesem Thema werden bewährte Methoden für einen Clienttreiber zum Zuweisen, Erstellen und Senden einer URB an den USB-Treiberstapel beschrieben, der in Windows 8 enthalten ist.