diff options
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index 7798603ec9..003b123346 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -558,6 +558,25 @@ NetworkAdapter FindBrandedTap() return *added.begin(); } +void RemoveTapDriver(const std::wstring &tapHardwareId) +{ + ForEachDevice(tapHardwareId, [&](HDEVINFO devInfo, PSP_DEVINFO_DATA devInfoData) { + try + { + DeleteDevice(devInfo, devInfoData); + } + catch (const std::exception & e) + { + // + // Skip this adapter + // + + std::cerr << "Skipping TAP adapter due to exception caught while iterating: " + << e.what() << std::endl; + } + }); +} + enum class DeletionResult { NO_REMAINING_TAP_ADAPTERS, @@ -635,6 +654,15 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * []) UpdateTapDriver(argv[2]); } + else if (0 == _wcsicmp(argv[1], L"remove")) + { + if (3 != argc) + { + goto INVALID_ARGUMENTS; + } + + RemoveTapDriver(argv[2]); + } else if (0 == _wcsicmp(argv[1], L"remove-vanilla-tap")) { switch (DeleteVanillaMullvadAdapter()) |
