我正在尝试使用 IOKit 中的 IOHIDManager 与 USB HID 设备进行异步通信。我可以使用
IOHIDDeviceRegisterInputReportCallback
注册回调并使用 IOHIDDeviceSetReport
设置报告。但当我尝试使用 IOHIDDeviceSetReportWithCallback
与设备通信时,却失败了。
错误为 kIOReturnUnsupported (0xE00002C7)。
这里是苹果 USB 邮件列表中一位有相同问题的绅士的链接。
我不想认为对上述消息的响应是正确的,但我可以确认,这个方法没有实现。以下是苹果开发者技术支持的部分回复:
查看源代码 IOHIDDeviceSetReportWithCallback 只是调用 (*设备->设备接口)->setReport;理论上应该是 IOKIT HID 驱动程序...看着它刚刚返回 kIO返回不支持...
该方法似乎在最新的 MacOS 版本上可以正常工作。我发现 Paul Stoffregen 的一段代码旨在暴露该错误,并且它在 MacOS Sonoma 14.0 上可以正常工作。