ユーザーモードドライバフレームワーク(UMDF )は、 MicrosoftのWindows Vistaオペレーティングシステムで導入されたデバイスドライバ開発プラットフォームであり、Windows XPでも利用可能です。特定の種類のデバイス用のドライバの作成を容易にします。[ 1 ]
標準デバイスドライバは、特にマルチスレッドソフトウェア環境では、非常に広範囲なシステムおよびデバイスの状態を処理する必要があるため、作成が難しい場合があります。標準ドライバはすべてカーネルに直接アクセスする際に高い権限を持つため、不適切なデバイスドライバはシステムに深刻なダメージ(ブルースクリーンエラーやデータ破損など)を与える可能性があります。ユーザーモードドライバフレームワークは、カーネルをドライバへの直接アクセスに伴う問題から隔離し、割り込みとメモリ管理のユーザーレベルで専用のアプリケーションプログラミングインターフェイスを備えた新しいクラスのドライバを提供します。エラーが発生した場合、この新しいフレームワークはシステムに影響を与えることなくドライバを即座に再起動できます。これは、システムに断続的に接続されるデバイスや、USBやFireWireなどのバス技術を介してホットスワップをサポートするデバイスに特に役立ちます。
マイクロソフトによると、UMDF ドライバーはカーネルモードドライバーよりも記述やデバッグが容易である。[ 2 ]ただし、UMDF はパフォーマンス重視のデバイスや状態管理が重要なデバイス には使用されない。
UMDF の最初のバージョンは、 2004 年 10 月 12 日にWindows Media Playerバージョン 10 の一部として出荷されました。「Crescent」というコードネームで、メディア転送プロトコルドライバーをサポートするように設計されていましたが、公開インターフェースやドキュメントは提供されていませんでした。その後、マイクロソフトは UMDF をデバイス ドライバー開発プラットフォームにすることに決定しました。[ 3 ]
UMDF ドライバーは、Microsoft のコンポーネント オブジェクト モデル(COM)に基づく DLL です。ただし、UMDF はロード、アンロード、または並行処理の制御に COM を使用しません。COM は、例えば COM のIUnknownインターフェイスを利用するなど、プログラミング パターンとしてのみ使用されます。起動時に、UMDF はDllGetClassObjectを呼び出してドライバー内のIClassFactoryインターフェイスへのポインタを取得し、IClassFactory インターフェイスのCreateInstanceメソッドを使用してドライバー コールバック オブジェクトのインスタンスを作成します。
ドライバオブジェクトは、フレームワークが提供するIWDFDriverインターフェイスのインスタンスです。ドライバは、 IDriverEntry COMインターフェイスを介して一連のコールバックを提供します。このインターフェイスは、ドライバのカスタマイズを行うための主要なエントリポイントです。