使用Linux的ioctl与单

问题描述:

我试图通过单做框架的ioctl命令,但我不能找到我要找的。使用Linux的ioctl与单

我试图将命令发送到具有内核模块DVB卡。我希望有人能够清楚地联系或解释如何做到这一点。我猜,任何使用内核模块的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; 
} 

A short mono mailing list discussion on the topic

Mono AFAIK不支持ioctl。操作系统特定的和参数列表取决于实际的请求。你可以尝试的DllImport

Interop with Native Libraries

你应该写一个包装库,供您精确的电话。看看Mono.Unix如何包装syscalls(Mono.Unix Syscall.cs的谷歌代码搜索)来获得想法。然后为每个特定的ioctl命令创建一个包装,它使用您自己的数据表示。

抖动说 - 你需要的DllImport ioctl的本身。

检查我的similar question,后来问题上subject。在这种情况下,我试图包装Videl4Linux接口,这可能会对您感兴趣。

我真的建议那些阅读。