Devicecleanup.exe
std::wcout << L"\nNon-present (ghost) devices:\n"; std::wcout << L"----------------------------------------\n";
SP_DEVINFO_DATA devInfoData; devInfoData.cbSize = sizeof(SP_DEVINFO_DATA); DWORD idx = 0; int removed = 0; DeviceCleanup.exe
#pragma comment(lib, "setupapi.lib") #pragma comment(lib, "CfgMgr32.lib") L"\nNon-present (ghost) devices:\n"
bool matches = (id == instanceId);
while (SetupDiEnumDeviceInfo(hDevInfo, idx++, &devInfoData)) DEVINST devInst = devInfoData.DevInst; if (IsNonPresentDevice(devInst)) count++; devInfoData.cbSize = sizeof(SP_DEVINFO_DATA)
while (SetupDiEnumDeviceInfo(hDevInfo, idx++, &devInfoData)) DEVINST devInst = devInfoData.DevInst; if (IsNonPresentDevice(devInst)) WCHAR instanceId[256]; if (CM_Get_Device_ID(devInst, instanceId, 256, 0) == CR_SUCCESS) std::wcout << L"Removing: " << instanceId << std::endl; if (RemoveDevice(devInst)) removed++;