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