内核模式和用户模式应用程序之间的通信

hen*_*son 6 windows kernel driver wfp callouts

我已经构建了一个在内核模式下运行的WFP标注驱动程序.现在,我试图弄清楚如何在这个驱动程序和我在用户模式下运行的GUI应用程序之间进行通信.有任何想法吗?

我想要的是这样的:

  1. callout驱动程序检测端口4444上的接入连接(这不是我的问题的一部分)
  2. 驱动程序向用户模式应用程序发送消息.
  3. 该应用程序向用户显示通知,并询问是否应接受/阻止连接.
  4. 用户模式应用程序将用户对响应驱动程序的响应发回.

谢谢!

0xC*_*22L 4

我同意多斯基亚斯勋爵的观点。您需要创建一个设备对象并使其可用于 Win32 领域。然后您可以使用CreateFileReadFileWriteFile以及已经提到的DeviceIoControl来发送请求。

为了从驱动程序向应用程序获取通知,可以使用所谓的反向调用模型。您发送一些 IRP(通过上述机制之一)并以异步方式(或在单独的线程中)执行此操作。然后,驱动程序使它们保持悬空状态,直到它必须通知用户模式组件某些信息,然后返回完成的 IRP。替代方法是设置一些事件并让 UM 请求驱动程序保留在某种队列中的任何内容...

要点是,驱动程序没有直接的方法可以向用户模式应用程序发送一些消息。