bool IsNonPresentDevice(DEVINST devInst) ULONG status = 0, problem = 0; if (CM_Get_DevNode_Status(&status, &problem, devInst, 0) != CR_SUCCESS) return true; // Cannot query status -> treat as problematic

SetupDiDestroyDeviceInfoList(hDevInfo); std::wcout << L"Removed " << removed << L" device(s).\n"; return 0;

void ListDevices() DIGCF_PRESENT); if (hDevInfo == INVALID_HANDLE_VALUE) std::wcerr << L"Failed to get device list. Error: " << GetLastError() << std::endl; return;

while (SetupDiEnumDeviceInfo(hDevInfo, idx++, &devInfoData)) DEVINST devInst = devInfoData.DevInst;

SetupDiDestroyDeviceInfoList(hDevInfo); std::wcout << L"Removed " << removed << L" non-present device(s).\n"; return 0;