【问题标题】:how to : do 2 way communication between user mode and kernel mode如何:在用户模式和内核模式之间进行 2 路通信
【发布时间】:2012-06-26 05:11:14
【问题描述】:
我编写了一个驱动程序,它从 IRP 缓冲区中提取一个值。现在基于这个关键字,我必须通过或丢弃 IRP。所以我需要从内核模式驱动程序中与数据库进行通信,这并不容易。所以我正在使用应用程序或 exe 来执行此操作,这将导致我将传递或丢弃 IRP 的真假。
我想将驱动程序与我在客户端应用程序中获取数据的应用程序链接。
我考虑过使用可以充当管道的临时文件。
请提出一些建议。
【问题讨论】:
标签:
driver
kernel-mode
wdf
minifilter
【解决方案1】:
我会选择 IOCTL。
与数据库通信的应用程序从向驱动程序发送一个或多个 IOCTL 开始。我们将这种类型的 IOCTL 称为 IOCTL-1。
IOCTL-1 的完成表示驱动程序对数据库的请求。请求详细信息可以在 IOCTL 输出缓冲区中传递。
应用程序检测 IOCTL-1 完成,检索请求详细信息,运行查询并使用不同的 IOCTL (IOCTL-2) 将结果传递给驱动程序。然后它重新发送 IOCTL-1,以便驱动程序可以发出另一个请求。