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.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index 25487d8481..08f0e97883 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -34,7 +34,8 @@ constexpr std::chrono::milliseconds REGISTRY_GET_TIMEOUT_MS{ 10000 };
enum ReturnCodes
{
GENERAL_SUCCESS = 0,
- GENERAL_ERROR = -1
+ GENERAL_ERROR = -1,
+ ADAPTER_NOT_FOUND = -2
};
struct NetworkAdapter
@@ -917,6 +918,24 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * [])
RemoveNetAdapterByAlias(hardwareId, baseName);
}
+ else if (0 == _wcsicmp(argv[1], L"device-exists"))
+ {
+ if (4 != argc)
+ {
+ goto INVALID_ARGUMENTS;
+ }
+
+ const wchar_t *hardwareId = argv[2];
+ const wchar_t *baseName = argv[3];
+
+ const auto tapAdapters = GetNetworkAdapters(hardwareId);
+ const auto adapter = FindAdapterByAlias(tapAdapters, baseName);
+
+ if (!adapter.has_value())
+ {
+ return ADAPTER_NOT_FOUND;
+ }
+ }
else if (0 == _wcsicmp(argv[1], L"remove"))
{
if (3 != argc)