次の方法で共有


USB 3.0 データ構造

このトピックでは、USB 3.0 ホスト コントローラー ドライバーで使用されるデータ構造について説明します。 Understanding these data structures will help you use the USB 3.0 and RCDRKD debugger extension commands effectively. ここで示すデータ構造には、 USB 3.0 仕様と一致する名前があります。 USB 3.0 仕様に慣れていると、拡張コマンドを使用して USB 3.0 ドライバーをデバッグする機能がさらに強化されます。

USB 3.0 ホスト コントローラー ドライバーは、USB 3.0 コア ドライバー スタックの一部です。 詳細については、「 USB ドライバー スタック アーキテクチャ」を参照してください。

各 USB 3.0 ホスト コントローラーは最大 255 台のデバイスを持ち、各デバイスは最大 31 個のエンドポイントを持つことができます。 次の図は、1 つのホスト コントローラーと接続されているデバイスを表すデータ構造の一部を示しています。

デバイス コンテキスト、スロット コンテキスト、エンドポイント コンテキストを持つホスト コントローラーと接続されたデバイスを表す USB 3.0 データ構造を示す図。

デバイス コンテキストの基本配列

Device Context Base Array は、デバイス コンテキスト構造体へのポインターの配列です。 ホスト コントローラーに接続されているデバイスごとに 1 つのデバイス コンテキスト構造があります。 要素 1 から 255 は、デバイス コンテキスト構造を指します。 要素 0 は、ホスト コントローラーのコンテキスト構造を指します。

デバイス コンテキストとスロット コンテキスト

デバイス コンテキスト構造体は、エンドポイント コンテキスト構造体へのポインターの配列を保持します。 デバイス上のエンドポイントごとに 1 つのエンドポイント コンテキスト構造があります。 要素 1 から 31 は、エンドポイント コンテキスト構造を指します。 要素 0 は、デバイスのコンテキスト情報を保持するスロット コンテキスト構造体を指します。

Command Ring

コマンド リングは、ホスト コントローラーにコマンドを渡すためにソフトウェアによって使用されます。 これらのコマンドの一部はホスト コントローラーに送られ、一部はホスト コントローラーに接続されている特定のデバイスに送信されます。

Event Ring

イベント リングは、ソフトウェアにイベントを渡すためにホスト コントローラーによって使用されます。 つまり、イベント リングは、アクションが完了したことをドライバーに通知するためにホスト コントローラーが使用する構造です。

Doorbell Register 配列

Doorbell Register Array は、ホスト コントローラーに接続されているデバイスごとに 1 つずつ、ドアベル レジスタの配列です。 要素 1 から 255 はドアベル レジスタです。 要素 0 は、コマンド リングに保留中のコマンドがあるかどうかを示します。

ソフトウェアは、デバイスのドアベル レジスタにコンテキスト情報を書き込むことで実行するデバイス関連またはエンドポイント関連の作業があることをホスト コントローラーに通知します。

次の図は、前の図の右側に続きます。 1 つのエンドポイントを表す追加のデータ構造が表示されます。

データと TD を持つ複数の TRB を含むエンドポイント コンテキストを持つ USB 3.0 データ構造を示す図。

Transfer Ring

各エンドポイントには、1 つ以上の転送リングがあります。 転送リングは、転送要求ブロック (TRB) の配列です。 各 TRB は、ハードウェアとメモリの間で 1 つのユニットとして転送される連続したデータのブロック (最大 64 KB) を指します。

USB 3.0 コア スタックは、USB クライアント ドライバーから転送要求を受信すると、転送のエンドポイント コンテキストを識別し、転送要求を 1 つ以上の転送記述子 (TD) に分割します。 各 TD には、1 つ以上の TRB が含まれています。

Endpoint Context

エンドポイント コンテキスト構造体は、単一のエンドポイントのコンテキスト情報を保持します。 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.

See also

Windows 8 での USB デバッグのイノベーション