如果在先前的程序执行中清理失败,libusb不会枚举设备。我可以阻止这种情况,还是从软件中的坏状态中恢复?

时间:2014-11-19 18:36:09

标签: libusb-1.0

我有代码打开libusb设备,执行一些异步传输,然后退出。有时最后的清理代码可以解决,我可以毫无问题地重新运行程序,但有时候 libusb_cancel_transfer返回LIBUSB_ERROR_PIPE,此后设备不会出现在libusb_get_device_list在任何后续程序执行中返回的列表中。

可以通过拔出设备并重新插入同一端口来恢复问题,但这是不可接受的。我至少需要某种方式从软件中的坏状态中恢复,但理想情况下这不应该发生。

如果此问题可能与平台有关,我运行的是MacOSX 10.9.5,程序是使用llvm编译器构建的C ++。

1 个答案:

答案 0 :(得分:0)

我发现我无意中提交了控件传输,其设置包是未初始化的内存。 (使用了错误的大小常量。)当我停止这样做时,问题不再发生。