我希望在OS重新启动之间保存kext设置。由于我需要在kext被立即加载后的设置,我不能等待管理守护进程启动。这是一种从kext或其他方式来读/写kext plist文件的方法吗?从kext读取plist
1
A
回答
1
基本上,不 - 你应该在用户空间中存储设置,并使用launchd服务在kext中设置它们。直到你的kext收到设置,它应该只使用一些理智的默认值。
在kext启动中真正包含设置的一种方法是将自定义属性添加到kext的info.plist中的IOKitPersonality。显然,这意味着改变设置需要改变kext本身,但是我听说有人在苹果的公共达尔文邮件列表中实际上做了这些事情的报道(尽管苹果员工对此进行了批评)。请注意,kext缓存不会像这样:如果您的用户空间程序更改了info.plist中的设置,则可能需要增加捆绑包版本号,以便kext缓存拾取更改,否则缓存/预先链接的kext将不会看到变化。您需要在rules for kext bundle versions的限制范围内执行此操作,否则将不会检测到版本增加,或者更糟糕的是,kext缓存会完全拒绝kext。另外,不要忘记在更新kexts后触摸/ System/Library/Extensions /。
更新:由于kext签名要求,修改kext的info.plist将不再在10.9和10.10中工作。
在您的kext是存储过滤器方案的特定情况下,您可以将设置存储在提供程序分区的特殊“超级块”中。例如,AppleRAID(开源)就是这样做的。不过,这对于任何其他类型的kext都是不实用的。
相关问题
- 1. 从plist中读取
- 2. 从plist中读取
- 3. 从.plist文件中读取
- 4. 从文档中读取plist
- 5. 无法从mainbundle读取plist
- 6. 无法从plist读取
- 7. 读取plist文件
- 8. 从plist读到NSArray
- 9. 保存并从plist读取数据?
- 10. 从Plist中读取特定行
- 11. 从plist文件读取数据
- 12. 从plist文件中写入和读取
- 13. 从未保存的plist中读取
- 14. 无法从plist中读取数据
- 15. 从plist中读取多个数组
- 16. 从读取PLIST信息TableView中
- 17. XCode:从plist读取数据到NSmutablearray
- 18. 从plist读取bool值问题
- 19. iOS:从.plist中读取数据字典
- 20. 数组无法从plist读取数据
- 21. 如何从应用程序的plist中读取plist
- 22. 读取的plist iPhone SDK的
- 23. Plist读取和写入iPhone
- 24. 通过NSUserDefaults读取pList
- 25. 如何读取plist数据
- 26. 无法读取plist文件
- 27. 无法读取/写入plist
- 28. 从网站阅读plist
- 29. 阅读的.plist从网上
- 30. 如何读取plist数据并从中获取int?
嗨,我正在处理相同的情况,我不明白如何使用'launchd'在kext中设置修改后的plist。也许你可以详细说明这一点?谢谢 – Zohar81
@ Zohar81有很多方法可以做到这一点,但例如,如果您的驱动程序是基于IOKit的,则可以创建一个与您的驱动程序的“IOService”类相匹配的守护进程。当守护进程启动时,通过设置属性或打开用户客户端连接到驱动程序的服务。然后,配置。 – pmdj
我实际上在IOKit基础驱动器上工作,并进行匹配和连接部分,但我正在寻找一种通用方法来设置我的驱动程序属性(假设配置长度和类型可能会有所不同)。也许你可以涉及我发布的一个附加问题(https://stackoverflow.com/questions/47160052/passing-cfdictionary-via-iokit-command) – Zohar81