【发布时间】:2014-01-02 05:17:33
【问题描述】:
系统详情:
OS X 10.9.1 (13B42)USB 红外线触摸屏详情:
低速设备@ 3 (0x14400000): ...................................... ....来自未知供应商的复合设备 端口信息:0x101a 非俘虏 附加到根集线器 外接设备 连接的 启用 连接到外部端口 端点数量(包括 EP0): 配置 1(当前)的总端点:2 设备描述符 描述符版本号:0x0100 设备类别:0(复合) 设备子类:0 设备协议:0 设备 MaxPacketSize:8 设备供应商 ID/产品 ID:0x255E/0x0001(未知供应商) 设备版本号:0x0100 配置数量:1 制造商字符串:0(无) 产品字符串:0(无) 序列号字符串:0(无) 配置描述符(当前配置) 长度(和内容):25 原始描述符(十六进制)0000:09 02 19 00 01 01 00 A0 FA 09 04 00 00 01 FF 00 原始描述符(十六进制)0010:00 00 07 05 81 03 08 00 0A 接口数量:1 配置值:1 属性:0xA0(总线供电,远程唤醒) 最大功率:500 毫安 接口 #0 - 供应商特定 备用设置 0 端点数量 1 接口类:255(特定于供应商) 接口子类; 0(特定于供应商) 接口协议:0 端点 0x81 - 中断输入 地址:0x81(输入) 属性:0x03(中断) 最大数据包大小:8 轮询间隔:10 毫秒我的测试代码源(https://github.com/maqinjun/MyDriver/blob/master/MyDriver/MyDriver/MyDriver.cpp)。
作为细节,我的红外触摸屏不是HID USB设备,并报告中断输入事件。所以,我需要为它编写一个自定义的 USB 驱动程序。然后,我决定编写一个 USB 驱动程序 kext。
根据 Mac 开发人员库 (I/O Kit Fundamentals),我看到了 处理事件。为了正确看待工作循环的角色,首先考虑它的事件源会有所帮助专为。在 I/O Kit 中有五类异步事件:
- 1。中断事件——源自设备的间接(次要)中断
- 2。计时器事件——由计时器定期传递的事件,例如超时
- 3。 I/O 命令——驱动程序客户端向其提供者发出的 I/O 请求
- 4。电源事件——通常通过调用驱动程序堆栈生成
- 5。结构事件——通常是涉及 I/O 注册表的事件
我在他们的启动函数中设置了他们的工作循环、事件源和事件处理程序。但不起作用。所以,我无法从 USB 触摸屏设备获取数据。
我的问题:
- 1。 os x USB kext中是否有其他方法可以从USB设备接收报告数据?
- 2。获取报表数据时如何将坐标分派给系统?
有人帮帮我吗?
【问题讨论】:
-
@Gabe 这不是重复的。但是,是的,它可能仍然过于宽泛,并且还违反了一个问题的规则。
标签: macos usb kernel-extension