UMDF ドライバーのホスト プロセス
このトピックでは、ユーザー モード ドライバー フレームワーク (UMDF) ドライバー のホスト プロセスと、他の UMDF コンポーネントと連携する方法について説明します。 これは、UMDF バージョン 1 と 2 の両方に適用されます。
ドライバー ホスト プロセス (Wudfhost.exe) は、ドライバー マネージャー サービスの子プロセスです。 Wudfhost.exeは通常、ローカル コンピューターの 最小特権を持つ LocalService アカウントで実行されます。 Wudfhost.exe のインスタンスは、フレームワーク DLL に加えて、1 つ以上の UMDF ドライバー DLL を読み込みます。 ドライバー ホスト プロセスは、ドライバー マネージャーとリフレクターの間のプロセス間通信 (IPC) を処理するランタイム環境と、I/O ディスパッチ、ドライバーの読み込み、ドライバーの階層化、スレッド プールの管理を提供します。
ドライバー マネージャーは、次のように、Wudfhost.exe の複数の同時実行インスタンスを作成できます。
UMDF ドライバーがバージョン 1.11 でビルドされ、Windows 8 で実行されている場合、既定では、ドライバー マネージャーは複数のデバイス スタックをホストできる Wudfhost の 1 つのインスタンスを作成します。 この手法は、デバイス プーリングと呼ばれます。
UMDF ドライバーがバージョン 2 でビルドされ、Windows 8.1 または Windows 10 で実行されている場合、プールも既定でオンになっています。
ドライバーが UMDF バージョン 1.9 以前でビルドされている場合、フレームワークはデバイス スタックごとにホスト プロセス (Wudfhost) の個別のインスタンスを作成します。
デバイス プーリングの情報については、「UMDF ドライバーでのデバイス プーリングの使用」を参照してください。
各 Wudfhost.exe プロセスは、独自のアドレス空間で実行されるため、アプリケーション プロセスやドライバー ホストの他のインスタンスから分離されます。 同じプロセス (デバイス プール) で実行されている UMDF ドライバーはアドレス空間を共有し、互いに分離されません。
UMDF バージョン 1 と 2 でビルドされたドライバーは、同じホスト プロセスまたは異なるホスト プロセスで同時に読み込むことができます。 たとえば、既定では、ドライバー マネージャーは、Windows 8.1 以降を実行しているコンピューター上の同じホスト プロセスで UMDF 1.11 ドライバーと UMDF 2 ドライバーを読み込みます。
ただし、同じデバイス スタックに UMDF バージョン 1 および 2 ドライバーを読み込むことはできません。 たとえば、UMDF バージョン 1 のフィルター ドライバーを UMDF バージョン 2 関数ドライバーの上に読み込むことはできません。
ドライバー ホストと他の UMDF コンポーネントの関係を示す図については、「UMDF の概要」を参照してください。