Treiber aus C-Code (Autoload, Kext, lkm)

540
pippo

Ich habe eine Frage zu StackOverflow gestellt. Ich dachte, es wäre der richtige Ort für Fragen, aber sie haben mich hierher geleitet, weil sie denken, es sei ein Thema, das sich mit Superbenutzern beschäftigt. So, hier bin ich :)

Ich möchte Sie fragen, wie ich meinen Treiber für ein bestimmtes Gerät auf einem Mac automatisch laden kann.

Ich habe einen Treiber geschrieben, der in C geschrieben ist, und nun fragte ich mich, wie ich dieses Programm in meiner Macos-Umgebung (/ linux / windows) ausführen kann, wenn mein Gerät angeschlossen ist. Kurz gesagt: Wie erkenne ich standardmäßig das System, wenn Dieses Gerät ist vom Hersteller + Produkt-ID (oder einem Linux oder Windows) an den Mac angeschlossen und startet den Treiber. Oder wie kann ich meinen C-Treiber in kext umwandeln und automatisch laden? In lkm (dll (?) für Windows?)

Danke!

PS Ich weiß, dass es einige spezifische Betriebssystem-abhängige APIs für die Kernel-Interaktion gibt, aber im Moment wäre ich dankbar, wenn ich meinen C-Treiber von einer "nahe an codierungslosen" Kernel-Erweiterung laden könnte, was ich erreichen möchte :

1 - Wenn ich mein USB-Gerät anschliesse, kann mein System es erkennen.
2 - Mein System lädt meine benutzerdefinierte Kernel-Erweiterung.
3 - ... führt mein externes C-Programm aus, um das Gerät zu bedienen.
(4- Natürlich zum Schluss alle säubern)

Kann ich Kernel-APIs verwenden oder habe ich keine andere Wahl?

Vielen vielen Dank!

0
Möchten Sie die Antwort für Windows, Mac oder Linux? Alle Antworten werden unterschiedlich sein. Sehen Sie sich beispielsweise für Linux "udev" an. dirkt vor 6 Jahren 0
Hauptsächlich für Mac, aber wenn Sie mir ein paar nützliche Tipps zu anderen Betriebssystemen geben können, wäre ich Ihnen dankbar :) Ich werde udev wie Sie gesagt haben, danke! pippo vor 6 Jahren 0
@pippo Gute Fragen sind nicht breit. Eine Lösung für alles zu suchen, macht es breit Ramhound vor 6 Jahren 0

0 Antworten auf die Frage