diff options
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index 4cd1a6640a..f849c828f2 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -759,7 +759,7 @@ std::optional<NetworkAdapter> FindAdapterByAlias(const std::set<NetworkAdapter> return std::nullopt; } -bool RemoveNetDevice(const std::wstring &tapHardwareId, const std::wstring &guid) +bool RemoveNetDevice(const std::optional<std::wstring> tapHardwareId, const std::wstring &guid) { bool deletedAdapter = false; @@ -806,7 +806,7 @@ void RemoveNetAdapterByAlias(const std::wstring &hardwareId, const std::wstring // and delete any adapter whose GUID matches that of the "Mullvad" adapter. // - if (!RemoveNetDevice(hardwareId, guid)) + if (!RemoveNetDevice(std::make_optional(hardwareId), guid)) { THROW_ERROR("The virtual adapter could not be removed"); } @@ -1038,6 +1038,20 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * []) RemoveNetAdapterByAlias(hardwareId, baseName); } + else if (0 == _wcsicmp(argv[1], L"remove-device-by-guid")) + { + if (3 != argc) + { + goto INVALID_ARGUMENTS; + } + + const wchar_t *guid = argv[2]; + + if (!RemoveNetDevice(std::nullopt, guid)) + { + return ADAPTER_NOT_FOUND; + } + } else if (0 == _wcsicmp(argv[1], L"device-exists")) { if (4 != argc) |
