3

我已经使用 IOHIDManagerScheduleWithRunLoop 在主线程 (runLoop) 上安排了 HIDManager。所以,我在主线程上得到了设备匹配和删除回调。

但是,我已经在另一个线程上安排了一个设备IOHIDDeviceScheduleWithRunLoop,比如说 Thread-1。根据它的文档,当我设置报告时,我应该在 Thread-1 RunLoop 上收到回调。

IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

但是,我在主线程上收到 HIDReport 回调。有什么帮助吗?

更新:

即使我删除了 IOHIDDeviceScheduleWithRunLoop,我也看到报告回调被调用。报告回调应该在设备 RunLoop 上调用。

根据 IOHIDManagerScheduleWithRunLoop 的文档,“这正式将 HID 管理器与客户端的运行循环相关联。此计划将传播到当前枚举的所有 HID 设备以及与 HID 管理器匹配的新 HID 设备”

这应该只用于匹配和删除,但我也得到了输入报告。

4

1 回答 1

0

你在线程 1 上有一个运行循环吗?如果它是一个命令行应用程序,你必须显式地启动一个运行循环(例如通过调用 CFRunLoopRun())

于 2012-02-11T07:52:46.513 回答