从内核模式将事件发送到Windows服务

时间:2010-09-10 20:08:45

标签: c++ windows multithreading kernel

我正在编写一个由内核模式驱动程序和用户模式Windows服务组成的软件。内核驱动程序需要向服务通知服务将处理的不同事件和信息。

我的问题是:建立此通信的最佳方式是什么?我知道可以使用minifilter和FilterGetMessage()从内核获取消息,但这需要轮询内核以获取新数据。我需要一个系统,让内核在有新数据要处理时通知服务。

作为旁注,服务本身正在使用生产者消费者模式,因此将有一个线程专门用于从内核获取数据并将其放入队列以供另一组工作线程处理。对这种设计的任何想法也是受欢迎的。

1 个答案:

答案 0 :(得分:2)

为什么不在服务端使用ReadFile或DeviceIoControl?驱动程序端的简单IRP,当您有要报告的内容时完成它。该服务需要启动一个线程或使用I / O完成回调。和CancelIo在服务退出时取消阻止呼叫。