我正在linux平台上使用USB HID。键盘,鼠标等是人机接口设备的示例。每当将HID插入系统时,首先发生设备枚举。然后以/ dev目录中出现hidraw形式的条目。
在linux中,“usbhid和hid”是插入HID设备时调用的模块。当我禁用这些模块(使用rmmod和系统重启)时,未枚举设备,并且/ dev上没有出现hidraw条目(正如预期的那样)。
现在我的问题是有没有办法知道是否有任何USB HID设备连接到上述两个模块被禁用的系统,即硬件插入时是否产生任何中断或信号。
我计划在发生这样的信号或中断时执行一些代码(在C中)。任何形式的帮助都表示赞赏。
谢谢,
答案 0 :(得分:0)
通过D +和D-线上发生的电压电平变化检测器件的插入。我不认为插入USB设备会产生任何中断。电压水平变化由集线器(根或线路上的任何集线器)读取并报告给核心。 USB核心驱动程序将收到相同的通知。因此,您可以编写一个针对特定设备的用户空间驱动程序(使用供应商和产品ID),通过此功能,您可以执行您的功能。
答案 1 :(得分:0)
如果您是在用户模式下执行此操作,则可以使用udev
(内部使用netlink
)获取通知。
您可以使用规则文件中的vendorId和productId字段匹配设备。
SUBSYSTEMS=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234"