Do not override C++ keywords using macros.
Use BOOST_NOEXCEPT for compatible "noexcept" keyword.
Use boost::numeric_cast when converting from size_t to DWORD.
Add Visual Studio 2012 project files.