以前从不开发任何驱动程序。
无论如何,我现在正在编写2个简单的Windows内核模式驱动程序,2个驱动程序将被安装到2个不同的设备上,这些设备连接到2个不同的总线(ISA总线/ PCI总线),不知何故,2个驱动程序需要彼此交谈和数据交换也是预期的,有没有有效的方法来实现?
内核事件可能能够启用同步,但数据交换怎么样?
在用户模式下,管道/套接字可能是一个选项,但在内核模式下,是否有命名管道的对应物?谷歌表示没有内核模式管道使用的文档API ...
我对windows驱动程序框架不太熟悉,希望我有道理..
谢谢!
答案 0 :(得分:3)
内核模式组件之间的通信有IRP_MJ_INTERNAL_DEVICE_CONTROL。驱动程序#1按名称打开驱动程序#2,并发送带有输入或/和输出数据的内部IOCTL。
答案 1 :(得分:1)
@ Harry Johnston:您需要注意写入共享内存位置。我假设您正在响应两个设备之间实现串行缓冲区的上下文(只有一个设备可以写入,另一个设备只能读取),但显然应该添加一个应该谨慎处理设备之间的共享内存位置,特别是如果两个设备都频繁地写入该位置并导致未定义的行为或中断的锁定似乎意外地被服务。