![来自 C 代码的驱动程序(自动加载、kext、lkm)](https://linux22.com/image/1544653/%E6%9D%A5%E8%87%AA%20C%20%E4%BB%A3%E7%A0%81%E7%9A%84%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%88%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD%E3%80%81kext%E3%80%81lkm%EF%BC%89.png)
我曾在 StackOverflow 上提出过一个问题,以为这是提问的正确地方,但他们将我引导到这里,因为他们认为这是一个与超级用户相关的主题。所以我就在这里 :)
我想问您如何在 Mac 上自动加载针对特定设备的驱动程序。
我已经用 C 编写了一个驱动程序,现在我想知道如何在我的设备插入时在我的 macos(/linux/windows) 环境中运行此程序。简而言之:如何通过系统默认识别此设备是否通过供应商+产品 ID 插入 mac(或插入 linux 或 windows)并启动我的驱动程序?或者如何在 kext 中转换我的 C 驱动程序并自动加载它?在 lkm 中?(windows 的 dll(?)?)
感谢您!
PS,我知道有一些用于内核交互的特定于操作系统的 API,但目前,如果我可以从“接近无代码”的内核扩展加载我的 C 驱动程序,我将不胜感激,我想要实现的是:
1 - 当我插入 USB 设备时,我的系统能够识别它
2 - 我的系统加载我的自定义内核扩展。3
- ... 将运行我的外部 C 程序来处理设备。
(4- 当然,完成后,清除所有内容)
这是否可能,或者我别无选择,只能使用内核 API?
非常感谢!