阅读:1231回复:4
irp下传和完成问题
沿设备栈下传本层不处理的irp时,需要完成irp吗?还是只调用iocalldriver就行了。如果上层驱动程序不调用IoCompleteRequest
下层驱动程序可以自动完成irp吗? |
|
|
沙发#
发布于:2003-05-22 11:15
如果要继续向下传IRP,该用IoSetCompletionRoutine设置完成例程,只有当完成了IRP,并将它返回到I/O管理器的时候
才调用IoCompleteRequest |
|
板凳#
发布于:2003-05-23 10:23
当你不关心下层驱动完成状态时,需要等待下层驱动完成吗?DDK中有例子向下传递IRP时只调用IOCALLDRIVER,然后就RETURN了,没有等待下层驱动完成
|
|
|
地板#
发布于:2003-05-24 00:38
当你不关心下层驱动完成状态时,需要等待下层驱动完成吗?DDK中有例子向下传递IRP时只调用IOCALLDRIVER,然后就RETURN了,没有等待下层驱动完成 可以不等待irp的完成,直接返回 在第五章我解释了向驱动程序堆栈下层传递IRP的两种情况:一种情况你关心IRP的结果,因此你需要一个完成例程,另一种情况你不关心IRP的结果,因此也不需要安装一个完成例程。有许多PnP请求属于第二类,你收到这样的IRP,然后把它们向下传递,不关心该IRP以后的情况。因此,我建议你写一个辅助函数,该函数以“发射后不管”的方式下传IRP,代码见下面。 --Walter Oney 看书不仔细啊 :D [编辑 - 5/24/03 by mailme] |
|
|
地下室#
发布于:2003-05-24 09:36
谢了,老大 :D
|
|
|