我有一个公开MaxFeatureReportSize = 263的设备。与设备通信的协议要求我发送长度恰好为263字节的特征报告。这在Windows上工作正常,但我遇到了一个奇怪的问题在Mac - IOHIDDeviceSetReport
在OS X 10.11和10.12返回神秘的错误0xe0005000
,我不能从IOKit头推断,并且相应的驱动程序代码(IOUSBHostHIDDevice
)是closedsource。无法在Mac上发送超过64个字节的HID特征报告
进一步调查显示
- 发送的64个字节或更少的请求时,误差不会出现。不幸的是,这并没有真正的帮助,因为协议被设置为石头,我不能改变它 - 我必须发送263字节。
- 在使用旧的
IOUSBHIDDriver
而不是0xe0005000
的OS X 10.10上,得到了0xe000404f
错误。这是kIOUSBPipeStalled
,但我每次尝试发送超过64个字节时都会收到。
这就是我得到的。我正在考虑下载OS X 10.8并调试IOUSBFamily,以了解为什么它无法处理超过64个字节的报告。苹果选择从OS X 10.9及以上版本中删除IOUSBFamily消息来源是一种遗憾。
感谢您的回答,事实证明,协议分析仪是最好的选择。我用自己的发现发布了自己的答案。另外,IOUSBFamily 10.9.4发行版不完整,缺少一些代码,我想这就是为什么它没有在OS X 10.9.4下列出。 – prazuber