WDK versions and MSFT madness

Just because I like to complain.

For a while now MSFT has stopped providing access to the various releases
of the “Windows 10 SDK” and WIndows 10 WDK" and instead provides only a
link to the latest version. This appears to be regardless of the state of
the latest version.

For example, currently The SDK is 10.0.15063.400 and it’s download page
clearly notes that
Note: Windows 10 app development targeting Windows 10 Creators Update
requires Visual Studio 2017. This SDK will not be discovered by previous
versions of Visual Studio.
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

No link is provided to download earlier versions.

If one goes to the WDK download page, which also only offers WDK
10.0.15063, you get the following information:
Install Visual Studio 2015 with update 3; the Windows SDK for Windows 10,
version 1703; and the WDK for Windows 10, version 1703

All four editions of Visual Studio 2015 support driver development.

Important: The WDK is not yet compatible with Visual Studio 2017. Use
Visual Studio 2015 for driver development.

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

So: SDK claims 2015 not supported 2017 required. WDK claims 2017 not
support, 2015 required.
We ran into a header version bug on our build servers, which were using
SDK/WDK 10.0.10586 and our build devs moved the server forward to
10.0.15063 which promptly broke our builds.

To resolve this we had to find archived versions of SDK/WDK 10.0.14393,
which versions both resolve the header version bug and work with VS2015.

Hey MSFT, hows about keeping released versions of SDK/WDK available on your
servers instead of disappearing them whenever the mood strikes?

Mark Roddy

Is there an upvote button? Getting a development and build environment setup is certifiably ridiculous. For those folks that need to maintain reproducible builds (with their build tools) it’d be real handy to have a driver dev environment that could be easily archived.

It’s somewhat tricky with licensed software, but it’s not UNfeasible to consider something like a driver dev Windows container that would have the WDK and necessary tools to build/test baked-in. The full-blown IDE for Visual Studio would be run natively on your host machine and would be licensed as normal. I’m sure there are a million ways to skin that cat.

The issue remains GROSSLY OVERLOOKED at this point in time though. Getting the appropriate tools to author, build, and release drivers in a reasonable fashion is an afterthought. Microsoft has gone to great lengths to try to provide tools to help minimize “the industry” from releasing poorly tested code (WHQL signing, EV certs, PREfast, SDV, etc.) in an attempt to reduce BSOD failures that give MS a bad rap. They’ve seen a need to help get driver development integrated into the normal development toolset that has been established by user-space developers and the usage of Visual Studio to build/release drivers has been generally well-received. However, there’s a big gap when it comes to making reproducible build environments setup easily. When I unboard a new team member, or need to stand-up another machine to facilitate our nightly builds, it’s a damn nightmare. Get this version of this, and that version of the other, but NOT that version because they don’t work together. Oh and you can’t get the version you need from their website, so install it from over here, but make sure you install this FIRST or it will NOT work. C’mon man. That’s non-sense! What’s worse is when I have to evaluate a potential defect in a legacy driver. Rebuilding a particular release to make incremental changes to find root cause is a whole nother level of silliness with saved VMs, Vagrant scripts,and saved ISOs.

Further investigation *might* indicate that the only issue with 15063 is
that inf2cat got disappeared. Why would inf2cat get disappeared? This is
sort of essential.

Mark Roddy

On Mon, Jun 5, 2017 at 1:32 PM, wrote:

