检索提供特定安装点的驱动器的 USB 设备信息

检索提供特定安装点的驱动器的 USB 设备信息

我正在编写一个 C/C++ 工具,需要执行以下操作:

  1. 检测何时安装了新的安装点。 ✔
  2. 找出哪个(USB)设备提供此挂载点。❓
  3. 获取该设备的 USB 供应商 ID 和产品 ID。 ✔ - libusb

我不确定如何使用 GNU/Linux 提供的接口来完成任务 2。请注意,我对使用任何命令行工具不感兴趣 - 我正在编写一个应用程序并且需要使用操作系统接口。

到目前为止,我已经考虑过使用/proc/{pid}/mountinfo(这是我用来检查安装是否已更改的方法),但它似乎不允许我跟踪哪个设备提供了此安装点。

任何帮助,将不胜感激。

答案1

假设您正在使用 udev,利布德夫可能是一个不错的选择。 udev是linux的子系统,负责当新设备插入系统时自动创建设备节点。使用 udev,您还可以在新设备插入系统时对其进行监控并获取您想要的所有信息。它提供了很好的功能,例如“udev_device_get_sysattr_value”,您可以使用它们查询所需的任何属性并轻松获取其值。

为了查看 udev 提供哪些属性,您可以使用 udevadm 实用程序,如下所示:

udevadm 信息 --query=all -n /dev/your_device_node

您还可以找到一些示例代码这里这里

答案2

/proc/{pid}/mounts显示设备。获取主要和次要 ID,然后 /sys/dev/block/{major}:{minor}是 USB 设备的符号链接。

相关内容