次の方法で共有


USB デバイス エミュレーション (UDE) のアーキテクチャ

この記事では、USB ホスト コントローラーと接続されたデバイスの動作をエミュレートする USB デバイス エミュレーション (UDE) のアーキテクチャについて説明します。 UDE を使用すると、USB 以外のハードウェアは、Windows の USB ホスト側ドライバーを使用して上位層と通信できます。

UDE ドライバー

UDE ソフトウェア スタックの図。

上の図において、

  • USB ハブ ドライバー (Usbhub3.sys) は、カーネル モード ドライバー フレームワーク (KMDF) ドライバーです。 ハブ ドライバーは、USB ハブとそのポートの管理、エミュレーション、USB デバイスとそのダウンストリーム ポートに接続されるその他のハブの物理デバイス オブジェクト (PDO) の作成を行います。
  • USB ホスト コントローラー拡張機能 (Ucx01000.sys) は、スタック内のハブ ドライバーに対する抽象化レイヤーであり、基になるホスト コントローラー ドライバーへの要求をキューに入れるための汎用メカニズムを提供します。
  • UDE クラス拡張 (UdeCx) は、クライアント実装のコールバック関数を介して UDE クライアント ドライバーを呼び出します。 クラス拡張機能は、クライアント ドライバーが UDE オブジェクトを作成して管理するためのルーチンを提供します。
  • UDE クライアント ドライバーはハードウェアを管理し、Windows ドライバー フレームワーク (WDF) API と UDE API の両方とやり取りします。 上端は、USB コンストラクトを使用して WDF および UDE クラス拡張の両方と通信します。 その下端は、ハードウェアのインターフェイスを使用してハードウェアと通信します。
  • カスタム ハードウェア: たとえば、PCI ハードウェアをエミュレートして USB デバイスとして動作させることができます。

UDE デバイス ノード

UDE クライアント ドライバー用に読み込まれたデバイス スタックは次のとおりです。

UDE デバイス スタックの図。