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

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

UDE ドライバー

usb device emulation (ude).

上の図において、

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

UDE デバイス ノード

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

usb device emulation (ude) device nodes.