UMDF の概要

このセクションでは、ユーザーモードドライバーフレームワーク(UMDF)、UMDFバージョン1と2の違いについて詳しく説明します。 また、UMDF に関する高レベルのアーキテクチャ情報も提供します。 このセクションを使用して、UMDF ドライバーがニーズにとって適切な選択であるかどうかを判断し、使用する UMDF バージョンを決定します。

Windows ドライバー フレームワーク (WDF) には、ユーザー モード ドライバーを作成するためのフレームワークである UMDF が含まれています。 カーネル モード ドライバー フレームワーク (KMDF) と同様に、UMDF は WDM からの抽象化レイヤーを提供し、プラグ アンド プレイ (PnP) と電源管理機能の多くを処理し、ドライバーが特定の機能とイベント処理を選択できるようにします。

Windows 8.1 以降では、UMDFにはバージョン 1 と 2 の 2 つの主要なバージョンがあります。 UMDF バージョン 1.11 (ワンドットイレブン) は UMDF バージョン 1 の最新バージョンであり、UMDF 2 が登場する前の最終バージョンです。 完全なバージョン情報とオペレーティング システムの関連性を示す表については、UMDF バージョン履歴をご参照ください。

UMDF バージョン 1 を使用してドライバーを書くには、COM プログラミング モデルを使用して C++ コードを書く必要があります。 UMDF バージョン 2 は KMDF と同じコンセプトのドライバー プログラミング モデルに基づいていますが、UMDF 1 は、さまざまなコンポーネント、デバイス ドライバー インターフェイス (DDIs)、およびデータ構造を持つモデルを実装します。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 に新しい機能は追加されておらず、Windows 10 および Windows 11 の新しいバージョンでは UMDF 1 へのサポートが制限されています。

これに対し、UMDF バージョン 2 以降では、KMDF ドライバーで使用できる多くのメソッドを呼び出す C プログラミング言語で UMDF ドライバーを書くことができます。 UMDF バージョン 2 と KMDF の間で共有されるすべてのインターフェイスは、同じ名前、パラメーター、および構造定義を持ちます。 ドライバーが共有機能のみを使用したり、1 つのフレームワークでのみサポートされている呼び出しの周りに条件付きマクロを使用したりする場合は、UMDF または KMDF のいずれかでコンパイルできる 1 つのドライバーを書くことができます。 詳細については、KMDFドライバーから UMDF ドライバーを生成する方法をご参照ください。

UMDF 2 と KMDF 間には大きな共通点がありますが、どちらか一方のフレームワークでしか利用できない機能はまだ少数あります。 詳細については、UMDF 2 機能と KMDF の比較をご参照ください。 すべての UMDF 2 および KMDF コールバックとメソッドのリスト、およびそれらが適用されるフレームワークについては、WDF コールバックとメソッドの概要をご参照ください。 場合によっては、メソッドの構造メンバーまたはパラメーターは、どちらか一方のフレームワークでしか適用できないことがあります。 ドキュメントでは、対応するリファレンス ページでこれらの違いについて説明します。