From b091484e711bd3480df90234b7b5bf337610e9ba Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Fri, 21 Sep 2007 17:08:51 -0700 Subject: [PATCH] When freeing an interface, delete it from the registry if its device is a phantom --- dlls/setupapi/devinst.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 6c31064..40337de 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -152,6 +152,15 @@ static void SETUPDI_FreeInterfaceInstanc struct InterfaceInfo *ifaceInfo = (struct InterfaceInfo *)instances->instances[i].Reserved; + if (ifaceInfo->device && ifaceInfo->device->Reserved) + { + struct DeviceInfo *devInfo = + (struct DeviceInfo *)ifaceInfo->device->Reserved; + + if (devInfo->phantom) + SetupDiDeleteDeviceInterfaceRegKey(devInfo->set, + &instances->instances[i], 0); + } HeapFree(GetProcessHeap(), 0, ifaceInfo->referenceString); HeapFree(GetProcessHeap(), 0, ifaceInfo->symbolicLink); } -- 1.4.1