Maybe you’re like me, and you missed the memo that must have been circulated two years ago. But I just learned, via a thread on NTDEV started by long-time driver developer Ed Dekker that KMDF versions 1.13, 1.15, and 1.17 cannot be used on older versions of Windows.
Throughout the history of WDF, devs have had the option of writing drivers to whichever version of the WDF Framework that they chose. They could then ship their driver along with that version of the Framework packaged in a “CoInstaller DLL.” If the version of WDF used by the driver was newer than the version that was available on the system on which the driver was being installed, the CoInstaller would update the version on the system.
What was nice about this is that it would allow a WDF driver to use certain features that were available in a newer version of the Framework even on older versions of Windows. What was bad about it is that (a) Updating the version of WDF required a reboot, and (b) the system on which the driver was being installed had to support co-installers. Starting with Windows 8, not every system that runs Windows supports installing drivers using co-installers (think, IoT Core for one example).
However, as community leader Tim Roberts points out in the previously referenced NTDEV thread, there’s a table in MSDN that very clearly notes that:
- KMDF V1.13, which was released on Windows 8.1, will only run on Windows 8.1 or later;
- KMDF V1.15, which was released on Windows 10 (TH1), will only run on Windows 10 or later;
- KMDF V1.17, which was released on Windows 10 (TH2), will only run on Windows 10 TH2 or later.
Wait! Don’t go nuts. You can still go UP level without any problem. So, for example, you can write your driver using KMDF V1.11 and install it without incident on Windows 8.1 on which V1.13 is installed. This is, of course, what’s really important. The ability to go down-level was always merely a convenience.
And if you want to look at this more from the “glass half full” perspective, the good news is that if you target your driver to Windows 8.1 or later you don’t have to ship-around the co-installer in your driver package anymore.
So, given that at least one person here at OSR is writing a WDF driver every day of every week, why didn’t we notice this change until Mr. Dekker happened to ask his question on NTDEV? Well, except for the architectural concept, it’s not clear how much this matters in the real world. In practice, we’ve built drivers that target every reasonably old OS that KMDF supports (defined as Windows XP and later) and used KMDF V1.11 with a co-installer, or else we’ve built drivers that target Windows 10 or later and used KMDF V1.15 without a co-installer.
Not to mention, as Mr. Roberts so succinctly put it in that same NTDEV thread:
I haven’t seen anything in KMDF beyond 1.11 that compels me to switch.
Yeah. There’s that, too.
So now you know! Truth be told, I’m kinda happy to get rid of those co-installers anyways.