ドライバー モデルの選択

Microsoft Windows には、ドライバーの作成に使用できるさまざまなドライバー モデルが用意されています。 最適なドライバー モデルを選択するための戦略は、作成するドライバーの種類によって異なります。 次の選択肢があります。

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

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

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

ハードウェア デバイスを設計する際に最初に考慮すべき点の 1 つは、ファンクション ドライバーを記述する必要があるかどうかです。 次の質問について検討してください。

ドライバーの作成を完全に回避できるでしょうか。 ファンクション ドライバーを作成する必要がある場合、どのドライバー モデルが最も適しているでしょうか。 これらの問いに答えるために、「デバイスとドライバーのテクノロジ」で説明されているテクノロジの一覧から、ご自身のデバイスがどれに該当するかを判断してください。 その特定のテクノロジのドキュメントを参照して、ファンクション ドライバーを作成する必要があるかどうかを判断すると共に、デバイスに使用できるドライバー モデルについて理解を深めましょう。

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

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

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

デバイスとドライバーのテクノロジ」に記載されているすべてのテクノロジに専用のミニドライバー モデルがあるわけではありません。 個々のテクノロジのドキュメントによって、カーネル モード ドライバー フレームワーク (KMDF) を使用することが推奨されていたり、ユーザーモード ドライバー フレームワーク (UMDF) を使用することが推奨されていたりします。 まず、ご自身に該当するデバイス テクノロジのドキュメントを調査することが重要です。 該当するデバイス テクノロジにミニドライバー モデルがある場合は、ミニドライバー モデルを使用してください。 それ以外の場合は、UMDF、KMDF、または Windows Driver Model (WDM) を使用するかどうかについて、テクノロジ固有のドキュメントのアドバイスに従ってください。

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

多くの場合、1 つの I/O 要求 (デバイスからのデータの読み取りなど) には複数のドライバーが関与します。 ドライバーはスタック (積み重なり) として階層化され、慣例的に、最初のドライバーが上に、最後のドライバーが下に来るように視覚化されます。 スタックには 1 つのファンクション ドライバーがあり、フィルター ドライバーが含まれる場合もあります。 ファンクション ドライバーとフィルター ドライバーの詳細については、「ドライバーとは」および「デバイス ノードとデバイス スタック」を参照してください。

デバイスのフィルター ドライバーを作成している場合は、「デバイスとドライバーのテクノロジ」で説明されているテクノロジのリストのどこにデバイスが当てはまるかを判断します。 特定のデバイス テクノロジのドキュメントに、フィルター ドライバー モデルの選択に関するガイダンスがあるかどうかを確認してください。 そのガイダンスがデバイス テクノロジのドキュメントで提供されていない場合は、まず UMDF をドライバー モデルとして使用することを検討します。 フィルター ドライバーが、UMDF では使用できないデータ構造にアクセスする必要がある場合は、ドライバー モデルとして KMDF を使用することを検討してください。 非常にまれなケースですが、KMDF では使用できないデータ構造にドライバーがアクセスする必要がある場合は、WDM をドライバー モデルとして使用します。

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

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

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

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

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

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

ファイル システム ドライバーのモデルの選択については、「ファイル システム ドライバーのサンプル」を参照してください。 ファイル システム ドライバーは非常に複雑な場合があり、ドライバー開発の高度な概念に関する知識が要求される場合があるので注意してください。

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

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

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

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

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

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