标准过滤驱动程序里,我想建立一个IoCompletionRoutine来改变返回的数据,但是在写框架的时候,NTSTATUS completeirp(IN PDEVICE_OBJECT DeviceObject,IN PIRP irp,IN PVOID Context){ ...
全文
回复(15) 2005-07-18 11:46 来自版块 - 内核编程
表情
baiyuanfan那我就用普通的异步方式,直接在完成例程例修改数据也可以吧,让dispatch立刻返回(2005-07-23 21:22)
baiyuanfanupup(2005-07-23 21:18)
arthurtu就是, completion_routine 可能在passive,也可能在dispatch(2005-07-21 11:28)
bmyyyud下面是引用rayyang2000于2005-07-21 09:48发表的: just because sometimes u need synch process. and sometimes completion_routine runs at <= dispatch...(2005-07-21 10:44)
rayyang2000下面是引用baiyuanfan于2005-07-19 13:44发表的: arthurtu老大说的在很多ddk自己带的过滤驱动里都是这样子实现的,但是小弟有个疑问,就是这样会阻塞掉自己的驱动的dispatch的返回,使异步的io失去意义了。为什么不直接在自己驱动的dispa...(2005-07-21 09:48)
baiyuanfan下面是引用arthurtu于2005-07-19 13:05发表的: 对于楼主的情况,你可以在完成例程,停掉irp的complete处理 即 yourComplete(...) { // 创建一个event,通过PVOID Context传递 ....... arth...(2005-07-19 13:44)
arthurtu对于楼主的情况,你可以在完成例程,停掉irp的complete处理 即 yourComplete(...) { // 创建一个event,通过PVOID Context传递 KeSetEvent(...); return STATUS_MORE_PROCE...(2005-07-19 13:05)
mptchenxto baiyuanfan 倒了。。我说的就是通过直接return status_pending 不让上面傻等 跟IoCompleteIrp 无关 to zhao版,我只是简单说下pending。 并不是PendingReturned 。 你上面说的对 if(irp...(2005-07-19 11:54)
zhaock回答的不准确。这个问题说起来话长,试着解释一下。可以参看一下walter oney的windows driver model一书,有更为详细的解释 >>已经是IoCompletionRoutine了,为什么还会接受到PendingReturned的irp >&g...(2005-07-19 09:45)
zhangshengyu完成历程应该是这样 NTSTATUS CompletionRoutine(PDEVICE_OBJECT device, PIRP Irp, PVOID context) { if (Irp->PendingReturned) IoMarkIrpPending(I...(2005-07-19 09:35)

返回顶部