else PrintUsage(); return 1;

else if (arg == L"/verbose") g_verbose = true;

void ListDevices() HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES

bool RemoveDevice(DEVINST devInst) CONFIGRET cr = CM_Request_Device_Eject(devInst, NULL, NULL, 0, 0); if (cr == CR_SUCCESS) if (g_verbose) std::wcout << L" -> Eject request succeeded.\n"; cr = CM_Remove_SubTree(devInst, g_force ? CM_REMOVE_NO_RESTART : 0); if (cr == CR_SUCCESS) if (g_verbose) std::wcout << L" -> Device removed.\n"; return true;

bool matches = (id == instanceId);

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

Devicecleanup.exe

else PrintUsage(); return 1;

else if (arg == L"/verbose") g_verbose = true; DeviceCleanup.exe

void ListDevices() HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES else PrintUsage(); return 1; else if (arg ==

bool RemoveDevice(DEVINST devInst) CONFIGRET cr = CM_Request_Device_Eject(devInst, NULL, NULL, 0, 0); if (cr == CR_SUCCESS) if (g_verbose) std::wcout << L" -> Eject request succeeded.\n"; cr = CM_Remove_SubTree(devInst, g_force ? CM_REMOVE_NO_RESTART : 0); if (cr == CR_SUCCESS) if (g_verbose) std::wcout << L" -> Device removed.\n"; return true; Eject request succeeded.\n"

bool matches = (id == instanceId);

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