C# 应用程序是不是可以与内核驱动程序通信?

Posted

技术标签:

【中文标题】C# 应用程序是不是可以与内核驱动程序通信?【英文标题】:Is it possible for a C# application to communicate with a Kernel Driver?C# 应用程序是否可以与内核驱动程序通信? 【发布时间】:2016-04-25 10:37:11 【问题描述】:

我一直想知道我的 KMDF 驱动程序是否能够直接与 C# 应用程序通信,反之亦然。

经过几项研究,我只能发现微过滤器可以在 C# 服务中工作,不太确定 C# 应用程序(具有常规 Win32 权限)

以下是正确的解决方案吗...? 内核驱动程序 (C) DLL (C++) 应用程序 (C#)

提前谢谢你。

【问题讨论】:

那么这与 C++ 或 C 有什么关系?当然,NT 内核主要是用 C 编写的,但是...? 我已经包含了这些标签,以防有人知道这样的解决方案是否有效。 检查 DeviceIOControl API 用 C++ 编写的 KMDF 驱动程序示例和与之通信的 C# Win App 可以在这里找到:delog.wordpress.com/2012/03/23/… 你引用的delog解释了WinUSBNet的一个例子,它仅限于USB。 【参考方案1】:

通常微过滤器使用FltSendMessage function,而不是DeviceIOControl

只需让 Pinvoke 调用它或使用包装器

【讨论】:

以上是关于C# 应用程序是不是可以与内核驱动程序通信?的主要内容,如果未能解决你的问题,请参考以下文章

linux内核,驱动,应用程三者的概念和之间的关系 - Avatarx

libdrm 是不是通过 ioctl() 与内核 DRM/显卡通信?

KISS:与 RESTful Web 服务通信的简单 C# 应用程序

应用层与内核的几种通信方式

Android跨进程通信

linux进程中的通信方式