ドライバー モデルの選択
Microsoft Windows には、ドライバーの作成に使用できるさまざまなドライバー モデルが用意されています。 最適なドライバー モデルを選択するための戦略は、作成する予定のドライバーの種類によって異なります。 次の選択肢があります。
- デバイス関数ドライバー
- デバイス フィルター ドライバー
- ソフトウェア ドライバー
- ファイル システム フィルター ドライバー
- ファイル システム ドライバー
さまざまな種類のドライバーの違いについては、「ドライバーとは」と「デバイス ノードとデバイス スタック」を参照してください。 以降の各セクションでは、ドライバーの種類ごとのモデルの選び方について説明します。
デバイス ファンクション ドライバーのドライバー モデルの選択
ハードウェア デバイスを設計する際に最初に考慮すべき点の 1 つは、ファンクション ドライバーを記述する必要があるかどうかです。 次の質問について検討してください。
ドライバーの作成を完全に回避できるでしょうか。 ファンクション ドライバーを作成する必要がある場合、どのドライバー モデルが最も適しているでしょうか。 これらの問いに答えるために、「デバイスとドライバーのテクノロジ」で説明されているテクノロジの一覧から、ご自身のデバイスがどれに該当するかを判断してください。 その特定のテクノロジのドキュメントを参照して、ファンクション ドライバーを作成する必要があるかどうかを判断すると共に、デバイスに使用できるドライバー モデルについて理解を深めましょう。
個々のテクノロジの中にはミニドライバー モデルがあるものもあります。 ミニドライバー モデルでは、デバイス ドライバーが 2 つの部分で構成されます。1 つは一般的なタスクを処理し、もう 1 つはデバイス固有のタスクを処理します。 通常、一般的な部分を Microsoft が作成し、デバイス固有の部分をデバイスの製造元が作成します。 デバイス固有の部分にはさまざまな名前があり、そのほとんどは "ミニ" という共通のプレフィックスを持ちます。 ミニドライバー モデルで使用される名前のいくつかを次に示します。
- ディスプレイ ミニポート ドライバー
- オーディオ ミニポート ドライバー
- バッテリー ミニクラス ドライバー
- Bluetooth プロトコル ドライバー
- HID ミニドライバー
- WIA ミニドライバー
- NDIS ミニポート ドライバー
- 記憶域ミニポート ドライバー
- ストリーミング ミニドライバー
ミニドライバー モデルの概要については、「ミニドライバーとドライバーのペア」を参照してください。
「デバイスとドライバーのテクノロジ」に記載されているすべてのテクノロジに専用のミニドライバー モデルがあるわけではありません。 個々のテクノロジのドキュメントによって、カーネル モード ドライバー フレームワーク (KMDF) を使用することが推奨されていたり、ユーザーモード ドライバー フレームワーク (UMDF) を使用することが推奨されていたりします。 まず、ご自身に該当するデバイス テクノロジのドキュメントを調査することが重要です。 該当するデバイス テクノロジにミニドライバー モデルがある場合は、ミニドライバー モデルを使用してください。 それ以外の場合は、UMDF、KMDF、または Windows ドライバー モデル (WDM) のどちらを使用するかに関するテクノロジ固有のドキュメントのアドバイスに従ってください。
デバイス フィルター ドライバーのドライバー モデルの選択
多くの場合、1 つの I/O 要求 (デバイスからのデータの読み取りなど) には複数のドライバーが関与します。 ドライバーはスタック (積み重なり) として階層化され、慣例的に、最初のドライバーが上に、最後のドライバーが下に来るように視覚化されます。 スタックには 1 つのファンクション ドライバーがあり、フィルター ドライバーが含まれる場合もあります。 ファンクション ドライバーとフィルター ドライバーの詳細については、「ドライバーとは」および「デバイス ノードとデバイス スタック」を参照してください。
デバイスのフィルター ドライバーを作成する準備をしている場合は、「 Device とドライバー テクノロジで説明されているテクノロジの一覧にデバイスが適合する場所を決定します。 特定のデバイス テクノロジのドキュメントに、フィルター ドライバー モデルの選択に関するガイダンスがあるかどうかを確認してください。 デバイス テクノロジのドキュメントでこのガイダンスが提供されていない場合は、まず UMDF をドライバー モデルとして使用することを検討してください。 フィルター ドライバーが UMDF で使用できないデータ構造にアクセスする必要がある場合は、ドライバー モデルとして KMDF を使用することを検討してください。 まれに、ドライバーが KMDF を介して使用できないデータ構造にアクセスする必要がある場合は、WDM をドライバー モデルとして使用します。
ソフトウェア ドライバーのドライバー モデルの選択
デバイスに関連付けられていないドライバーは、 software ドライバーと呼ばれます。 ソフトウェア ドライバーの詳細については、「 ドライバーとは」を参照してください。 ソフトウェア ドライバーはカーネル モードで実行でき、保護されたオペレーティング システム データにアクセスできるため便利です。 プロセッサのモードについては、「ユーザー モードとカーネル モード」を参照してください。
ソフトウェア ドライバーでは、2 つのオプションは KMDF とレガシ Windows NT ドライバー モデルです。 KMDF とレガシ Windows NT モデルのどちらでも、プラグ アンド プレイ (PnP) や電源管理を心配せずにドライバーを作ることができます。 そのため、ドライバーの主要なタスクに専念することができます。 KMDF では、フレームワークが PnP と電源を自動的に処理するため、PnP と電源に関係する必要はありません。 従来の Windows NT モデルでは、PnP と電源管理から完全に独立した環境でカーネル モード サービスが動作するため、PnP と電源について心配する必要はありません。
特に KMDF に慣れている場合は、KMDF を使用することをお勧めします。 ドライバーを PnP と電源管理から完全に独立したものにするには、レガシ Windows NT モデルを使ってください。 電源切り替えまたは PnP イベントを認識するソフトウェア ドライバーを記述する必要がある場合は、従来の Windows NT モデルを使用できません。KMDF を使用する必要があります。
注: 非常にまれなケースでは、PnP または電源イベントを認識するソフトウェア ドライバーを記述する必要があり、ドライバーは KMDF を介して使用できないデータにアクセスする必要があります。WDM を使用する必要があります。
ファイル システム ドライバーのドライバー モデルの選択
ファイル システム ドライバーのモデルの選択については、「ファイル システム ドライバーのサンプル」を参照してください。 ファイル システム ドライバーは複雑な場合があり、ドライバー開発の高度な概念に関する知識が必要になる場合があることに注意してください。
ファイル システム フィルター ドライバーのドライバー モデルの選択
ファイル システム フィルター ドライバーのモデルの選択については、「ファイル システム ミニフィルター ドライバー」と「ファイル システム フィルター ドライバー」を参照してください。
ファイル システム ミニフィルター ドライバーのドライバー モデルの選択
ファイル システム ミニフィルター ドライバーのモデルの選択については、「ファイル システム ミニフィルター ドライバー」を参照してください。