> Is there an upvote button? Getting a development and build environment
> setup is certifiably ridiculous. For those folks that need to maintain
> reproducible builds (with their build tools) it’d be real handy to have a
> driver dev environment that could be easily archived.
>
> It’s somewhat tricky with licensed software, but it’s not UNfeasible to
> consider something like a driver dev Windows container that would have the
> WDK and necessary tools to build/test baked-in. The full-blown IDE for
> Visual Studio would be run natively on your host machine and would be
> licensed as normal. I’m sure there are a million ways to skin that cat.
>
> The issue remains GROSSLY OVERLOOKED at this point in time though.
> Getting the appropriate tools to author, build, and release drivers in a
> reasonable fashion is an afterthought. Microsoft has gone to great lengths
> to try to provide tools to help minimize “the industry” from releasing
> poorly tested code (WHQL signing, EV certs, PREfast, SDV, etc.) in an
> attempt to reduce BSOD failures that give MS a bad rap. They’ve seen a
> need to help get driver development integrated into the normal development
> toolset that has been established by user-space developers and the usage of
> Visual Studio to build/release drivers has been generally well-received.
> However, there’s a big gap when it comes to making reproducible build
> environments setup easily. When I unboard a new team member, or need to
> stand-up another machine to facilitate our nightly builds, it’s a damn
> nightmare. Get this version of this, and that version of the other, but
> NOT that version because they don’t work together. Oh and you can’t get
> the version you need from their website, so install it from over here, but
> make sure you install this FIRST or it will NOT work. C’mon man. That’s
> non-sense! What’s worse is when I have to evaluate a potential defect in a
> legacy driver. Rebuilding a particular release to make incremental changes
> to find root cause is a whole nother level of silliness with saved VMs,
> Vagrant scripts,and saved ISOs.
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:>

I had the Inf2cat issue as well. You need to repair the product to get it back.

Now about the WDK versions, I suggest you always keep a safe copy of the exec (wdksetup.exe) and run it with the /LAYOUT switch so that the WDK is downloaded to a directory of your choice.

Yes we did archive the thing, as I said, so we were not shit out of luck.
My complaint is more general. Consider some new project just being spun up,
they would get hammered with the malfunction and be left figuring out how
to repair it after they managed to isolate it to the WDK itself rather than
their own processes. And then they would be stuck with a build system
creation recipe that has something like “install the wdk and then repair
the installation” as one of the steps.

Instead if the MSFT web site offered “latest” and then a list of older
releases, kind of like they used to for the last 20 years or so, kind of
like everyone else does, setting up a new build system would be a more
reliable process.

Mark Roddy

On Mon, Jun 5, 2017 at 3:09 PM, wrote:

> I had the Inf2cat issue as well. You need to repair the product to get it
> back.
>
>
>
> Now about the WDK versions, I suggest you always keep a safe copy of the
> exec (wdksetup.exe) and run it with the /LAYOUT switch so that the WDK is
> downloaded to a directory of your choice.
>
>
>
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:>

A reproducible driver build environment is REAL easy, use the EWDK! It can be installed with an unzip, and/or checked into your version control system. The exact msbuild projects you create in VS2015 run perfectly in the EWDK. It’s the same underlying compiler and build engine, just no gui. You can run code analysis/SDV too, from a script if so desired. The EWDK is also free to download, so there are no licensing issues.

I also suggest developers still use VS2015/WDK manually installed on their workstation for unofficial builds and utility tasks like creating a new project with the wizard. This requires a valid license per user.

I had a non-trivial driver project (30K sloc) that I spent 18 months writing with VS0215/WDK. It took very little time to write a powershell script that consistently ran the build using the EWDK on the exact same project file. I could do my private developers builds by punching the build button in VS, and could run the script to make a real build for QA/Release. Real package builds need to do things like stamp version numbers, put things in zip files, and save symbols to symbol servers.

The non-obvious thing you have to do to use powershell for build scripts is you have to import the EWDK environment settings. There is a little tools that runs a .bat/.cmd script and saves all the environment variables into the powershell environment. Once you do that, you can just do everything in powershell. It takes a little Googling to find how to run SDV builds from a command line too. These are all non-problems after you have done them once.

Jan

On 6/5/17, 10:32 AM, “xxxxx@lists.osr.com on behalf of xxxxx@hotmail.com” wrote:

Is there an upvote button? Getting a development and build environment setup is certifiably ridiculous. For those folks that need to maintain reproducible builds (with their build tools) it’d be real handy to have a driver dev environment that could be easily archived.

It’s somewhat tricky with licensed software, but it’s not UNfeasible to consider something like a driver dev Windows container that would have the WDK and necessary tools to build/test baked-in. The full-blown IDE for Visual Studio would be run natively on your host machine and would be licensed as normal. I’m sure there are a million ways to skin that cat.

