ドライバー モデルの選択

Microsoft Windows には、ドライバーの作成に使うことができる、さまざまなドライバー モデルが用意されています。最適なドライバー モデルを選ぶための戦略は、作成を予定しているドライバーの種類によって異なります。次のオプションがあります。

  • デバイス ファンクション ドライバー
  • デバイス フィルター ドライバー
  • ソフトウェア ドライバー
  • ファイル システム フィルター ドライバー
  • ファイル システム ドライバー

さまざまな種類のドライバーの違いについては、「ドライバーとは」と「デバイス ノードとデバイス スタック」をご覧ください。次のセクションでは、ドライバーの種類ごとにモデルの選択方法について説明します。

デバイス ファンクション ドライバーのドライバー モデルの選択

ハードウェア デバイスを設計するときには、ファンクション ドライバーを作る必要があるかどうかをまず検討する必要があります。次のことを確認します。

ドライバー全部を作ることを避けられるか。

ファンクション ドライバーを作る必要がある場合、使うべき最適なドライバー モデルはどれか。

これらを確認するために、「デバイスとドライバーのテクノロジ」に説明されているテクノロジの一覧でデバイスが適合する箇所を特定します。特定したテクノロジのドキュメントを参照して、ファンクション ドライバーを作る必要があるかどうかを判断し、デバイスに使用可能なドライバー モデルについて確認します。

個々のテクノロジの中には、ミニドライバー モデルがあるものもあります。ミニドライバー モデルでは、デバイス ドライバーは、汎用的なタスクを処理する部分とデバイス固有のタスクを処理する部分の 2 つの部分で構成されます。一般に、Microsoft が汎用的な部分を作成し、デバイスの製造元がデバイス固有の部分を作成します。デバイス固有の部分にはさまざまな名前が付けられますが、ほとんどはプレフィックス mini を共有しています。ミニドライバー モデルで使われる名前をいくつか示します。

  • ディスプレイ ミニポート ドライバー
  • オーディオ ミニポート ドライバー
  • バッテリ ミニクラス ドライバー
  • Bluetooth プロトコル ドライバー
  • HID ミニドライバー
  • WIA ミニドライバー
  • NDIS ミニポート ドライバー
  • ストレージ ミニポート ドライバー
  • ストリーミング ミニドライバー

ミニドライバー モデルの概要については、「ミニドライバーとドライバーのペア」をご覧ください。

デバイスとドライバーのテクノロジ」に一覧表示されているテクノロジのすべてに、専用のミニドライバー モデルがあるわけではありません。ある特定のテクノロジのドキュメントではカーネル モード ドライバー フレームワーク (KMDF) を、他のテクノロジのドキュメントではユーザー モード ドライバー フレームワーク (UMDF) を使うよう勧められていることがあります。重要なのは、特定のデバイス テクノロジのドキュメントを研究することから始める必要があるという点です。デバイス テクノロジにミニドライバー モデルがある場合、そのミニドライバー モデルを使う必要があります。それ以外の場合は、UMDF、KMDF、Windows Driver Model (WDM) のどれを使うかについて、テクノロジ固有のドキュメントの助言に従います。

デバイス フィルター ドライバーのドライバー モデルの選択

デバイスからのデータ読み取りのような単一の I/O 要求に複数のドライバーが関与していることがよくあります。ドライバーは 1 つのスタック上に重ねて置かれます。スタックの状態を視覚的に捉えるために、最初のドライバーが最上部に、最後のドライバーが最下部にそれぞれ置かれているイメージにたとえる方法がよく用いられます。スタックには 1 つのファンクション ドライバーがあり、フィルター ドライバーを置くこともできます。ファンクション ドライバーとフィルター ドライバーについては、「ドライバーとは」と「デバイス ノードとデバイス スタック」をご覧ください。

デバイスのフィルター ドライバーを作る準備をしている場合、「デバイスとドライバーのテクノロジ」に説明されているテクノロジの一覧で、デバイスが適合する箇所を特定します。特定したテクノロジのドキュメントに、フィルター ドライバー モデルの選択に関するガイダンスがあるかどうかを確認します。デバイス テクノロジのドキュメントにガイダンスがない場合は、まず UMDF をドライバー モデルとして使うことを検討します。フィルター ドライバーが、UMDF からは利用できないデータ構造にアクセスする必要がある場合は、KMDF をドライバー モデルとして使うことを検討します。非常にまれなケースですが、ドライバーが KMDF からは利用できないデータ構造にアクセスする必要がある場合は、WDM をドライバー モデルとして使います。

ソフトウェア ドライバーのドライバー モデルの選択

デバイスに関連付けられていないドライバーは、ソフトウェア ドライバーと呼ばれます。ソフトウェア ドライバーついては、「ドライバーとは」をご覧ください。ソフトウェア ドライバーは、カーネル モードで実行可能であり、そのため保護されたオペレーティング システム データにアクセスできるので便利です。プロセッサ モードについては、「ユーザー モードとカーネル モード」をご覧ください。

ソフトウェア ドライバーでは、2 つのオプションは KMDF と kernel-modeWindows NT ドライバー モデルです。KMDF と kernel-modeWindows NT ドライバー モデルでは、プラグ アンド プレイ (PnP) や電源管理を心配せずにドライバーを作ることができます。したがって、ドライバーの主要タスクに集中することができます。KMDF では、フレームワークによって PnP と電源が処理されるため、PnP や電源について心配する必要はありません。kernel-modeWindows NT モデルでは、kernel-mode サービスは PnP や電源管理とは完全に独立した環境で動作するため、PnP や電源について心配する必要はありません。

KMDF を使い慣れている場合は特に、KMDF を使うことをお勧めします。ドライバーを PnP と電源管理から完全に独立したものにするには、kernel-modeWindows NT モデルを使ってください。電源切り替えまたは PnP イベントを認識するソフトウェア ドライバーを作る必要がある場合、kernel-modeWindows NT モデルは使うことができません。KMDF を使う必要があります。

  非常にまれなケースですが、PnP または電源イベントを認識するソフトウェア ドライバーを作る必要があり、ドライバーが KMDF からは利用できないデータにアクセスする必要がある場合は、WDM を使う必要があります。

 

ファイル システム フィルター ドライバーのドライバー モデルの選択

ファイル システム フィルター ドライバーのモデルの選択については、「ファイル システム ミニフィルター ドライバー」と「ファイル システム フィルター ドライバー」をご覧ください。

ファイル システム ドライバーのドライバー モデルの選択

ファイル システム ドライバーのモデルの選択については、「ファイル システム ミニフィルター ドライバー」をご覧ください。

関連トピック

カーネル モード ドライバー フレームワーク

ユーザー モード ドライバー フレームワーク