在OS X上从IOKit KEXT发布信息

时间:2010-02-22 07:43:54

标签: macos iokit

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

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

谢谢。

1 个答案:

答案 0 :(得分:3)

嗯,事实证明这很简单。 您的IOKit服务(甚至)继承自IOService类,而IOService类继承自IORegistryEntry,它代表了IORegistry中服务条目的实例,并提供了一系列setProperty \ getProperty方法,以便在IORegistry中添加\ change \ remove您自己的字段进入您的服务。

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