Mag*_*gix 9 c c++ linux libusb linux-device-driver
我正在使用C库libusb为USB设备编写C++ Linux用户空间驱动程序.我有两个相同设备的副本(相同的供应商ID和产品ID),并想知道如何处理这种情况.
libusb_get_device_list()仅返回当前未使用的设备
我可以使用libusb_get_device_descriptor()使用设备描述符的信息来区分已使用和未使用的设备
通过返回 LIBUSB_ERROR_ACCESS或 LIBUSB_ERROR,当前正在使用的设备上的 libusb_open()将失败
我应该怎么处理这个?前面的哪个选项(如果有的话)是libusb在处理许多相同设备时的行为?如何区分使用中的设备和闲置设备?
正如@fiscblog在他的回答中所说:"识别是通过设备描述符完成的(使用序列号,它应该始终是唯一的)".我的问题是,为了做到这一点,两个驱动程序应该通信以知道哪个实例正在处理哪个设备(例如,使用文件),我想避免这种情况.我也想避免引入多线程并用一个驱动程序管理两个设备,因为我没有这种技能以高效和良好控制的方式这样做(令人讨厌的竞争条件......!)
小智 3
根据libusb_claim_interface()的文档:
接口声明用于指示底层操作系统您的应用程序希望获得接口的所有权。
所以你应该能够在每台设备上调用 libusb_claim_interface() 并且它应该只在无人认领的设备上成功:
尝试声明已声明的接口是合法的,在这种情况下,libusb 只是返回 0,而不执行任何操作。
归档时间: |
|
查看次数: |
1278 次 |
最近记录: |