Freigeben über


USB 3.0-Datenstrukturen

In diesem Thema werden die Datenstrukturen beschrieben, die vom USB 3.0-Hostcontrollertreiber verwendet werden. Wenn Sie diese Datenstrukturen verstehen, können Sie die Befehle der USB 3.0 - und RCDRKD-Debuggererweiterung effektiv verwenden. Die hier dargestellten Datenstrukturen verfügen über Namen, die mit der USB 3.0-Spezifikation übereinstimmen. Wenn Sie mit der USB 3.0-Spezifikation vertraut sind, können Sie die Erweiterungsbefehle zum Debuggen von USB 3.0-Treibern verwenden.

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 über bis zu 31 Endpunkte verfügen. Das folgende Diagramm zeigt einige der Datenstrukturen, die einen Hostcontroller und die verbundenen Geräte darstellen.

Diagramm: USB 3.0-Datenstrukturen, die einen Hostcontroller und verbundene Geräte mit Gerätekontext, Slotkontext und Endpunktkontext darstellen.

Gerätekontextbasisarray

Das Device Context Base Array ist ein Array von Zeigern auf Gerätekontextstrukturen. Es gibt eine Gerätekontextstruktur für jedes Gerät, das mit dem Hostcontroller verbunden ist. Die Elemente 1 bis 255 verweisen auf Gerätekontextstrukturen. Element 0 verweist auf eine Kontextstruktur für den Hostcontroller.

Gerätekontext und Slotkontext

Eine Gerätekontextstruktur enthält ein Array von Zeigern auf Endpunktkontextstrukturen. Es gibt eine Endpunktkontextstruktur für jeden Endpunkt auf dem Gerät. Die Elemente 1 bis 31 verweisen auf Endpunktkontextstrukturen. Element 0 verweist auf eine Slotkontextstruktur, die Kontextinformationen für das Gerät enthält.

Befehlsring

Der Befehlsring wird von der Software verwendet, um Befehle an den Hostcontroller zu übergeben. Einige dieser Befehle richten sich an den Hostcontroller, andere an bestimmte Geräte, die mit dem Hostcontroller verbunden sind.

Ereignisring

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 wurde.

Türklingelregisterarray

Das Doorbell Register Array ist ein Array von Klingelregistern, eines für jedes Gerät, das mit dem Hostcontroller verbunden ist. Die Elemente 1 bis 255 sind Klingelregister. Element 0 gibt an, ob im Befehlsring ein ausstehender Befehl vorhanden ist.

Die Software benachrichtigt den Hostcontroller über geräte- oder endpunktbezogene Aufgaben, indem Kontextinformationen in das Klingelregister für das Gerät geschrieben werden.

Das folgende Diagramm wird rechts neben dem vorherigen Diagramm fortgesetzt. Es werden zusätzliche Datenstrukturen angezeigt, die einen einzelnen Endpunkt darstellen.

Diagramm zur Darstellung der USB 3.0-Datenstruktur mit Endpunktkontext, der mehrere TRBs mit Daten und TDs enthält.

Übertragungsring

Jeder Endpunkt verfügt über einen oder mehrere Übertragungsringe. Ein Übertragungsring ist ein Array von Übertragungsanforderungsblöcken (TRBs). Jeder TRB verweist auf einen Block zusammenhängender Daten (bis zu 64 KB), der als einzelne Einheit zwischen Hardware und Arbeitsspeicher ü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 unterbricht dann die Übertragungsanforderung in einen oder mehrere Übertragungsdeskriptoren (TDs). Jede TD enthält mindestens eine TRBs.

Endpunktkontext

Eine Endpunktkontextstruktur enthält Kontextinformationen für einen einzelnen Endpunkt. Es verfügt auch über Dequeue - und Enqueue-Member , die verwendet werden, um nachzuverfolgen, wo TRBs von der Hardware genutzt werden und wo TRBs von Software hinzugefügt werden.

Weitere Informationen

USB-Debuginnovationen in Windows 8