【问题标题】:Codeless kext loading problem无代码kext加载问题
【发布时间】:2011-08-31 21:27:34
【问题描述】:

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

我将我的 kext 放在一起,info.plist 看起来很像这里的示例:http://www.projectosx.com/forum/index.php?showtopic=798 只是具有不同的 VID/PID。 我用 -entZ 运行了 kextutil,唯一的警告是我的个性有不同的 CFBundleId。我按照Reading and writing to USB (HID) interrupt endpoints on Mac 此处的说明进行了加载。

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

任何帮助将不胜感激。

【问题讨论】:

  • 查看 Apple 开发者网站 - 查看技术问答 QA1076。添加 bcdDevice(从 IOReg 获取值),没有帮助。将 OSBundleRequired 从 "Console" 更改为 "Root" 仍未加载。

标签: macos osx-lion iokit kernel-extension


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2020-11-22
    • 1970-01-01
    • 2017-08-19
    • 2020-05-05
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多