User-Mode Driver Framework (UMDF) は、マイクロソフト社のWindows Vistaオペレーティングシステム (operating system, OS) で初めて導入されたデバイスドライバーの開発プラットフォームである。Windows XP向けにも利用可能である。これにより、デバイスの特定のクラスのドライバーの作成が容易になる。
標準のデバイスドライバーは、特にマルチスレッドのソフトウェア環境では、非常に広範囲のシステムおよびデバイス状態を処理する必要があるため、書き難いことが多い。カーネルに直接アクセスする際、すべての標準ドライバーは高い権限を持っているので、ひどい記述のデバイスドライバーは、システムに重大な損傷を引き起こす可能性がある(例えばBSODやデータ破損)。ユーザーレベルでの割り込みやメモリ管理において専用のアプリケーションプログラミングインターフェイス (application programming interface, API) で新しいドライバークラスを提供する代わりに、UMDFは、ドライバー直接アクセスの問題からカーネルを保護する。エラーが発生した場合、この新しいフレームワークは、システムに影響を与えることなく、即座にドライバーを再起動することができる。これは、断続的にシステムに接続されたり、USBやFirewireなどのようなバス技術によるホットスワップをサポートしているデバイスに対して特に有用である。
マイクロソフトによると、UMDFドライバーは、カーネルモードドライバーよりも記述やデバッグが簡単であるとされている[1]。ただしUMDFは、パフォーマンスを重視するデバイスや高度にステートフルなデバイスには使用されないであろう。
UMDFの最初のバージョンは2004年10月12日にWindows Media Playerバージョン10の一部として出荷された。コードネーム「Crescent」は、メディア転送プロトコル (Media Transfer Protocol) をサポートするように設計され、一般向けのインターフェイスやドキュメントは提供されていなかった。後に、マイクロソフトは、UMDFをデバイスドライバーの開発プラットフォームに転換することを決定した[2]。
| UMDFバージョン | リリース手段 | 搭載されているWindowsバージョン | 動作可能環境 |
|---|---|---|---|
| 2.31 | Windows 10 (Version 2004)WDK | Windows 10 (Version 2004) | Windows 10 バージョン 2004 以降 |
| 2.29 | WDK でリリースされていません | Windows 10 (Version 1903) | Windows 10 バージョン 1903 以降 |
| 2.27 | Windows 10 (Version 1809)WDK | Windows 10 (Version 1809) | Windows 10 バージョン 1809 以降 |
| 2.25 | Windows 10 (Version 1803)WDK | Windows 10 (Version 1803) | Windows 10 バージョン 1803 以降 |
| 2.23 | Windows 10 (Version 1709)WDK | Windows 10 (Version 1709) | Windows 10 バージョン 1709 以降 |
| 2.21 | Windows 10 (Version 1703)WDK | Windows 10 (Version 1703) | Windows 10 バージョン 1703 以降 |
| 2.19 | Windows 10 (Version 1607)WDK | Windows 10 (Version 1607) | デスクトップ向けWindows 10、Windows 10 Mobile、Windows 10 IoT Core、Windows Server 2016 TP |
| 2.17 | Windows 10 (Version 1511)WDK | Windows 10 (Version 1511) | デスクトップ向けWindows 10、Windows 10 Mobile、Windows 10 IoT Core、Windows Server 2016 TP |
| 2.15 | Windows 10 WDK | Windows 10 | デスクトップ向けWindows 10、Windows 10 Mobile、Windows 10 IoT Core、Windows Server 2016 TP |
| 2.0 | Windows 8.1 WDK | Windows 8.1 | Windows 8.1以降 |
| 1.11 | Windows 8 WDK | Windows 8 | Windows Vista以降 |
| 1.9 | Windows 7 WDK | Windows 7 | Windows XP以降 |
| 1.7 | Windows Server 2008 WDK | Windows Vista SP1,Windows Server 2008 | Windows XP以降 |
| 1.5 | Windows Vista WDK | Windows Vista | Windows XP以降 |
UMDF 1.0のドライバーは、マイクロソフトのComponent Object Model (COM) に基づいたDLLである。ただし、UMDFはロード、アンロード、または同時並行性 (concurrency) を制御するためにCOMを使用しているわけではない。プログラミングパターンとしてのみCOMを使用している。例えば、COMのIUnknownインターフェイスの利用などである。起動時に、UMDFドライバーはDllGetClassObjectを呼び出してIClassFactoryインターフェイスへのポインタを取得し、その後IClassFactoryインターフェイスのCreateInstanceメソッドを使用してドライバーコールバックオブジェクトのインスタンスを作成する。
ドライバーオブジェクトは、フレームワークが提供するIWDFDriverインターフェイスのインスタンスである。ドライバーは、IDriverEntryインターフェイスを介して、コールバックのセットを提供する。これはドライバーのカスタマイズのための主要なエントリポイントとなる。
Windowsドライバー開発には通例C言語が用いられるが、UMDFではC++言語を使ってドライバー開発を行なうことができる[6]。
マイクロソフトのAPIとフレームワーク | |
|---|---|
| グラフィック | |
| オーディオ | |
| マルチメディア | |
| ウェブ | |
| データアクセス | |
| ネットワーク | |
| コミュニケーション | |
| 管理 | |
| コンポーネントモデル | |
| ライブラリ | |
| デバイスドライバ | |
| セキュリティ | |
| .NET | |
| ソフトウェアファクトリー | |
| IPC | |
| アクセシビリティ | |
テキストと多言語 サポート | |
| 人工知能 | |