Frage

Ich habe eine IOKit-basierte Kernel-Erweiterung auf Mac OS X, eine Unterklasse von IOService. Wenn dieser Dienst Lasten i zusätzliche spezifische Laufzeitinformationen von ihm veröffentlichen müssen, und ich brauche es vom Benutzerraum zugänglich zu sein, ohne einige spezifische IOUserClient Anfragen. Die fraglichen Informationen sind im Grunde Feld \ Wert-Paare und das Format ist zwischen den KEXT und Benutzerraum-Wrapper-Bibliothek geteilt. Der Inhalt wird einige Zeit auf einige spezifische Ereignisse innerhalb des Service wechseln, wenn er aktiv ist.

Auf Linux-i erreichte dies mit einer Datei im Verzeichnis / proc-Dateisystem haben würde. Können Sie eine ähnliche Strategie auf OS X raten? Vielleicht IORegistry etwas im Zusammenhang mit?

Danke.

War es hilfreich?

Lösung

Nun, das ziemlich einfach entpuppte. Ihr IOKit Service ist (eventially) von IOService Klasse geerbt, der wiederum von IORegistryEntry geerbt, die eine Instanz des Dienstes Eintrag in IORegistry repräsentiert und stellt eine Familie von setProperty \ getProperty Methoden \ Änderung hinzufügen \ eigene Felder in IORegistry entfernen Eintrag für Sie da.

Die IORegistry in einer In-Memory-Datenbank, die programmatisch natürlich von Benutzerraum zugänglich ist, wo Sie es für Sie Service Eintritt und gelesenen Informationen von ihm veröffentlicht suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top