WDK + Windows 8 + MSVC 2010 - visual-c++

ALL,
I would like to build a dokan library. According to dokan instruction I need the WDK which can be downloaded from the Microsoft website.
Problem is - I have MSVC 2010 and it looks like WDK is for MSVC 2013 and I don't know what to do.
Could someone explain to me where can I get WDK for MSVC 2010?
Thank you.

The Windows 8.x SDK generally works with Visual Studio 2010--with the exception of a few places in the include\winrt headers where they used C++11 constructs not supported prior to VS 2012, specifically strongly-typed enumerations. The issue is there is no automatic integration for the VS 2010 toolset.
The recommended solution is to use .props files. See the Visual C++ Team Blog for details, and I have the fully authored .props files for both x86 and x64 hosted on my blog. These are also used in my open-source projects (DirectX Tool Kit, DirectXTex, DirectXMesh, UVAtlas, DXUT, Effects 11) which support VS 2010 + the Windows 8.1 SDK.
I believe the situation is basically the same with the Windows Driver Kit 8.x as it actually integrates into the existing Windows 8.x SDK. You will just need to add include\km and lib\km folders to the .props for the kernel mode projects.
That said, with VS 2013 Community edition being freely available full-featured version of Visual Studio under generous license terms, I'm not sure why you are sticking with VS 2010...

Related

Microsoft Visual C++ runtime versions? Do I need to keep 'em all?

I've been looking around and I'm not sure I see a clear answer to this so I'm sorry if this has been asked before; my "Google-Fu" is failing me.
We are developing software against .NET Framework but historically we have had to include a number of 3rd party components. Also, historically, these tended to come with various dependencies on Microsoft Visual Studio C++ runtime versions. This has led to us distributing as part of our initial installation process:
Microsoft Visual Studio C++ 2005 Redistributable (SP1) - build 8.0.61001
Microsoft Visual Studio C++ 2008 Redistributable - build 9.0.30729.6161
Microsoft Visual Studio C++ 2010 Redistributable - build 10.0.40129
Microsoft Visual Studio C++ 2012 Redistributable - build 11.0.61030
But as the years have gone on many of the 3rd party components we used have been replaced with newer and better ones, and we include them to our Projects through NuGet. And I'm finding that as I install our software on systems without installing the above first most of our applications are working perfectly normally without errors. So I'm starting to think a lot of the above are no longer necessary.
Ideally I would just like to chuck 'em all. Relieve the pressure on our support staff to install all these components as well as our software when setting up machines for first use.
It would be great if I could just tell them "look, just install VC++ redistributable version xyz and anything that needs one of the above four builds will work just fine"
I see many resources online claiming that, for example, the 2017 redistributable replaces the 2015 one, and so on but does that backward compatibility go all the way back to the 2005 SP1 version?
My second question is a bit more generic and I don't really expect many answers to that one but.
are there any well known 3rd party developer tools that you know are using one of the four Redistributables mentioned in my list above? For example, we use Crystal Reports runtime 13.0.17 - oh how I wish we could dump that and move on .... And one of our support staff has already identified that that sometimes won't install if the 2005 SP1 runtime is missing. Trying to find out such info from online resources is like looking for a needle in a haystack....
the 2017 redistributable replaces the 2015 one, and so on
Yes, for certain values of "and so on" ;-) The 2015, 2017 and 2019 redistributables are binary compatible with the most recent release thereof. Quoting Microsoft from C++ binary compatibility between Visual Studio 2015, 2017, and 2019:
The runtime libraries and apps compiled by any of these versions of the compiler [2015, 2017, 2019] are binary-compatible. It's reflected in the C++ toolset major number, which is 14 for all three versions. [...] Say you have third-party libraries built by Visual Studio 2015. You can still use them in an application built by Visual Studio 2017 or 2019. There's no need to recompile with a matching toolset. The latest version of the Microsoft Visual C++ Redistributable package (the Redistributable) works for all of them.
does that backward compatibility go all the way back to the 2005 SP1 version?
No. Quoting again from the same page:
The Microsoft C++ (MSVC) compiler toolsets in Visual Studio 2013 and earlier don't guarantee binary compatibility across versions. You can't link object files, static libraries, dynamic libraries, and executables built by different versions. The ABIs, object formats, and runtime libraries are incompatible.
To make things even worse, VS 2005 and 2008 did not have one single set of redistributables, but instead several different versions that were installed in SxS (side by side) mode. From Side-by-side assembly:
In side-by-side, Windows stores multiple versions of a DLL in the WinSxS subdirectory of the Windows directory, and loads them on demand. This reduces dependency problems for applications that include a side-by-side manifest. [...] Microsoft Visual C++ 2005 and 2008 employ SxS with all C runtime libraries.
are there any well known 3rd party developer tools that you know are using one of the four Redistributables mentioned in my list above?
This is way too wide for any useful answer. You'll have to (a) identify which tools/components/etc you are using, and (b) which are the dependencies of each, including (though not limited to) the C/C++ runtimes.

