【发布时间】:2020-09-26 08:47:08
【问题描述】:
我正在尝试实施 USB 监视器服务/守护程序以仅检测特定的 PID/VID 设备。我可以通过过滤 PID/VID 轻松检测设备“添加”操作属性,但是当我从端口删除任何 USB 设备时,作为“删除”操作属性的一部分,我尝试过滤 PID/VID,就像在“添加”操作中一样。 . 通过使用
const char* vendor = udev_device_get_sysattr_value(dev, "idVendor");
const char* product = udev_device_get_sysattr_value(dev, "idProduct");
但在以上两个 char ptr 中,我总是得到 NULL。 因此,我的移除操作将对将从端口移除的所有 USB 设备执行
他们在 libudev API 中是否有任何其他方式仅检测特定设备删除?
【问题讨论】:
-
我在 libudev/systemd 代码中搜索后得到了答案,这个 API 名为 ... const char *udev_device_get_property_value() 以“product”为关键解决了我的问题
-
但是使用最新的内核版本(UBUNTU 18.04,CentOS 7.6 和内核版本 5.0)为 *udev_device_get_property_value() 方法返回 null。你的 Linux 系统和内核版本是什么?