次の方法で共有


アーキテクチャ: USB ホスト コントローラー拡張機能 (UCX)

このセクションでは、ホスト ドライバー開発の概要とタスクについて説明します。 このセクションは、Microsoft が提供する USB ホスト コントローラー拡張ドライバー (Ucx01000.sys) と通信する新しいホスト コントローラー ドライバーの開発者を対象としています。

これは、Windows の USB ホスト側ドライバーに関する記事に示されている図の修正版です。 このバージョンでは、ホスト コントローラー ドライバーの開発に関係のない USB クライアント ドライバー層の詳細が省略されています。

ucx architecture.

上の図において、

  • USB ハブ ドライバー (Usbhub3.sys) は KMDF ドライバーです。 ハブ ドライバーは、USB ハブとそのポートの管理や、USB デバイスとそのダウンストリーム ポートに接続されるその他のハブの物理デバイス オブジェクト (PDO) の列挙と作成を行います。
  • USB ホスト コントローラー拡張機能 (Ucx01000.sys) は、スタック内の上位にあるハブ ドライバーに対する抽象化レイヤーであり、基になるホスト コントローラー ドライバーへの要求をキューに入れるための汎用メカニズムを提供します。
  • USB ホスト コントローラー ドライバーは、ハードウェアを管理します。 Usbxhci.sys は、Microsoft が提供するドライバーの 1 つで、特に xHCI 仕様に準拠した USB コントローラー ハードウェアを対象としています。 独立したハードウェア開発者は、同梱の Usbxhci.sys を使用するのではなく、独自のホスト コントローラー ドライバーの作成が必要になる場合があります。 たとえば、仕様に完全に準拠していないため Usbxhci.sys を使用できない XHCI ハードウェアや、USB over TCP 接続などの非 XHCI ハードウェアの場合です。

UCX とホスト コントローラー ドライバーとの間の双方向通信は、USB ホスト コントローラー拡張機能 (UCX) プログラミング インターフェイスを使用して行われます。 各ドライバーは、ドライバーのコンパイル時に、Microsoft が提供するスタブ ライブラリ (Ucx01000.lib) のエントリ ポイントに静的にリンクされます。

次の図は、ホスト コントローラー ドライバー用に読み込まれたデバイス スタックです。

ucx device stack.