I have found some questions in this direction, but nothing stating the answer to this question in an obvious way. I am new to developing drivers and am confused by Microsoft's versioning system for their SDKs, WDKs and OSes.
We have a C++ project that includes drivers and has to be built for both Windows Enterprise 2016 and 2019
(both LTSC). That means Windows 10 Build 1607 and 1809
. So far so good.
My questions arousing from this are as follows:
- From what I've read now I need the exact matching SDKs for both versions and build the project twice, once targeting the 1607 SDK and once targeting the 1809 SDK. Is this correct?
- What WDK version should I use? Do I need to have several WDK versions installed side-by-side matching the exact same version numbers as the SDKs or can I just install the most recent WDK (which would enable me to use VS2019 instead of 2017, as the 1809 WDK only supports VS2017)
- How does compatability work with SDKs and WDKs and targeted Windows versions? I can't wrap my head around when problems are to be expected and what pairs of SDK + WDK work. I mean, when you install an application for Windows 10 you almost never have to look for what version it's built for - it just works, as long as you have Win10.
Right now, we are using VS2017 with the SDK and WDK for the exact same version (10.0.17763.0). Being limited to VS2017 just because we are using the WDK for the most recent LTSC version of Windows 10 feels weird though.