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.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index 1a77aaf15b..9805954079 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -587,12 +587,26 @@ DeletionResult DeleteVanillaMullvadAdapter()
continue;
}
- if (FALSE == SetupDiRemoveDevice(
- devInfo,
- &devInfoData
- ))
+ //
+ // Delete existing device
+ //
+
+ SP_REMOVEDEVICE_PARAMS rmdParams;
+ rmdParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
+ rmdParams.ClassInstallHeader.InstallFunction = DIF_REMOVE;
+ rmdParams.Scope = DI_REMOVEDEVICE_GLOBAL;
+ rmdParams.HwProfile = 0;
+
+ auto status = SetupDiSetClassInstallParamsW(devInfo, &devInfoData, &rmdParams.ClassInstallHeader, sizeof(rmdParams));
+ if (FALSE == status)
+ {
+ THROW_WINDOWS_ERROR(GetLastError(), "SetupDiSetClassInstallParamsW");
+ }
+
+ status = SetupDiCallClassInstaller(DIF_REMOVE, devInfo, &devInfoData);
+ if (FALSE == status)
{
- THROW_WINDOWS_ERROR(GetLastError(), "Error removing Mullvad TAP device");
+ THROW_WINDOWS_ERROR(GetLastError(), "SetupDiCallClassInstaller");
}
}
catch (const std::exception & e)