On Aug 12, 2015 6:55 PM, "Peter Constable" <[email protected]> wrote: > > > “In Visual Studio 2015, the C++ compiler and standard library have been > updated with enhanced support for C++11 and initial support for certain C++14 > features. They also include preliminary support for certain features expected > to be in the C++17 standard.” >
You are right. I have to admit that my statement was not 100% correct. Traditionally drivers for Windows are built using C (not C++). Part of the reason for this is that Microsoft did not officially support C++ in kernel code up to the WDK 8. Nowadays there is the /kernel switch which enables a subset of C++ which Microsoft considers safe to use in kernel mode. The most recent C standard fully supported is still C89 though (plus a few C99 features that were added with VS2013). C99 support is *far* from being complete and I don't know of a single C11 feature being implemented. This means C++11 could be used in a driver but one would need to "convert" the driver to C++ (or at least those sources that make use of modern features). Anyhow, Marcel could certainly declare the mapping in a .cpp (using extern "C" to ensure interoperability with C code) but that wouldn't change that surrogate pairs seem to be unsupported for keyboard drivers. (Like I said I have no experience writing keyboard drivers so I can't confirm this.)

