Universal C++ RunTime (UCXXRT) ??中文 UserMode support has been removed since March 29th, 2022. The final version known to support UserMode is e2f159f8f . Please use VC-LTL5 instead in UserMode. 1. About ucxxrt is an open source runtime library based on MSVC. The highlight of this project is its usability in kernel-mode drivers , and it provides you nearly the same experience as developing user-mode applications in C++. Before ucxxrt was born, in order to use C++ STL in kernel-mode drivers, users have to craft their own template libraries (eg. KTL , ustd, ...). There are still several problems. Like it does not support C++ exceptions, and mainly, it costs very much time to implement new language features when C++ ISO standard updates. Then ucxxrt was born. 1.1 How ucxxrt works When developing kernel-mode drivers, kernel-mode flag is disabled by using property sheets, forcibly making the compiler support C++ exceptions. Exception flag( /EHsc ) is also enabled. Implements exception functions like throw , catch . Simulates the exception dispatcher in throw and handles the exception in callback functions. 1.2 Features support x86, x64, ARM(experimental), ARM64(experimental). support new/delete operators. support C++ exception (/EHa, /EHsc). support SAFESEH、GS (Buffer Security Check). support STL (not fully). support static objects. List of currently unsupported features ↓ 1.3 Example See project unittest for more information. void Test$ThrowUnknow() { try { try { try { throw std::wstring (); } catch ( int & e) { ASSERT ( false ); LOG (DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, " Catch Exception: %d \n " , e); } } catch (std::string& e) { ASSERT ( false ); LOG (DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, " Catch Exception: %s \n " , e. c_str ()); } } catch (...) { LOG (DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, " Catch Exception: ... \n " ); } } void Test$HashMap() { auto Rand = std::mt19937_64 (:: rand ()); auto Map = std::unordered_map< uint32_t , std::string>(); for ( auto i = 0u ; i < 10 ; ++i) { Map[i] = std::to_string ( Rand ()); } for ( const auto & Item : Map) { LOG (DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, " map[%ld] = %s \n " , Item. first , Item. second . c_str ()); } } 2. How to use First, rename DriverEntry to DriverMain . 2.1 Method 1 (recommended) Right click on the project, select "Manage NuGet Packages". Search for ucxxrt , choose the version that suits you, and then click "Install". 2.2 Method 2 Download the latest package from Releases and unzip it. Add the property sheet ucxxrt.props to your project. 3. How to build IDE:Visual Studio 2022 latest version git clone --recurse-submodules https://github.com/MiroKaku/ucxxrt.git Open ucxxrt.sln and build. 4. Acknowledgements Thanks to JetBrains for providing free licenses such as Resharper C++ for my open-source projects. 5. References Microsoft's C++ Standard Library Chuyu-Team/VC-LTL RetrievAL Great thanks to these excellent projects. Without their existence, there would be no ucxxrt then. 6. List of currently unsupported features Thread Local Storage (TLS): thread_local、TlsAlloc ... std::filesystem std::chrono std::stacktrace_entry std::locale std::stream (std::fstream、std::iostream、std::cin、std::cout、std::cerr) std::future std::latch std::semaphore (std::counting_semaphore、std::binary_semaphore) ...