重启后禁用USB键盘

时间:2018-03-06 18:21:11

标签: c++ winapi keyboard setupapi

我使用 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),&params.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 检查。 我做错了什么?

0 个答案:

没有答案