Windows 8 ushered-in a new era of Windows mobile devices, including phones and tablets. Windows 10 promises to converge these systems further, and to extend Windows to even more resource and cost constrained devices and the Internet of Things (IoT). Support for x86 and ARM will span all these categories. It seems we really are on the brink of having Windows Everywhere.
At other conferences such as Tech Ed, we’ve already heard talk of Universal Apps that you’ll be able to build once per architecture, but run across all editions of Windows. But, until now we hadn’t heard anything about how this applies to drivers.
At WinHEC in Shenzhen today, Microsoft announced support for Universal Drivers. Like Universal Apps, these drivers will run on all Windows editions (Desktop, Mobile, IoT). You build one binary per architecture. You can test on any edition of Windows, and still be reasonably confident that your properly written Universal Driver will work on all editions of Windows.
How do you know that your driver will work on multiple editions of Windows without testing? Well, most kernel-mode drivers are fully backwards compatible. For user-mode drivers, the WDK includes a new tool (APIValidator.exe) that will run as part of the post build process for universal drivers. APIValidator flags APIs that are used in the driver project that aren’t part of the Universal platform. Still, if it was me, I’d want to do at least some small amount of testing on each platform to be completely sure.
To support the development of Universal Drivers, the WDK has been significantly enhanced. Starting in Windows 10, there is one WDK for all Windows driver development. That single WDK will support the development of drivers targeting x86/x64 and ARM processors and all editions of Windows. To create a Universal Driver, you can just select “Universal” for your driver’s Target Platform. The WDK will do the rest.
The Windows 10 WDK will work with Visual Studio 2015, and both the WDK and Visual Studio will continue to be free for driver development. And, according to the WDK PMs, it will also be possible to install and support multiple versions of the WDK side-by-side (though we haven’t seen this feature in operation, and we’re not exactly sure how it will work).