Question

J'essaie de faire la commande ioctl via le framework Mono, mais je ne trouve pas ce que je cherche.

J'essaie d'envoyer une commande à une carte DVB comportant un module de noyau. J'espère que quelqu'un pourra lier ou expliquer clairement comment cela peut être fait. Tout exemple avec Mono utilisant des modules de noyau serait utile, je suppose.

Était-ce utile?

La solution

Mono ne contient pas de wrapper pour ioctl dans Mono.Unix, car les paramètres d’appel ioctl varient considérablement et un tel wrapper serait presque inutile. Vous devez déclarer un DllImport pour chaque ioctl dont vous avez besoin.

Vous n’avez probablement pas besoin d’une bibliothèque auxiliaire écrite en C, mais vous en aurez peut-être besoin au cours du développement pour extraire les valeurs réelles cachées derrière différentes macros du préprocesseur C. Par exemple, pour développer l’en-tête C:

#define FE_GET_INFO                _IOR('o', 61, struct dvb_frontend_info)

compiler et exécuter cette aide:

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

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

Une brève discussion sur la liste de diffusion mono sur le sujet .

Autres conseils

ioctl n'est pas pris en charge par Mono AFAIK. Trop, la liste des paramètres et des systèmes d'exploitation dépend de la demande réelle. Vous pouvez essayer DLLImport

Interopérabilité avec les bibliothèques natives

Vous devriez écrire une bibliothèque de wrapper pour vos appels exacts. Regardez comment Mono.Unix encapsule les appels système (google recherche de code pour Mono.Unix Syscall.cs) pour obtenir l’idée. Créez ensuite un wrapper pour chaque commande ioctl spécifique, qui utilise votre propre représentation des données.

Comme le dit jitter - vous aurez besoin d'importer DLLImporter l'ioctl lui-même.

Recherchez ma question similaire et une question ultérieure sur la sujet . Dans ce cas, j'essaie d'envelopper l'interface Videl4Linux, cela pourrait vous intéresser.

Je suggère vraiment ces lectures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top