Windows Driver Foundation

Windows Driver Frameworks（WDF）は Microsoft Windows 用デバイスドライバ開発に用いられるマイクロソフト製のフレームワークである。

Windows Driver Frameworks (WDF) はWindowsデバイスドライバの標準インターフェースである Windows Driver Model (WDM) をラップ・抽象化し、よりシンプルで高機能な上位インターフェースとライブラリを提供するフレームワークである"Windows Driver Frameworks (WDF) is a wrapper around Microsoft Windows Driver Model (WDM) interfaces. Although the framework simplifies many WDM concepts and hides others completely" WDM Concepts for WDF Drivers. Windows Hardware Developer.。WDF を構成する主要ツールは Kernel-Mode Driver Framework (KMDF) と User-Mode Driver Framework (UMDF) である。これらのツールキットは、Windows のドライバ開発のための新しいオブジェクト指向プログラミングモデルを提供する。フレームワークの主要な目標は "Conceptual Scalability"（概念的スケーラビリティ）であり、ドライバ開発者が少数の単純な概念を学ぶだけで簡単なドライバを書けるようになり、さらに学ぶに従ってより複雑な機能のドライバを書けるようになることを意味する。これは、単純なドライバを書く場合にも複雑な技術的詳細に精通している必要がある Windows Driver Model (WDM) とは著しく異なる。

Conceptual Scalability を実現する鍵の一部は、KMDF と UMDF が "opt-in" モデルだという点にある。このモデルでは、模範的なドライバのデフォルトの動作を拡張したり、オーバーライドすることが可能である。これは、WDM でドライバの動作のあらゆる面を開発者が書いて実装する必要があったのとは対照的である。

Windows 2000 で登場し、以降の Windows 向けのデバイスドライバ開発のために用いられている。かつては Windows Driver Foundation (おなじく WDF) という名称であった。

 種類 
このフレームワークには2つのバリエーションがある。
 Kernel-Mode Driver Framework - 標準的なカーネルモードのデバイスドライバ作成のフレームワーク
 User-Mode Driver Framework - ユーザーモードで動作可能なデバイスドライバ作成のフレームワーク

基盤となるプログラミングモデルは共通である。しかし、カーネルモードのフレームワークはC言語のインタフェースを使い、ユーザーモードのフレームワークはC++のインタフェースに基づき、COMの軽量版に基づいている。

WDF にはドライバ開発者用の静的検証ツールも含まれている。これらツールは、よくあるコード上の問題やテストでは検出が難しいコード上の問題を特定することができる。

 ツール 
 Static Driver Verifier (SDV) - コードの呼び出し関係を検証する。複数の関数呼び出しや複数の操作にまたがった問題を検出できる。ドライバがほぼ完成した時点で利用できるよう設計されている。
 PREFast for Drivers (PFD) - SDV よりも浅い検証を行う。バッファオーバーランのチェックなど、よくあるバグやドライバ特有のバグを検出する。個々の関数内のコードを扱うので、ドライバ開発の初期から利用できる。

 脚注 

 外部リンク 
 Windows Driver Foundation Homepage
 Windows Driver Frameworks (Windows Drivers)
 Windows Driver Kit
 Download kits and tools - Windows Hardware Dev Center
 OSR Online WDF、KMDFなど Windows におけるドライバ開発に関する各種記事がある。
 Introducing Windows Driver Framework, by Walter Oney（Windowsドライバ開発の）
 Building and deploying a basic WDF Kernel Mode Driver, CodeProject
 Developing a WDF USB Kernel Mode Driver for the OSR USB FX2, CodeProject

Category:デバイスドライバ
Category:マイクロソフトのAPI