UMDF ドライバーを作成する利点

このトピックでは、カーネルモード ドライバーではなく、ユーザーモード ドライバー フレームワーク (UMDF) ドライバーを記述する利点について説明します。

UMDF ドライバーを記述すると、次の利点があります。

  • UMDF ドライバーは、実行されるプロセスのアドレス空間にのみアクセスできるため、オペレーティング システムの安定性の向上に貢献します。

  • UMDF ドライバーは LocalService アカウントで実行されるため、ユーザーのデータやシステム ファイルへのアクセスが制限されます。

  • ユーザーモード ドライバーは、カーネルモード ドライバーよりもはるかに単純な環境で動作します。 たとえば、カーネルモード ドライバーでは、IRQL、ページ フォールト、スレッド コンテキストを考慮する必要があります。 ただし、ユーザーモードでは、これらの問題は存在しません。 ユーザーモード ドライバーは、常に要求元プロセスとは異なるスレッドで実行され、常にページ フォールトを受け取ることができます。

  • UMDF バージョン 2 では、ほとんどの領域で KMDF と同等の機能が提供されます。 完全な比較については、「UMDF 2 の機能と KMDF の比較」を参照してください。

  • UMDF バージョン 2 では、KMDF と UMDF の間の変換が容易になります。 「KMDF ドライバーを UMDF 2 ドライバーに変換する方法 (またはその逆)」を参照してください 。

  • UMDF ドライバーは、ユーザーモード デバッガーを使用するか、UMDF バージョン 2 以降のカーネルモード デバッガーを使用してデバッグできます。

  • WDFKD.DLL デバッガー拡張機能コマンドは、KMDF と UMDF バージョン 2 以降で使用できます。 詳細については、「デバッガー拡張機能」を参照してください。

WDF モデル全体の基本的な目標は、インテリジェントな既定値を提供することで、デバイス ハードウェアに集中し、ほとんどのドライバーに共通するタスクを実行するコードを記述しないようにすることです。

この目標を達成するために、フレームワークは「オプトイン」ベースでドライバーを操作するように設計されています。 UMDF ドライバーを記述するときは、デバイスに影響を与えるイベントに対してのみコールバック ルーチンを提供します。 たとえば、一部のデバイスでは、電源が入った直後と電源がオフになる直前に介入が必要になります。 このようなデバイスのドライバーは、フレームワークがその時点で呼び出すコールバック関数を実装できます。

ドライバーには、デバイス固有のサポートが必要なイベントのみを処理するコードが含まれています。 その他のすべてのイベントは、フレームワークの既定で処理できます。

さらにドライバーは、デバイスが低電力状態にある間にフレームワークが要求のディスパッチを停止し、デバイスが動作可能な状態に戻った後にディスパッチを再開するように、その I/O 要求キューを構成できます。 同様に、デバイスが低電力状態の間に I/O 要求が到着した場合、フレームワークはデバイスを自動的にオンにすることができます。