重启后禁用 USB 键盘
Disabling USB keyboard after reboot
我使用了 SetupDiSetClassInstallParams 和 SetupDiCallClassInstaller 来禁用特定的 USB 设备。
SP_PROPCHANGE_PARAMS params;
params.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
params.StateChange = DICS_DISABLE;
// SP_DEVINFO_DATA - Info.DevInfoData
if (!SetupDiSetClassInstallParams(hDevInfo, &(Info.DevInfoData),¶ms.ClassInstallHeader, sizeof(params))) {
Error = GetLastError();
return Error;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &(Info.DevInfoData))) {
Error = GetLastError(); // error here
}
此方法适用于所有设备,键盘除外。
如果我试图用这种方式禁用她
ERROR_NOT_DISABLEABLE 返回。但重启后键盘将被禁用。
在禁用之前,为此设备设置了标志 DN_DISABLEABLE 和 DN_REMOVABLE,由函数 CM_Get_DevNode_Status 检查。
我做错了什么?
此设备不支持禁用
我使用了 SetupDiSetClassInstallParams 和 SetupDiCallClassInstaller 来禁用特定的 USB 设备。
SP_PROPCHANGE_PARAMS params;
params.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
params.StateChange = DICS_DISABLE;
// SP_DEVINFO_DATA - Info.DevInfoData
if (!SetupDiSetClassInstallParams(hDevInfo, &(Info.DevInfoData),¶ms.ClassInstallHeader, sizeof(params))) {
Error = GetLastError();
return Error;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &(Info.DevInfoData))) {
Error = GetLastError(); // error here
}
此方法适用于所有设备,键盘除外。 如果我试图用这种方式禁用她 ERROR_NOT_DISABLEABLE 返回。但重启后键盘将被禁用。
在禁用之前,为此设备设置了标志 DN_DISABLEABLE 和 DN_REMOVABLE,由函数 CM_Get_DevNode_Status 检查。 我做错了什么?
此设备不支持禁用