我必须为 OSX 创建一个软件/驱动程序,以便与通过 USB 连接的 HID 设备进行交互。申请的目的如下,
我不是驱动程序开发人员,但有 C、C++、Obj C 等方面的经验。我想知道实现上述目标的最佳方法是什么。那就是我应该开发内核扩展(驱动程序)还是有更好的选择?.
我面临的挑战是,
无论怎样,这对我来说都是一个新领域。您能否建议一些文档或示例代码,从我开始。
另请提及可能有助于开发 Mac 设备驱动程序的论坛或社区。
谢谢大家的帮助。 :)
MacOS X 已经具有 HID 设备的驱动程序。因此您不需要为其开发特殊的驱动程序/内核扩展。
您可以使用跨平台开源库hidapi与HID设备通信。
这个问题的另一个答案对于许多不同的用例来说肯定是正确的,我建议尽可能走这条路。然而,在某些情况下,您肯定需要深入研究 kext 方面。特别是,如果 HID 设备需要充当系统键盘或指点设备,但内置 HID 堆栈没有按您希望的方式拾取它,则您可能需要(或想要)开发一个内核 -太空司机。 (不过,您也可以选择从用户空间将事件注入到窗口系统中,因此,如果有疑问,我将首先使用它来构建您的用例原型。)
您还没有向我们提供足够的详细信息,说明您想要做什么,或者设备的性质,无法真正确定哪种方法可能是最好的。
有关示例代码,请查看 Apple 自己的开源代码。 (IOHIDFamily、IOUSBFamily 等)在网络上搜索您正在使用的类也会在 Github 等上找到一些第三方 OSS 代码。
Stack Overflow 和相关的 Apple 开发者邮件列表(Darwin-drivers、Darwin-kernel 或 Usb,具体取决于问题),也许开发者论坛(我发现他们很难持续关注/监控)可能是最好的社区这种事。
您可以选择三种方式来开发您的驱动程序:
使用 c lib 从头开始构建:https://github.com/libusb/hidapi
遵循 Apple 的 HID 驱动程序文档: 资源参考:
据我所知,似乎第二点是开发驱动程序的最佳方法。但第三点也是一个开始的文档。总的来说,我的建议是 2 号或 3 号。