使用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;
}
答
你应该写一个包装库,供您精确的电话。看看Mono.Unix如何包装syscalls(Mono.Unix Syscall.cs的谷歌代码搜索)来获得想法。然后为每个特定的ioctl命令创建一个包装,它使用您自己的数据表示。
抖动说 - 你需要的DllImport ioctl的本身。