我一直无法弄清为什么拔出并重新插入后,调用UsbDeviceOpen()返回kIOReturnExclusiveAccess的原因。
设计: 1.在运行CFRunLoop()的线程上检测设备的添加/删除 2.执行异步读写的第二个线程。
当线程1收到kIOMessageServiceIsTerminated事件时, 我是AbortPipe(),USBInterfaceClose(),Interface-> Release(),USBDeviceClose(),DeviceInterface-> Release()和IOObectRelease(notification)。
除USBDeviceClose()外,所有调用均返回kIOReturnSuccess。它返回kIOReturnNoDevice。这是有道理的,因为设备已被卸下。但是当我重新插入电源时,操作系统似乎仍然认为线程/任务/进程已打开设备。在极少数情况下,重新插拔会起作用。
对于在Mac上进行编程,我还比较陌生,但我发现缺少这些文档。如果有人可以建议Mac专用论坛,那就太好了。这是一个编程问题,而不是系统/一般用户问题。
谢谢你, 吉姆