阅读:1984回复:11
请问怎样实现两个驱动之间相互通讯
如题,
我现在知道用 INTERNAL DEVICE CONTROL 可以,但是网上详细介绍的资料很少,请介绍一下细节,谢谢!!!!!!!!!!!!!!!!!!!!!! 另外看到用 ZwCreateFile ZwWriteFile 等函数也可以实现,但是参数比较多,我还在试. |
|
沙发#
发布于:2007-06-15 11:29
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2007-06-15 12:45
用IoGetDeviceObjectPointer得到的device object,然后在驱动中用IoBuildDeviceIoControlRequest构建一个Device Control的IRP,然后调用IoCallDriver发送下去,现在试验已经可以工作了。
!!!!!!!!!!!!!!!!!!!!!!!!!! 兄弟,涉及到这几步的代码能给我看看吗?我也是这样调试的,但是没有试成功,可能有些地方没有设置好. 我的邮箱 yan_hg@163.com 一定高分相送 谢谢了 |
|
地板#
发布于:2007-06-15 15:42
我的 IoGetDeviceObjectPointer 调用现在还是一直返回错误,正在试那里出错了.
希望能看看你在这里是怎么设的 |
|
地下室#
发布于:2007-06-15 15:44
我留个电子邮箱,你有联系方式吗?希望能和你交流一下
|
|
5楼#
发布于:2007-06-15 19:11
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2007-06-17 13:02
1. 用紧耦合方式。也就是说从1个驱动中导出函数,类似于DLL,另外1个驱动通过LIB和.H直接调用。
2. 通过2个驱动共享同一内存,通过互斥标志访问。达到数据通信。 3.用IoCallDriver。在另一个驱动中的INTERNAL DEVICE CONTROL 中响应相应的IRP即可。 |
|
|
7楼#
发布于:2007-06-17 17:13
用户被禁言,该主题自动屏蔽! |
|
8楼#
发布于:2007-06-18 12:41
1. src\storage\class\classpnp
2. search for IoBuildDeviceIoControlRequest/IoBuildSynchronousFsdRequest/IoBuildAsynchronousFsdRequest |
|
|
9楼#
发布于:2007-06-18 12:49
还有一个很简单的例子,就是IP Filter Hook的例子,DDK的文档有代码的。
|
|
10楼#
发布于:2007-06-18 14:59
用户被禁言,该主题自动屏蔽! |
|
11楼#
发布于:2008-03-23 20:59
codeproject上有一篇文章使介绍这个知识的。
introduction to driver part3 |
|