summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2020-02-04 10:42:34 +0100
committerDavid Lönnhager <david.l@mullvad.net>2020-02-04 14:52:42 +0100
commit83038a2319fc44f8d909be45be51a4d7a450d9c7 (patch)
treeeb0e98bd577450a8a6476ac3d212cbfdbfdc3f24 /windows/driverlogic/src/driverlogic.cpp
parentb9eb60830d2356aef557de14a5be085383f30edc (diff)
downloadmullvadvpn-83038a2319fc44f8d909be45be51a4d7a450d9c7.tar.xz
mullvadvpn-83038a2319fc44f8d909be45be51a4d7a450d9c7.zip
Ignore removed devices without device instance ID in driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index fc9fc69bc1..7798603ec9 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -14,6 +14,7 @@
#include <devguid.h>
#include <devpkey.h>
#include <newdev.h>
+#include <cfgmgr32.h>
namespace
@@ -259,6 +260,13 @@ std::wstring GetNetCfgInstanceId(HDEVINFO devInfo, const SP_DEVINFO_DATA &devInf
void DeleteDevice(HDEVINFO devInfo, SP_DEVINFO_DATA * devInfoData)
{
+ wchar_t devId[MAX_DEVICE_ID_LEN];
+ if (CR_SUCCESS != CM_Get_Device_IDW(devInfoData->DevInst, devId, sizeof(devId) / sizeof(devId[0]), 0))
+ {
+ // skip
+ return;
+ }
+
SP_REMOVEDEVICE_PARAMS rmdParams = { 0 };
rmdParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
rmdParams.ClassInstallHeader.InstallFunction = DIF_REMOVE;