使用代码禁用设备管理器里面的鼠标设备禁用一个设备的方法有很多,但是能够跟设备管理器里面状态同步的方法并不多。本文是使用SetupDi 系列API来实现的,有点老生常谈了~整体套路就是:使用SetupDiGetClassDevs 返回...
使用代码禁用设备管理器里面的鼠标设备
禁用一个设备的方法有很多,但是能够跟设备管理器里面状态同步的方法并不多。
本文是使用SetupDi 系列API来实现的,有点老生常谈了~
整体套路就是:
使用SetupDiGetClassDevs 返回一类设备信息集
使用SetupDiEnumDeviceInfo便利设备信息集
使用SetupDiGetDeviceRegistryProperty获取设备信息,从而判断是不是你想要的设备
最后使用SetupDiChangeState来改变设备的Enable/Disable状态
这种操作的前提是设备管理器里面这个设备支持启用禁用。
从本质上讲就要要这个设备的驱动程序支持IRP_MJ_PNP 的子功能代码 IRP_MN_STOP_DEVICE等。
另外需要注意的一点就是SetupDiGetClassDevs的时候不要设置DIGCF_PRESENT flag,不然被禁用的设备是搜索不到的。
最后需要注意的是:SetupDiChangeState 需要用管理员权限才能保证执行成功。
以下是大致代码:
extern "C" { #include "hidsdi.h" #include} #pragma comment(lib,"setupapi.lib") #pragma comment(lib,"hid.lib") #pragma comment(lib,"Wtsapi32.lib")