阅读:1273回复:5
问一个关于传递irp的问题
小弟刚接触驱动不久,有个问题一直感到很迷惑:
一般对irp不做处理的传递是: IoSkipCurrentIrpStackLocation(Irp); IoCallDriver(dx->NextStackDevice,Irp); 以上NextStackDevice是本驱动邦定到的设备驱动,那么能知道具体是什么驱动吗? 如果一直按照这样传递,是不是有可能这个Irp会经过系统所有的驱动? 如果自己写了个驱动Wdm1,使用IoAttackDeviceToDeviceStack()邦定到设备堆栈后,自己又写了个Wdm2的驱动程序,使用IoAttackDeviceToDeviceStack()是不是就邦定到Wdm1上了?这时自己又写一个Wdm3的驱动程序使用IoAttackDeviceToDeviceStack(),那么发向Wdm1的Irp包就会经过Wdm2和Wdm3吗? ![]() |
|
沙发#
发布于:2007-02-02 14:40
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2007-02-02 14:48
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2007-02-02 20:25
恩,谢谢,已经明白很多了,再问以下,如果只用IoAttackDeviceToDeviceStack又怎么知道这个过滤驱动绑定到了它想绑定的功能驱动上呢 ?
|
|
地下室#
发布于:2007-02-05 10:35
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2007-02-05 12:22
应该是调用IoAttackDeviceToDeviceStack邦定到设备栈吧,如果不是请多指教啊。
|
|