Dukungan USermode telah dihapus sejak 29 Maret 2022. Versi final yang diketahui mendukung USERMODE adalah E2F159F8F. Harap gunakan VC-LTL5 sebagai gantinya di USERMODE.
ucxxrt adalah pustaka runtime open source berdasarkan MSVC. Sorotan dari proyek ini adalah kegunaannya dalam driver mode kernel , dan memberikan Anda pengalaman yang hampir sama dengan mengembangkan aplikasi mode pengguna di C ++.
Sebelum ucxxrt lahir, untuk menggunakan C ++ STL dalam driver mode kernel, pengguna harus membuat perpustakaan template mereka sendiri (mis. KTL, USTD, ...). Masih ada beberapa masalah. Seperti tidak mendukung pengecualian C ++, dan terutama, biaya sangat banyak waktu untuk mengimplementasikan fitur bahasa baru ketika pembaruan standar C ++ ISO.
Kemudian ucxxrt lahir.
ucxxrt Saat mengembangkan driver mode kernel, bendera mode kernel dinonaktifkan dengan menggunakan lembar properti, secara paksa membuat dukungan kompiler C ++ Exceptions. Bendera Pengecualian ( /EHsc ) juga diaktifkan.
Menerapkan fungsi pengecualian seperti throw , catch . Mensimulasikan pengirim pengecualian dalam throw dan menangani pengecualian dalam fungsi callback.
Daftar fitur yang saat ini tidak didukung ↓
Lihat Proyek Unittest untuk informasi lebih lanjut.
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 ());
}
} Pertama, ganti nama DriverEntry ke DriverMain .
Klik kanan pada proyek, pilih "Kelola Paket Nuget". Cari ucxxrt , pilih versi yang cocok untuk Anda, lalu klik "Install".
Unduh paket terbaru dari rilis dan unzip.
Tambahkan lembar properti ucxxrt.props ke proyek Anda.
IDE : Visual Studio 2022 Versi Terbaru
dan Windows SDK
dan Windows Driver Kit
git clone --recurse-submodules https://github.com/MiroKaku/ucxxrt.git
Buka ucxxrt.sln dan build.
Untuk Clang-CL atau LLVM-MSVC, Anda harus menambahkan -march=native dalam bendera kompiler.
Terima kasih kepada JetBrains karena telah memberikan lisensi gratis seperti Resharper C ++ untuk proyek open-source saya.
Terima kasih banyak untuk proyek -proyek luar biasa ini. Tanpa keberadaannya, tidak akan ada
ucxxrtsaat itu.