The issue remains GROSSLY OVERLOOKED at this point in time though. Getting the appropriate tools to author, build, and release drivers in a reasonable fashion is an afterthought. Microsoft has gone to great lengths to try to provide tools to help minimize “the industry” from releasing poorly tested code (WHQL signing, EV certs, PREfast, SDV, etc.) in an attempt to reduce BSOD failures that give MS a bad rap. They’ve seen a need to help get driver development integrated into the normal development toolset that has been established by user-space developers and the usage of Visual Studio to build/release drivers has been generally well-received. However, there’s a big gap when it comes to making reproducible build environments setup easily. When I unboard a new team member, or need to stand-up another machine to facilitate our nightly builds, it’s a damn nightmare. Get this version of this, and that version of the other, but NOT that version because they don’t work together. Oh and you can’t get the version you need from their website, so install it from over here, but make sure you install this FIRST or it will NOT work. C’mon man. That’s non-sense! What’s worse is when I have to evaluate a potential defect in a legacy driver. Rebuilding a particular release to make incremental changes to find root cause is a whole nother level of silliness with saved VMs, Vagrant scripts,and saved ISOs.


NTDEV is sponsored by OSR

Visit the list online at: http:

MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
Details at http:

To unsubscribe, visit the List Server section of OSR Online at http:</http:></http:></http:>

The EWDK does not really support applications. So in a non-trivial product
that combines services applications installers drives etc. it is a
difficult choice.

Mark Roddy

On Mon, Jun 5, 2017 at 8:31 PM, Jan Bottorff wrote:

> A reproducible driver build environment is REAL easy, use the EWDK! It can
> be installed with an unzip, and/or checked into your version control
> system. The exact msbuild projects you create in VS2015 run perfectly in
> the EWDK. It’s the same underlying compiler and build engine, just no gui.
> You can run code analysis/SDV too, from a script if so desired. The EWDK is
> also free to download, so there are no licensing issues.
>
> I also suggest developers still use VS2015/WDK manually installed on their
> workstation for unofficial builds and utility tasks like creating a new
> project with the wizard. This requires a valid license per user.
>
> I had a non-trivial driver project (30K sloc) that I spent 18 months
> writing with VS0215/WDK. It took very little time to write a powershell
> script that consistently ran the build using the EWDK on the exact same
> project file. I could do my private developers builds by punching the build
> button in VS, and could run the script to make a real build for QA/Release.
> Real package builds need to do things like stamp version numbers, put
> things in zip files, and save symbols to symbol servers.
>
> The non-obvious thing you have to do to use powershell for build scripts
> is you have to import the EWDK environment settings. There is a little
> tools that runs a .bat/.cmd script and saves all the environment variables
> into the powershell environment. Once you do that, you can just do
> everything in powershell. It takes a little Googling to find how to run SDV
> builds from a command line too. These are all non-problems after you have
> done them once.
>
> Jan
>
>
> On 6/5/17, 10:32 AM, “xxxxx@lists.osr.com on behalf of
> xxxxx@hotmail.com” > xxxxx@hotmail.com> wrote:
>
> Is there an upvote button? Getting a development and build
> environment setup is certifiably ridiculous. For those folks that need to
> maintain reproducible builds (with their build tools) it’d be real handy to
> have a driver dev environment that could be easily archived.
>
> It’s somewhat tricky with licensed software, but it’s not UNfeasible
> to consider something like a driver dev Windows container that would have
> the WDK and necessary tools to build/test baked-in. The full-blown IDE for
> Visual Studio would be run natively on your host machine and would be
> licensed as normal. I’m sure there are a million ways to skin that cat.
>
> The issue remains GROSSLY OVERLOOKED at this point in time though.
> Getting the appropriate tools to author, build, and release drivers in a
> reasonable fashion is an afterthought. Microsoft has gone to great lengths
> to try to provide tools to help minimize “the industry” from releasing
> poorly tested code (WHQL signing, EV certs, PREfast, SDV, etc.) in an
> attempt to reduce BSOD failures that give MS a bad rap. They’ve seen a
> need to help get driver development integrated into the normal development
> toolset that has been established by user-space developers and the usage of
> Visual Studio to build/release drivers has been generally well-received.
> However, there’s a big gap when it comes to making reproducible build
> environments setup easily. When I unboard a new team member, or need to
> stand-up another machine to facilitate our nightly builds, it’s a damn
> nightmare. Get this version of this, and that version of the other, but
> NOT that version because they don’t work together. Oh and you can’t get
> the version you need from their website, so install it from over here, but
> make sure you install this FIRST or it will NOT work. C’mon man. That’s
> non-sense! What’s worse is when I have to evaluate a potential defect in a
> legacy driver. Rebuilding a particular release to make incremental changes
> to find root cause is a whole nother level of silliness with saved VMs,
> Vagrant scripts,and saved ISOs.
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
>
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:></http:></http:>

