diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-01-31 13:11:02 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-02-03 09:13:29 +0100 |
| commit | 0b1204a5ead8ed3aa78f7528276a4c5a89ffc3bc (patch) | |
| tree | 64a86f39df62bd0f5f0f0ebbcae378471e79c6da /windows/driverlogic/src/driverlogic.cpp | |
| parent | 2860aed09fce784bc0e6719319dae78cb4d5cafc (diff) | |
| download | mullvadvpn-0b1204a5ead8ed3aa78f7528276a4c5a89ffc3bc.tar.xz mullvadvpn-0b1204a5ead8ed3aa78f7528276a4c5a89ffc3bc.zip | |
Fix adapter deletion in driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 24 |
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) |
