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.
In diesem Thema werden die Datenstrukturen beschrieben, die vom USB 3.0-Hostcontrollertreiber verwendet werden. Understanding these data structures will help you use the USB 3.0 and RCDRKD debugger extension commands effectively. Die hier dargestellten Datenstrukturen weisen Namen auf, die mit der USB 3.0-Spezifikation übereinstimmen. Dank der USB 3.0-Spezifikation können Sie die Erweiterungsbefehle zum Debuggen von USB 3.0-Treibern weiter verbessern.
Der USB 3.0-Hostcontrollertreiber ist Teil des USB 3.0-Kerntreiberstapels. Weitere Informationen finden Sie unter USB-Treiberstapelarchitektur.
Jeder USB 3.0-Hostcontroller kann über bis zu 255 Geräte verfügen, und jedes Gerät kann bis zu 31 Endpunkte aufweisen. Das folgende Diagramm zeigt einige der Datenstrukturen, die einen Hostcontroller und die verbundenen Geräte darstellen.
Gerätekontextbasisarray
Das Gerätekontextbasisarray ist ein Array von Zeigern auf Gerätekontextstrukturen. Es gibt eine Gerätekontextstruktur für jedes Gerät, das mit dem Hostcontroller verbunden ist. Elemente 1 bis 255 verweisen auf Gerätekontextstrukturen. Element 0 verweist auf eine Kontextstruktur für den Hostcontroller.
Gerätekontext und Steckplatzkontext
Eine Gerätekontextstruktur enthält ein Array von Zeigern auf Endpunktkontextstrukturen. Es gibt eine Endpunktkontextstruktur für jeden Endpunkt auf dem Gerät. Elemente 1 bis 31 Punkt auf Endpunktkontextstrukturen. Element 0 verweist auf eine Slot Context-Struktur, die Kontextinformationen für das Gerät enthält.
Command Ring
Der Befehlsring wird von Software verwendet, um Befehle an den Hostcontroller zu übergeben. Einige dieser Befehle sind an den Hostcontroller gerichtet, und einige werden an bestimmte Geräte gerichtet, die mit dem Hostcontroller verbunden sind.
Event Ring
Der Ereignisring wird vom Hostcontroller verwendet, um Ereignisse an Software zu übergeben. Das heißt, der Ereignisring ist eine Struktur, die der Hostcontroller verwendet, um Treiber darüber zu informieren, dass eine Aktion abgeschlossen ist.
Doorbell Register Array
Das Doorbell Register Array ist ein Array von Doorbell-Registern, eines für jedes Gerät, das mit dem Hostcontroller verbunden ist. Elemente 1 bis 255 sind Türglockenregister. Element 0 gibt an, ob im Befehlsring ein ausstehender Befehl vorhanden ist.
Software benachrichtigt den Hostcontroller darüber, dass er gerätebezogene oder endpunktbezogene Aufgaben hat, um kontextbezogene Informationen in das Doorbell-Register für das Gerät zu schreiben.
Das folgende Diagramm wird rechts neben dem vorherigen Diagramm fortgesetzt. Es zeigt zusätzliche Datenstrukturen, die einen einzelnen Endpunkt darstellen.
Transfer Ring
Jeder Endpunkt verfügt über einen oder mehrere Übertragungsringe. Ein Übertragungsring ist ein Array von Übertragungsanforderungsblöcken (Transfer Request Blocks, TRBs). Jeder TRB verweist auf einen Block zusammenhängender Daten (bis zu 64 KB), der zwischen Hardware und Arbeitsspeicher als einzelne Einheit übertragen wird.
Wenn der USB 3.0-Kernstapel eine Übertragungsanforderung von einem USB-Clienttreiber empfängt, identifiziert er den Endpunktkontext für die Übertragung und bricht dann die Übertragungsanforderung in einen oder mehrere Übertragungsdeskriptoren (TDs) auf. Jede TD enthält einen oder mehrere TRBs.
Endpoint Context
Eine Endpunktkontextstruktur enthält Kontextinformationen für einen einzelnen Endpunkt. It also has Dequeue and Enqueue members, which are used to track where TRBs are being consumed by the hardware and where TRBs are being added by software.