summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp18
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)