2

我创建了一个无代码 kext,这样我的一个 USB 设备就不会被 AppleUSBUHCI 驱动程序绑架。当我插入一个时,它应该加载不同的驱动程序。FTDI 和 CSR 设备都会发生这种情况。

我把我的 kext 放在一起,info.plist 看起来很像这里的示例:http: //www.projectosx.com/forum/index.php? showtopic=798只是具有不同的 VID/PID。我用 -entZ 运行了 kextutil,唯一的警告是我的个性有不同的 CFBundleId。我按照此处的说明,在 Mac 上读取和写入 USB (HID) 中断端点来加载它。

当我加载 kext 时,它说它加载成功,但是我用 kextstat 看不到它,当我插入我的设备时,它仍然被劫持。当我尝试执行 kextunload 时,它说未加载 kext。

任何帮助,将不胜感激。

4

1 回答 1

4

从 Apple 列表中,我了解到无代码 kext 不会与 kextstat 一起出现,除非它们链接到现有驱动程序。我与 IOKit 捆绑包相关联的个性只会在加载后显示,如果它有存根代码。

对于我的设备,我找到了类似设备的现有驱动程序,并首先将个性注入该驱动程序。当我插入我的设备时,我能够验证它是否已加载,并且我可以打开我的设备。我将该驱动程序恢复到原始状态。然后我创建了一个无代码的 kext,它具有我注入现有驱动程序的个性。然后,当我插入我的设备时,该驱动程序被加载,然后我就可以与我的设备进行通信了。

我原来的问题的解决方案是我原来的无代码 kext 和 bcdDevice 的 CFBundleIdentifier。从http://lists.apple.com/archives/usb/2009/Aug/msg00050.html,我得到了关于不同类型的无代码 kext 的提示,并意识到我需要将 CFBundleIdentifier 用于现有驱动程序。

于 2011-09-06T15:45:09.547 回答