Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel beschreibt einen USB-Anforderungsblock (URB) und enthält Informationen dazu, wie ein USB-Clienttreiber Windows Driver Model (WDM)-Routinen verwenden kann, um URBs an den USB-Treiberstapel zuzuweisen, zu erstellen und zu übermitteln.
Ein USB-Clienttreiber (Universal Serial Bus) kann nicht direkt mit seinem Gerät kommunizieren. Stattdessen erstellt der Clienttreiber Anforderungen und sendet sie zur Verarbeitung an den USB-Treiberstapel. Innerhalb jeder Anforderung stellt der Clienttreiber eine Datenstruktur mit variabler Länge bereit, die als USB-Anforderungsblock (USB Request Block, URB) bezeichnet wird. Die URB-Struktur beschreibt die Details der Anforderung und enthält auch Informationen zum 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 allozieren und die erforderlichen Mitglieder der URB-Struktur mit Details des Clienttreibers füllen.
Jeder URB beginnt mit einem standardmäßigen Header mit fester Größe (_URB_HEADER), dessen Zweck es ist, den angeforderten Vorgangstyp zu identifizieren. Das Length-Element von _URB_HEADER gibt die Größe der URB in Bytes an. Das Funktionselement , das eine Reihe von vom System definierten URB_FUNCTION_XXX Konstanten sein muss, bestimmt den Typ des angeforderten Vorgangs. Bei Datenübertragungen gibt dieses Element beispielsweise den Typ der Übertragung an. Funktionscodes wie URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER und URB_FUNCTION_ISOCH_TRANSFER geben Kontroll-, Massen-/Unterbrechungs- bzw. isochrone Übertragungen an. Der USB-Treiberstapel verwendet das Statuselement , um einen USB-spezifischen Statuscode zurückzugeben.
Um eine URB zu übermitteln, verwendet der Clienttreiber die IOCTL_INTERNAL_USB_SUBMIT_URB Anforderung, die über ein E/A-Anforderungspaket (IRP) vom Typ IRP_MJ_INTERNAL_DEVICE_CONTROL an das Gerät übermittelt wird.
Nachdem der USB-Treiberstapel die Verarbeitung des URB abgeschlossen hat, verwendet der Treiberstapel das Statuselement der URB-Struktur , um einen USB-spezifischen Statuscode 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 Windows Driver Model (WDM)-Treiberroutinen verwenden kann, um eine URB zuzuweisen und zu formatieren, bevor die Anforderung an den von Microsoft bereitgestellten USB-Treiberstapel gesendet wird. |
| Übermitteln eines URB- | In diesem Thema werden die Schritte beschrieben, die zum Übermitteln einer initialisierten URB an den USB-Treiberstapel erforderlich sind, um eine bestimmte Anforderung zu verarbeiten. |
| bewährte Methoden: Verwenden von URBs | In diesem Thema werden bewährte Methoden für einen Clienttreiber zum Zuordnen, Erstellen und Senden einer URB an den USB-Treiberstapel beschrieben, der in Windows 8 enthalten ist. |