以前从不开发任何驱动程序。2窗口内核模式驱动程序之间的通信
无论如何,我现在正在编写2个简单的windows内核模式驱动程序,并将2个驱动程序安装到连接到2个不同总线(ISA总线/ PCI总线)的2个不同设备上,并且不知何故2个驱动程序需要通话对方也希望数据交换,有没有什么有效的方法来实现这一点?
内核事件可能能够启用同步,但数据交换如何?
在用户模式下,管道/套接字可能是一个选项,但在内核模式下,是否存在命名管道或对象?谷歌表示,有一个为内核模式管道用法没有说明的API ...
我不是很熟悉Windows驱动程序框架,希望我做的意义..
的感谢!
+1。请注意(如果您愿意),您可以在驱动程序初始化期间使用此机制来交换回调例程地址和上下文指针,然后使用回调例程进行通信。内核驱动程序都加载到相同的地址空间,所以它不像进程间通信;驱动程序A可以直接调用驱动程序B中的函数,也可以直接写入驱动程序B创建的内存缓冲区中 - 只需知道地址即可。 –
酷!我认为这正是我正在寻找的。并且您的评论确实有助于清除像我这样的新手新手的头脑! @HarryJohnston – Sean
只有一件事,我该如何在驱动程序#1中“打开”#2驱动程序?我试过IoGetDeviceObjectPointer和ObReferenceObjectByName,都失败了。第一个参数询问应该看起来像“\\ Device \\ somedevice”或“\\ Driver \\ somedriver”的设备/驱动程序的名称,我尝试过使用WdfDeviceInitAssignName来定制我的驱动程序的名称,但是它又失败了... – Sean