On Mon, Jun 5, 2017 at 8:36 PM, Mark Roddy wrote:
> Further investigation might indicate that the only issue with 15063 is
> that inf2cat got disappeared. Why would inf2cat get disappeared? This is
> sort of essential.

Yup, I ran into this as well. Also, stampinf appears to have a
regression in 15063:

>echo %STAMPINF_VERSION%
*

>echo %STAMPINF_DATE%
%STAMPINF_DATE%

>stampinf -f doesnotexist -a x86 -v 1.2.3.4
Stamping .\doesnotexist [Version] section with
DriverVer=?06?/?06?/?1.2.3.4,1.2.3.4 <=== note the garbled string
Could not open INF file .\doesnotexist.
Error writing to inf!

Workaround:
https://github.com/virtio-win/kvm-guest-drivers-windows/commit/da5a2cc623708691575b976d0009fed3ca272309

Thanks,
Ladi

> So: SDK claims 2015 not supported 2017 required. WDK claims 2017 not support, 2015 required.

Yep that is a bummer. Very sorry about the situation. This is fixed internally. For what it is worth: Here is an insider preview of a WDK that supports Visual Studio 2017: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewWDK . And if you have EEAP access then there is a newer build that completes the experience.

Hey MSFT, hows about keeping released versions of SDK/WDK available on your servers instead of disappearing them whenever the mood strikes?

Karl. Can you take a look at this please. Perhaps we can keep released versions available consistently? Perhaps we already have them, but they are just hard to discover?

Jakob

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Mark Roddy
Sent: Monday, June 5, 2017 6:45 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] WDK versions and MSFT madness

Just because I like to complain.

For a while now MSFT has stopped providing access to the various releases of the “Windows 10 SDK” and WIndows 10 WDK" and instead provides only a link to the latest version. This appears to be regardless of the state of the latest version.

For example, currently The SDK is 10.0.15063.400 and it’s download page clearly notes that
Note: Windows 10 app development targeting Windows 10 Creators Update requires Visual Studio 2017. This SDK will not be discovered by previous versions of Visual Studio.
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdkhttps:

No link is provided to download earlier versions.

If one goes to the WDK download page, which also only offers WDK 10.0.15063, you get the following information:
Install Visual Studio 2015 with update 3; the Windows SDK for Windows 10, version 1703; and the WDK for Windows 10, version 1703

All four editions of Visual Studio 2015 support driver development.

Important: The WDK is not yet compatible with Visual Studio 2017. Use Visual Studio 2015 for driver development.

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kithttps:

So: SDK claims 2015 not supported 2017 required. WDK claims 2017 not support, 2015 required.
We ran into a header version bug on our build servers, which were using SDK/WDK 10.0.10586 and our build devs moved the server forward to 10.0.15063 which promptly broke our builds.

To resolve this we had to find archived versions of SDK/WDK 10.0.14393, which versions both resolve the header version bug and work with VS2015.

Hey MSFT, hows about keeping released versions of SDK/WDK available on your servers instead of disappearing them whenever the mood strikes?

Mark Roddy
— NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at</https:></https:>