我有一個公開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