SP_PROPCHANGE_PARAMS params = { sizeof(SP_CLASSINSTALL_HEADER) };
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
params.Scope = DICS_FLAG_GLOBAL;
params.HwProfile = 0;
if (enable)
{
params.StateChange = DICS_ENABLE;
}
else
{
params.StateChange = DICS_DISABLE;
}
if (!SetupDiSetClassInstallParams(hDevInfo, &devInfoData, (SP_CLASSINSTALL_HEADER*)¶ms, sizeof(SP_PROPCHANGE_PARAMS)))
{
printf(" Camera: %s SetupDiSetClassInstallParams GetLastError: %d \n", currentCameraName, GetLastError());
return false;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &devInfoData))
{
printf(" Camera: %s SetupDiCallClassInstaller GetLastError: %d \n ", currentCameraName, GetLastError());
return false;
}
SP_DEVINSTALL_PARAMS devParams;
devParams.cbSize = sizeof(devParams);
if (!SetupDiGetDeviceInstallParams(hDevInfo, &devInfoData, &devParams))
{
//log
printf(" Camera: %s SetupDiGetDeviceInstallParams GetLastError: %d \n ", currentCameraName, GetLastError());
return false;
}
if (devParams.Flags & (DI_NEEDRESTART | DI_NEEDREBOOT))
{
//log
printf("about change Camera: %s system need to Restart ", currentCameraName);
return false;
}
break;