Visual C++ Redistributable 2013 (vcredist for 2013) platform support for Windows 2016

As per the information published for Microsoft Visual C++ Redistributable 2013, Windows 2012 R2 is the latest platform supported on Windows Operating systems.
Our application code (C++) is built with Visual Studio C++ 2013 and we are using VC++ redistributable 2013 on Windows 2012 R2 platform to work with the binaries which are built as mentioned above.
Now, we are planning to use VC++ redistributable 2013 on Windows 2016 platform to work with same binaries. When I check for platform support of VC++ redistributable 2013 for Windows platforms, Windows 2012 R2 is the latest platform supported and I dont see Windows 2016 is mentioned in the supported platforms list. (Ref: https://msdn.microsoft.com/en-us/library/ms235435(v=vs.120).aspx)
When I test internally with VC++ redistrbutable 2013 on Windows 2016 platform, binaries are running good as expected as of now.
So, I am assuming VC++ redistrbutable 2013 supports on Windows 2016 platform.
Can you please provide confirmation on support of VC++ redistrbutable 2013 supports on Windows 2016 platform? So that, we can use our application on Windows 2016 platform using VC++ redistrbutable 2013.
If these are any published KBs for support of VC++ redistrbutable 2013 on Windows 2016 platform, Please share.
Please provide confirmation on support of VC++ redistrbutable 2013 on Windows 2016 platform.
If I understand the table you link to correctly, it specifies for which platforms you can build software for with the given Visual Studio version. This does in no way imply that the software so built does not run on more modern platforms.
Typically, the opposite will be the case: Old software will run on modern platforms. That's called compatibility. I do not think that Microsoft will decide to break (moderately) old software wholesale and intentionally.

Visual Studio 2012 fails to open Visual Studio 2010 projects

I tried to open in Visual Studio 2012 a VS 2010 solution and I get these error:
Unable to read the project file "Language.vcxproj".
D:...\Language\Language.vcxproj(2,33): The tools version "4.0" is unrecognized. Available tools versions are "2.0".
It has something to do with the ToolsVersion attribute:
I believe this may be something with target platform settings, or with the version of the .NET framework, or with the version of the C++ compiler.
BTW, this also happens with .csproj files contained on other solutions I have.
What annoys me more is that I have a colleague that can open those solutions in his computer without any problem and I can not.
In the Control Panel, I have this items for the .NET framework:
Microsoft .NET Framework 4.5 Multi-Targeting Pack
Microsoft .NET Framework 4.5 SDK
Help, please!

Corrupt C runtime library?

I'm using Visual Studio Professional 2012 (with Update 2) and since I have a project that needs to be built with the VC++ 2010 toolset I also installed Visual C++ 2010 Express (with SP1).
I use the newer 2012 IDE also for the older projects. So for these projects I set the Platform Toolset to v100. And when I also set the runtime library to /MT or /MTd I get the following error:
error LNK1127: library is corrupt
for libcpmt.lib or libcpmtd.lib, depending on the configuration.
What could be wrong here?
Installation history:
VS2012 Professional
Windows 7 SDK
Uninstalled VS2012 and Windows SDK
VC++ 2010 Express
VS2012 Professional
If I understood correctly, you installed VS2010 after installing VS2012? If not, please edit your question to make it clear.
This sequence of installations is not recommended by Microsoft, and there are plenty of caveats and ReadMe's to navigate in order to find out what's happened.
I suggest that the best thing to do is to reinstall VS2012 (or do a repair install), then see what - if anything - is still broken.

MFC inclusion in different flavors of Visual Studio

I learned via Wikipedia that Visual Studio C++ 2008 Express Edition does not ship with support for MFC projects. Does anyone know if the Visual Studio 2010 Beta 1 distribution ships with MFC support ? I imagine MFC versions for Win 7 are incomplete, but I only require basic/legacy MFC support for Win XP/Vista.
Thanks
Yes, VS2010 Beta 1 includes MFC.
(I checked via File / New / Project / Visual C++ and there's MFC in the list of available project types.)
But that doesn't necessarily mean that VS2010 Express will include it, of course.
I believe that final Express Edition of Visual Studio 2010 will be distributed without MFC since Express Edition is free. If you are planning to develop MFC projects you should buy at least Standard Edition of Visual Studio.

Resources