4

我在 Mac OS X 上有一个基于 IOKit 的内核扩展,它是 IOService 的子类。当此服务加载时,我需要从中发布其他特定的运行时信息,并且我需要它可以从用户空间访问,而无需发出一些特定的 IOUserClient 请求。有问题的信息基本上是字段\值对,它的格式在 KEXT 和它的用户空间包装库之间共享。当服务处于活动状态时,内容会随着服务内部某些特定事件的变化而变化。

在 Linux 上,我可以使用 /proc 文件系统中的文件来完成此操作。你能在 OS X 上建议类似的策略吗?也许与 IORegistry 有关?

谢谢你。

4

1 回答 1

3

事实证明这很容易。您的 IOKit 服务(最终)继承自 IOService 类,该类又继承自 IORegistryEntry,该类表示您的服务在 IORegistry 中的条目实例,并提供一系列 setProperty\getProperty 方法来添加\更改\删除您自己在 IORegistry 中的字段进入您的服务。

内存数据库中的 IORegistry 当然可以从用户空间以编程方式访问,您可以在其中搜索服务条目并读取它发布的信息。

于 2010-02-25T08:04:27.010 回答