このセクションでは、WDM ドライバーレイヤーを示すために、USB ハードウェア用の WDM ドライバーのセットについて説明します。
次の図は、USB ジョイスティックの PnP ハードウェア構成のサンプルを示しています。
この図では、USB ジョイスティックが USB ハブ上のポートに差し込みます。 この例の USB ハブは USB ホスト コントローラー ボード上にあり、USB ホスト コントローラー ボードの単一ポートに接続されています。 USB ホスト コントローラーは PCI バスに接続します。 PnP の観点からは、USB ハブ、USB ホスト コントローラー、PCI バスはすべてバス デバイスです。これらはそれぞれポートを提供するためです。 ジョイスティックはバスデバイスではありません。
次の図は、前の図の USB ジョイスティック ハードウェアに読み込まれる可能性があるドライバーのサンプル セットを示しています。
前の図の下部から、サンプル スタック内のドライバーは次のとおりです。
PCI バスを駆動する PCI ドライバー。 これは PnP バス ドライバーです。 PCI バス ドライバーは、Microsoft によってシステムに提供されます。
USB ホスト コントローラーのバス ドライバーは、クラス/ミニクラス ドライバー ペアとして実装されます。 USB ホスト コントローラー クラスとミニクラス ドライバーは、Microsoft によってシステムと共に提供されます。
USB ハブを駆動する USB ハブ バス ドライバー。 USB ハブ ドライバーは、Microsoft によってシステムに付属しています。
ジョイスティックデバイス用の3つのドライバ。そのうちの 1 つはクラスとミニクラスのペアです。
ジョイスティック デバイスのメイン ドライバーであるファンクション ドライバーは、HID クラス ドライバー/HID USB ミニクラス ドライバー ペアです。 (HID は "ヒューマン インターフェイス デバイス" を表します)。HID USB ミニクラス ドライバーは、HID デバイスの USB 固有のセマンティクスをサポートし、一般的な HID サポートの HID クラス ドライバー DLL に依存します。
ファンクション ドライバーは、特定のデバイスに固有にすることも、HID の場合と同様に、ファンクション ドライバーはデバイスのグループにサービスを提供することもできます。 この例では、HID クラス ドライバー/HID USB ミニクラス ドライバー ペアは、USB バス上のシステム内の HID 準拠デバイスをサービスします。 HID クラス ドライバー/HID 1394 ミニクラス ドライバーペアは、1394 バス上の HID 準拠デバイスにサービスを提供します。
ファンクション ドライバーは、デバイス ベンダーまたは Microsoft によって記述できます。 この例では、関数ドライバー (HID クラス/HID USB ミニクラス ドライバー ペア) は、Microsoft によって記述されます。
この例では、ジョイスティック デバイス用の 2 つのフィルター ドライバーがあります。マクロ ボタン機能を追加する上位クラス フィルターと、ジョイスティックがマウス デバイスをエミュレートできるようにする下位レベルのデバイス フィルターです。
上位レベルのフィルターはジョイスティック I/O をフィルター処理する必要があるユーザーによって書き込まれ、下位レベルのフィルター ドライバーはジョイスティック ベンダーによって書き込まれます。
カーネル モードおよびユーザー モードのHIDクライアントおよびアプリケーションは、完全性を期して表示されているだけで、ドライバーではありません。