IoSetCompletionRoutine( Irp, SfQueryInformationCompletion, NULL, TRUE, FALSE, FALSE );完成历程:DBGSTATICNTSTATUSSfQueryInformationCompletion( ...
全文
回复(5) 2005-02-21 21:12 来自版块 - 内核编程
表情
bmyyyud问题不在完成例程,而在别处,如有些地方,你调用类似IoSkipCurrentIrpStackLocation的函数,使IrpStack堆栈层数不够,这样便出现你的那种情况。(2005-02-22 10:02)
zhangshengyu需要 IoCopyCurrentIrpStackLocationToNext( Irp );(2005-02-22 09:26)
tooflat关于楼主的问题,windows驱动编程模型中是这么说的: 完成例程使用的设备对象指针参数就是I/O堆栈单元中DeviceObject域中的指针。通常IoCallDriver设置该值。有时,在创建IRP时还同时创建一个额外的堆栈单元,以便能向完成例程传递参数而不用创建一个额外...(2005-02-22 09:22)
tooflat不是说了在完成例程里不要碰IRP.因为下层PDO已经调用IOCOMPLTERREQUEST了,可能IRP已经被释放了..... 在完成例程里当然可以碰irp,因为完成例程就是ioCompleteRequest在内部调用的,只有在所有的完成例程全部调完以后,irp才会被释放(2005-02-22 09:19)
wowocock不是说了在完成例程里不要碰IRP.因为下层PDO已经调用IOCOMPLTERREQUEST了,可能IRP已经被释放了.....(2005-02-21 22:20)

返回顶部