Windows Driver Foundation
Windows Driver Foundation (WDF) is a set of Microsoft tools that aid in the creation of device drivers for Windows 2000 and later versions of Windows. Windows Driver Foundation was introduced with Windows Vista and available downlevel for Windows 2000 and Windows XP. It complements Windows Driver Model.
The primary tools that comprise WDF are the Kernel Mode Driver Framework (KMDF) and User Mode Driver Framework (UMDF). These tool kits provide a new object-oriented programming model for Windows driver development. The primary goal of the Frameworks is "conceptual scalability", that is the characteristics of only requiring a driver developer to learn a few simple concepts to be able to write a simple driver, and to be able to incrementally learn more when more complex driver features are required. This differs markedly from the Windows Driver Model (WDM) which requires driver developers to be fully familiar with many complex technical details before writing even a simple driver.
Part of the key to achieving conceptual scalability is that KMDF and UMDF use an "opt-in" model. This model allows the developer to extend and override the default behavior of a canonical "good driver". This is in contrast to the older Windows Driver Model that depends on the driver writer to implement all aspects of the driver's behavior.
The Framework comes in two varieties:
- The Kernel-Mode Driver Framework, for writing standard kernel-mode device drivers.
- The User-Mode Driver Framework, for writing certain classes of driver that can run in user-mode.
These share the underlying programming model. However, the kernel-mode framework uses a flat C API while the user-mode framework is based on C++ and a light version of COM.
WDF also includes a set of static verification tools for use by driver writers. These tools examine driver code for common errors and/or simulate the code of a driver in order to identify problems that are both difficult to detect and difficult to test for.
The Static Driver Verifier (SDV) is capable of performing very deep validation of code paths across functions and even through calls into WDM. SDV can find driver problems that span multiple function calls and even multiple operations. SDV is designed to be run when the driver is nearing completion. SDV analyzes only C files. C++ is not supported.
PREFast for Drivers (PFD) performs rather shallow analysis of driver operations. PFD can check for buffer overruns and other common programming errors likewise a number of driver specific problems. Because its scope of operation is within a single function, PFD's run time is much shorter than SDV. Therefore, PFD can be used throughout the driver development process. PREFast scans each function as an isolated unit. It does not do inter-procedural analysis. 
|Operating system||WDF 1.0||WDF 1.1||WDF 1.5||WDF 1.7||WDF 1.9||WDF 1.11||WDF 1.13|
|Windows Server 2008||no||no||no||yes||yes||yes||?|
|Windows Server 2003||yes||yes||yes||yes||yes||?||?|
- Windows Driver Foundation Homepage
- Developing Drivers with the Windows Driver Foundation by Orwick and Smith
- Windows Driver Kit
-  OSR Online, including many articles about WDF, KMDF, and Windows driver development.
- Introducing Windows Driver Framework, written by well-known Windows driver developer, Walter Oney.
- Building and deploying a basic WDF Kernel Mode Driver, CodeProject
- Developing a WDF USB Kernel Mode Driver for the OSR USB FX2, CodeProject
- KMDF Version History, MSDN