2010-02-22 29 views
4

在Mac OS X(IOService的子類)上有一個基於IOKit的內核擴展。當這個服務加載時,我需要從它發佈額外的特定運行時信息,我需要它可以從用戶空間訪問,而不需要提供一些特定的IOUserClient請求。有問題的信息基本上是字段\值對,它的格式在KEXT和它的用戶空間包裝庫之間共享。在服務內部的某些特定事件處於活動狀態時,內容會隨着時間而改變。在OS X上從IOKit KEXT發佈信息

在Linux上,我會用/ proc文件系統中的一個文件完成此操作。你能提供一個類似的OS X戰略嗎?也許與IORegistry有關?

謝謝。

回答

3

嗯,這原來很簡單。 您的IOKit服務從IOService類繼承(甚至是),它繼承自IORegistryEntry,它代表您在IORegistry中的服務條目的實例,並提供一系列setProperty \ getProperty方法來添加\ change \將您自己的字段刪除IORegistry條目爲您的服務。

內存數據庫中的IORegistry當然可以從用戶空間進行編程訪問,您可以在其中搜索服務的條目並讀取其發佈的信息。