gpt4 book ai didi

c++ - 我如何知道 USB 设备是否已在使用中?

转载 作者:IT王子 更新时间:2023-10-29 00:13:28 36 4
gpt4 key购买 nike

我正在使用 C 库 libusb 为 USB 设备编写 C++ Linux 用户空间驱动程序。我有同一设备的两个拷贝(相同的供应商 ID 和产品 ID),想知道如何处理这种情况。

以下是我能想到的可能性:


我该如何处理?在处理许多相同设备时,前面的哪个选项(如果有)是 libusb 的行为?如何区分使用中的设备和闲置的设备?


正如@fiscblog 在他的回答中所说,“识别是通过设备描述符完成的(使用应始终唯一的序列号)”。我的问题是,为了这样做,两个驱动程序应该进行通信以了解哪个实例正在处理哪个设备(例如,使用文件),我想避免这种情况。我还想避免引入多线程并用一个驱动程序管理两个设备,因为我不具备以高效和良好控制的方式这样做的技能(讨厌的竞争条件......!)

最佳答案

正确的处理方式是:

  • 枚举所有设备(获取设备列表)
  • 识别请求的设备并打开它

识别是通过设备描述符完成的(使用应该始终唯一的序列号),正如您自己发现的那样。

如何知道设备是否正在使用?

如果设备打开,端点将被绑定(bind)并配置为 I/O。因此您无法再次打开它,但会得到您提到的错误代码。

关于c++ - 我如何知道 USB 设备是否已在使用中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734229/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com