我正在开发一个硬件/软件应用程序,通过usb连接,这是一个对某些数据进行一些板外处理的设备。应用程序意味着多次打开,哪个设备需要哪个数据由流内参数标识。我的问题是,多个应用程序可以声称一个接口吗?我的第一个实现使用了WinUSB,但我很快意识到这限制了我只有一个实例。 libusb文档声称在其驱动程序中删除了此限制。
我担心的是,因为我打算运行的实例远远超过8个,所以只分配了8个接口是不够的。事实上,如果我不能多次声明一个接口,是否有一种方法可以让应用程序调用一个声明接口并在应用程序之间管理和路由流量的共享库?
答案 0 :(得分:0)
据我所知,在任一实现中,只能有一个句柄对设备开放。
我认为你在如何处理这个问题方面正在走上正轨。我过去做过类似事情的方式是创建一个在后台运行的服务。该服务应该由应用程序的第一个实例启动,并且可以保留其客户端的引用计数。在您的应用程序的下一个实例上增加引用计数,并且每当客户端应用程序关闭时减少引用计数。当最后一个应用程序关闭时,服务也可以关闭。
该服务可以打开设备并将所有数据读入缓冲区。从那里你可以将智能放入服务来处理数据并将其加载到不同的共享缓冲区,每个缓冲区可以由其他客户端应用程序实例单独访问,或者你可以简单地为每个人提供一个巨大的缓冲区(但这是风险更高的解决方案)。