User-Mode Driver Framework (UMDF) は、マイクロソフト社のWindows Vistaオペレーティングシステム (operating system, OS) で初めて導入されたデバイスドライバーの開発プラットフォームである。Windows XP向けにも利用可能である。これにより、デバイスの特定のクラスのドライバーの作成が容易になる。

概要 標準のデバイスドライバーは、特にマルチスレッドのソフトウェア環境では、非常に広範囲のシステムおよびデバイス状態を処理する必要があるため、書き難いことが多い。カーネルに直接アクセスする際、すべての標準ドライバーは高い権限を持っているので、ひどい記述のデバイスドライバーは、システムに重大な損傷を引き起こす可能性がある(例えばBSODやデータ破損)。ユーザーレベルでの割り込みやメモリ管理において専用のアプリケーションプログラミングインターフェイス (application programming interface, API) で新しいドライバークラスを提供する代わりに、UMDFは、ドライバー直接アクセスの問題からカーネルを保護する。エラーが発生した場合、この新しいフレームワークは、システムに影響を与えることなく、即座にドライバーを再起動することができる。これは、断続的にシステムに接続されたり、USBやFirewireなどのようなバス技術によるホットスワップをサポートしているデバイスに対して特に有用である。

マイクロソフトによると、UMDFドライバーは、カーネルモードドライバーよりも記述やデバッグが簡単であるとされている。ただしUMDFは、パフォーマンスを重視するデバイスや高度にステートフルなデバイスには使用されないであろう。

UMDFの最初のバージョンは2004年10月12日にWindows Media Playerバージョン10の一部として出荷された。コードネーム「Crescent」は、メディア転送プロトコル (Media Transfer Protocol) をサポートするように設計され、一般向けのインターフェイスやドキュメントは提供されていなかった。後に、マイクロソフトは、UMDFをデバイスドライバーの開発プラットフォームに転換することを決定した。

バージョン履歴 UMDFのバージョン履歴およびサポート対象となるWindowsバージョンは下記となっているUMDF Version History (Windows Drivers)。 + UMDFのバージョン履歴 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++言語を使ってドライバー開発を行なうことができるGetting started with Windows drivers (Windows Drivers)。

関連項目 Windows Driver Model (WDM) Windows Driver Foundation (WDF) Kernel-Mode Driver Framework (KMDF)

脚注

外部リンク Official website Windows Driver Frameworks (Windows Drivers) Peter Wieland's blog – developer lead on the UMDF team at Microsoft