Frage

Ich versuche ioctl-Befehl durch Mono-Framework zu tun, aber ich kann nicht finden, was ich suche.

Ich versuche Befehl an eine DVB-Karte zu senden, die eine Kernel-Modul hat. Ich hoffe, dass jemand eindeutig verknüpfen oder erklären kann, wie dies geschehen kann. Jedes Beispiel mit Mono-Kernel-Modulen wäre nützlich, denke ich.

War es hilfreich?

Lösung

Mono keinen Wrapper für ioctl in Mono.Unix enthalten, weil ioctl Aufrufparameter stark variieren und so ein Wrapper würde fast nutzlos. Sie sollten eine deklarieren DllImport für jede ioctl Sie benötigen.

Sie haben wahrscheinlich in C geschrieben keinen Helfer Bibliothek benötigen, aber Sie es während der Entwicklung müssen möglicherweise hinter verschiedenen C Präprozessormakros versteckt Istwerten zu extrahieren.

: Zum Beispiel, C-Header zu erweitern
#define FE_GET_INFO                _IOR('o', 61, struct dvb_frontend_info)

kompilieren und führen Sie diese Helfer:

#include <linux/dvb/frontend.h>
#include <stdio.h>

int main()
{
  printf("const int FE_GET_INFO = %d;\n", FE_GET_INFO);
  return 0;
}

Eine kurze Mono-Mailingliste Diskussion über das Thema .

Andere Tipps

ioctl wird nicht von Mono AFAIK unterstützt. Zu OS-spezifische und Parameterliste ist abhängig von tatsächlichen Anfrage. Sie könnten versuchen, DLLImport

Interop mit nativen Bibliotheken

Sie sollten eine Wrapper-Bibliothek für Ihre genauen Anrufe schreiben. Schauen Sie, wie Mono.Unix wickelt syscalls (Google Codesearch für Mono.Unix Syscall.cs), um die Idee zu bekommen. Dann erstellen Sie einen Wrapper für jeden spezifischen ioctl-Befehl, die eigene Darstellung der Daten verwendet.

Als Jitter sagte -. Sie brauchen die ioctl sich DllImport

Nach meiner ähnliche Frage und später Frage auf der subject . Ich versuche, die Videl4Linux Schnittstelle zu wickeln In diesem Fall das für Sie von Interesse sein könnten.

Ich schlage vor, wirklich diese Lesungen.

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