このセクションでは、User-Mode Driver Framework (UMDF) について説明し、UMDF バージョン 1 と UMDF 2 の違いについて詳しく説明します。 また、UMDF に関するアーキテクチャ情報の概要も提供します。 このセクションでは、UMDF ドライバーがニーズに適しているかどうかを判断し、使用する UMDF バージョンを決定します。
Windows Driver Framework (WDF) には、ユーザー モード ドライバーを作成するためのフレームワークである UMDF が含まれています。 Kernel-Mode Driver Framework (KMDF) と同様に、UMDF は WDM から抽象化レイヤーを提供し、プラグ アンド プレイ (PnP) と電源管理機能の多くを処理し、ドライバーが特定の機能とイベント処理をオプトインできるようにします。
Windows 8.1 以降では、UMDF バージョン 1 と 2 の 2 つのメジャー バージョンがあります。 UMDF バージョン 1.11 (1 ドット 11) は UMDF バージョン 1 の最新バージョンであり、UMDF 2 が登場する前の最終バージョンです。 完全なバージョン情報とオペレーティング システムの関連性を示す表については、「#B0 UMDF バージョン履歴 #A1 を参照してください。
UMDF バージョン 1 を使用してドライバーを記述するには、COM プログラミング モデルを使用して C++ コードを記述する必要があります。 UMDF バージョン 2 は KMDF と同じ概念ドライバー プログラミング モデルに基づいていますが、UMDF 1 は、さまざまなコンポーネント、デバイス ドライバー インターフェイス (DDI)、およびデータ構造を持つモデルを実装します。 すべての新しい 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 の間には大きな共通点がありますが、1 つのフレームワークまたは他のフレームワークでのみ使用できる機能はまだ少量です。 詳細については、「UMDF 2 機能と KMDF の比較」を参照してください。 すべての UMDF 2 および KMDF コールバックとメソッド、それらが適用されるフレームワークの一覧については、WDF コールバックとメソッドの概要をご参照ください。 場合によっては、メソッドの構造体メンバーまたはパラメーターは、1 つのフレームワークまたはもう 1 つのフレームワークにのみ適用されます。 ドキュメントでは、対応する参照ページでのこれらの違いについて説明します。