diff --git a/include/columnlynx/common/net/virtual_interface.hpp b/include/columnlynx/common/net/virtual_interface.hpp index baecd11..f393fcf 100644 --- a/include/columnlynx/common/net/virtual_interface.hpp +++ b/include/columnlynx/common/net/virtual_interface.hpp @@ -33,6 +33,8 @@ #include #include #include + #include + #include #include #endif diff --git a/src/common/virtual_interface.cpp b/src/common/virtual_interface.cpp index 91f70a5..ee571ed 100644 --- a/src/common/virtual_interface.cpp +++ b/src/common/virtual_interface.cpp @@ -113,20 +113,25 @@ namespace ColumnLynx::Net { #elif defined(_WIN32) + // Convert to Windows' wchar_t* thingy + std::wstring_convert> converter; + std::wstring wide_string = converter.from_bytes(mIfName); + const wchar_t* wide_c_str = wide_string.c_str(); + InitializeWintun(); - mAdapter = pWintunOpenAdapter(ifaceName); + mAdapter = pWintunOpenAdapter(wide_c_str); if (!mAdapter) { mAdapter = pWintunCreateAdapter( - ifaceName, + wide_c_str, L"ColumnLynx", nullptr ); } if (!mAdapter) - throw std::runtime_error("Failed to open or create Wintun adapter"); + throw std::runtime_error("Failed to open or create Wintun adapter (run running as admin)"); mSession = pWintunStartSession(mAdapter, 0x200000); if (!mSession)