For many years, software developers have found implementing drivers for Microsoft Windows operating systems to be a challenging task. Until recently, the steep learning curve of the Windows Driver Model (WDM) has limited driver development to a relatively small group of specialized developers.
Windows Driver Foundation (WDF) provides a driver model that makes it easier to learn and easier to implement robust Windows drivers. WDF largely supersedes WDM and is designed to enable developers to focus on the requirements of their hardware rather than the complexities of the operating system. WDF also enhances system stability by supporting the ability to create drivers that run in user mode for several important device categories that previously required kernel-mode drivers.
With the WDF programming model, a developer can quickly implement a basic but functional driver, with WDF handling most of the event processing. The developer can then incrementally expand the scope of handled events until the driver is fully functional.
This book is designed to introduce WDF to anyone who is interested in developing Windows drivers, including software programmers with no previous driver development experience. We wrote this book in partnership with the WDF development team at Microsoft, who designed the architecture, built the frameworks, and developed the sample drivers to guide programmers. This book starts with a high-level discussion of the WDF architecture and programming model, but most of it is designed to provide a practical, sample-oriented introduction to the WDF frameworks for developing Windows drivers.
When we were designing the WDF architecture, the first and ongoing criterion we used for adding an API was if it was a "thin book" or "thick book" API.
"Thin book" meant it was both a simple API that most driver developers would use and that its use would be easy to determine based on its signature alone (such as WdfDeviceInitSetExclusive) and the documentation for it could be included in a short document like a white paper (hence, "thin").
"Thick book" meant that the API was going to be difficult to understand or rarely used, requiring the developer to delve deep into the documentation to learn how to use it.
This criterion really drove our decisions in terms of what types of APIs we exposed ("thin book") and what the frameworks did "under the hood" on behalf of the driver. Hopefully, we made the right decisions and you'll enjoy this "thick book" on how to delve deep into the frameworks.
-Doron Holan, Windows Driver Foundation Team, Microsoft