aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:928回复:7

关于KeWaitForSingleObject的问题。

楼主#
更多 发布于:2004-12-01 09:44
我估计IoCallDriver返回STATUS_PEDING,我想让他返回“成功值”,所以就调用KeWaitForSingleObject()。
但是添加KeWaitForSingleObject()后,计算机会重新启动。请问如何解决?

IoSetCompletionRoutine( Irp, FilemonHookDone, NULL, FALSE, FALSE, FALSE );
status = IoCallDriver( hookExt->FileSystem , Irp );
if(STATUS_PEDING == status)
    KeWaitForSingleObject(&event, Executive, KernelMode, TRUE, 0);
RtlCopyMemory(buffer1,buffer2,length)
IoCompleteRequest(Irp , IO_NO_INCREMENT);
return Irp->IoStatus.Status;


[编辑 -  12/1/04 by  aasa2]

[编辑 -  12/1/04 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-01 11:10
我把IoCompleteRequest(Irp , IO_NO_INCREMENT)删了,不会重启了。
但是RtlCopyMemory(buffer1,buffer2,length)功能没有实现!

急问!


[编辑 -  12/1/04 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-01 16:08
我觉得IoCallDriver返回STATUS_PEDING时,你不用可以处理,直接返回就可以了吧,系统会自动处理的,不过在FileMon的程序里,只在Complete例程里处理了这种情况。
在交流中学习。。。
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-02 03:53

IoCompleteRequest(Irp , IO_NO_INCREMENT);
return Irp->IoStatus.Status;


Irp都完成了, 你怎么还能用"Irp->"呢?

toad
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-02 08:33
IoCompleteRequest(Irp , IO_NO_INCREMENT);
return STATUS_SUCCESS;
好像也不行!

能指点一下吗?

技术交流:aasa2@21cn.com QQ群:10863699
KingV
驱动牛犊
驱动牛犊
  • 注册日期2001-11-27
  • 最后登录2006-08-04
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-31 16:51
在微软的例子程序中,如果IoCallDriver返回PENDING状态,它只是调用了IoMarkIrpPending然后返回了~~~~~
hellangel
驱动中牛
驱动中牛
  • 注册日期2004-02-16
  • 最后登录2016-04-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望236点
  • 贡献值0点
  • 好评度205点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-12-31 19:01
建议看一下蓝平的原因
春眠不觉晓,处处闻啼鸟。 夜来风雨声,花落知多少?
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-31 19:33
这个问题解决了,fsfile说的对,其实需要到完成历程中处理。
谢谢各位关心。

祝大家元旦快乐!

[编辑 -  12/31/04 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
游客

返回顶部