我正在尝试通过Mono框架执行ioctl命令,但我无法找到我正在寻找的内容。

我正在尝试将命令发送到具有内核模块的DVB卡。我希望有人能够清楚地联系或解释如何做到这一点。使用内核模块的Mono的任何例子都是有用的。

有帮助吗?

解决方案

Mono在Mono.Unix中不包含ioctl的包装器,因为ioctl调用参数差异很大,这样的包装器几乎没用。您应该为您需要的每个ioctl声明 DllImport

您可能不需要用C编写的辅助库,但是,在开发期间可能需要它来提取隐藏在不同C预处理器宏后面的实际值。例如,要展开C标头:

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

编译并执行此帮助程序:

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

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

关于该主题的简短单声道邮件列表讨论

其他提示

您应该为确切的调用编写一个包装器库。看看Mono.Unix如何包装系统调用(Mono.Unix Syscall.cs的谷歌代码搜索)以获得想法。然后为每个特定的ioctl命令创建一个包装器,它使用您自己的数据表示。

正如抖动所说 - 你需要DLLImport ioctl本身。

检查我的类似问题,以及稍后对subject 。在这种情况下,我试图包装Videl4Linux接口,这可能是您感兴趣的。

我真的建议那些读数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top