UMDF の概要

ユーザー モード ドライバー フレームワーク (UMDF) アーキテクチャを使用すると、ハードウェアのユーザー モード ドライバーを作成できます。ユーザー モード ドライバーを使用すると、カーネル モード ドライバーに比べてオペレーティング システムのセキュリティと安定性が向上します。カーネル モード ドライバーがクラッシュするとシステム全体がクラッシュしますが、ユーザー モード ドライバーがクラッシュしても、クラッシュするのは、ドライバーをホストしているプロセスだけです。システムの残りの部分の安定性には影響しません。UMDF アーキテクチャは、下記の各コンポーネントで構成されます。

  • UMDF ドライバー

    UMDF ドライバーは、ハードウェアの機能を抽象化します。ユーザー モード環境で実行され、さまざまなサービスにアクセスできます。UMDF ドライバーは、デバイスを管理するドライバーのスタックの一部として機能します。ファイル システム ドライバー、ディスプレイ ドライバー、およびプリンター ドライバーを UMDF ドライバーにすることはできません。

  • ドライバー ホスト プロセス

    ドライバー ホスト プロセスには、UMDF ドライバー、フレームワーク、およびフレームワークとドライバーのランタイム環境が含まれます。ドライバー ホスト プロセスは、アプリケーション プロセスや他のドライバー ホスト プロセスから分離されており、LocalService アカウントで実行されます。各デバイスに 1 つずつ、そのデバイスの関数ドライバーとフィルター ドライバーから成るドライバー スタックが存在します。スタックは、異なるセッションで実行されている複数のアプリケーションからアクセスできるため、デバイスへのアクセスを一元的に調整できます。ランタイム環境は、I/O ディスパッチ、ドライバーの読み込み、ドライバー階層化、スレッド プール、およびリフレクターとドライバー マネージャーからのメッセージを処理します。

  • リフレクター

    リフレクターは、アプリケーションとドライバー ホスト プロセスとの通信を可能にする Microsoft Windows Driver Model (WDM) カーネル モード ドライバーです。デバイス インスタンスごとに個別のデバイス オブジェクトを作成し、各デバイス インスタンスに関連付けられたプラグ アンド プレイ (PnP) 要求や電源 I/O 要求を処理します。アプリケーションとドライバー ホスト プロセスとの通信はすべてリフレクターを介して行われます。

  • ドライバー マネージャー

    ドライバー マネージャーは、リフレクターの拡張機能のようなもので、各ドライバー ホスト プロセス (ドライバー マネージャーの子プロセス) を起動して、その情報を追跡します。ドライバー マネージャーは各システムに 1 つだけ存在します。最初の UMDF デバイスがインストールされたときに起動して、それ以降、システムで実行されます。

UMDF は、カーネル モード ドライバー フレームワーク (KMDF) と同様に、UMDF ドライバーにイベント駆動型のドライバー モデルを提供します。UMDF ドライバーは、ドライバー ホスト プロセスにスタック可能です。UMDF ドライバーは、PnP デバイス ツリーに列挙されているデバイス ノードのために読み込まれます。デバイスに要求が送信されると、その要求は、デバイス スタックの一番上から順番に下位へと転送されて、最終的に物理デバイスに到達します。その過程で、スタックの各レイヤーが要求を処理します。

スタックの各ドライバーには、上位のドライバーから要求を受け取るための標準のインターフェイスが用意されています。要求は、自己完結型の非同期要求パケットとして、スタックの下位に転送されていきます。要求パケットは、ドライバーに受信されるたびに、ドライバーの要求キューに入れられて処理を待ちます。各ドライバーでの処理が完了すると、さらなる処理のために次のドライバー レイヤーに転送されるか、完了されます。

デバイス スタックを複数のプロセスに分割することはできません。特定のデバイスの関数ドライバーとフィルター ドライバーはすべて同じドライバー ホスト プロセスで実行される必要があります。