【问题标题】:Can more than one application claim an interface in libusb?可以多个应用程序在 libusb 中声明一个接口吗?
【发布时间】:2013-12-04 15:36:12
【问题描述】:

我正在开发一个通过 USB 连接的硬件/软件应用程序,它是一种对某些数据进行离线处理的设备。该应用程序旨在多次打开,哪个设备需要哪些数据由流内参数标识。我的问题是,可以多个应用程序声明一个接口吗?我的第一个实现使用了 WinUSB,但我很快意识到这将我限制在一个实例中。 libusb 文档声称在他们的驱动程序中删除了这个限制。

我担心的是,因为我打算运行的实例远远超过 8 个,所以只分配 8 个接口是不够的。事实上,如果我不能多次声明一个接口,是否有一种方法可以让应用程序调用一个共享库来声明该接口并管理和路由应用程序之间的流量?

【问题讨论】:

    标签: usb libusb


    【解决方案1】:

    据我所知,在任一实现中,您只能为设备打开一个句柄。

    我认为您在如何处理这个问题方面走上了正轨。我过去做过这样的事情的方式是创建一个在后台运行的服务。该服务应该由应用程序的第一个实例启动,并且可以保留其客户端的引用计数。在您的应用程序的下一个实例上增加您的引用计数,并且每当客户端应用程序关闭时减少引用计数。当最后一个应用程序关闭时,服务也可以关闭。

    该服务将负责打开设备并将所有数据读入缓冲区。从那里您可以将智能放入服务中以处理数据并将其加载到不同的共享缓冲区中,每个共享缓冲区可由您的其他客户端应用程序实例单独访问,或者您可以简单地为每个人提供一个巨大的缓冲区(但这是风险更高的解决方案)。

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2023-03-16
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2021-12-10
      相关资源
      最近更新 更多