2个Windows内核模式驱动之间的通信

以前从不开发任何驱动程序

无论如何,我现在正在写2个简单的Windows内核模式驱动程序,2个驱动程序将被安装到连接到2个不同的总线(ISA总线/ PCI总线)的2个不同的设备,并以某种方式需要2个司机彼此交谈和数据交换也是期待的,有没有什么有效的方法来实现呢?

内核事件可能能够启用同步,但数据交换如何?

在用户模式下,pipe道/套接字可能是一个选项,但在内核模式下,有没有对应的命名pipe道什么的? 谷歌表示,没有内核模式pipe道使用logging的API …

我不是很熟悉Windows驱动程序框架,希望我有道理..

谢谢!

内核模式组件之间的通信有IRP_MJ_INTERNAL_DEVICE_CONTROL 。 驱动程序#1通过其名称打开驱动程序#2并发送具有输入或/和输出数据的内部IOCTL。

@ Harry Johnston :你需要小心写入共享内存位置。 我假设你正在响应在两个设备之间实现串行缓冲区的情况(只有一个设备可以写,另一个只能读),但显然应该加上你应该谨慎接近设备之间的共享内存位置,特别是如果这两个设备将频繁写入该位置,并导致不确定的行为或中断的锁定被意外地处理。