heise233
驱动牛犊
驱动牛犊
  • 注册日期2007-05-21
  • 最后登录2007-06-26
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1491回复:4

如何让IRP处理过程等待

楼主#
更多 发布于:2007-06-15 17:07
我想用一个应用程序何一个驱动来控制光盘的识别,做法是先用应用程序创建两个event,通过消息传递给驱动程序,然后应用程序通过一个线程等待事件的发生。驱动程序在MOunt事件发生时在处理函数sfControlMountVolume中Set其中的一个事件hMountEvent,然后等待另一个判断是否合法的事件hCheckOK的触发。我是这么写的:
        if(STATUS_SUCCESS == KeWaitForSingleObject((PKEVENT)gpPermitEventObject,Executive,UserMode,0,0))
        {
            DbgPrint("After gpPermitEventObject");
        }
        else
        {
            Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
        }
但是发现不管事件是否触发,KeWaitForSingleObject都永远也结束不了(if和else都进不去)。不知道为什么
请高人指点一下
heise233
驱动牛犊
驱动牛犊
  • 注册日期2007-05-21
  • 最后登录2007-06-26
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-20 16:28
发现mount处理中无法等到event,但是别的例程中没问题
heise233
驱动牛犊
驱动牛犊
  • 注册日期2007-05-21
  • 最后登录2007-06-26
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-18 14:29
我跟踪过了, 只有当这个IRP结束了才可以收到应用程序设定的event,如果这个时候让mount处理延时的话一样收不到。怎么办好呢
yandong_8212
驱动小牛
驱动小牛
  • 注册日期2006-07-28
  • 最后登录2011-02-11
  • 粉丝0
  • 关注0
  • 积分1046分
  • 威望464点
  • 贡献值1点
  • 好评度173点
  • 原创分0分
  • 专家分1分
地板#
发布于:2007-06-18 13:56
如果你一步一步跟踪后发现在WAIT那行不动了,那很明显是没有等到事件
商务MSN:YanDong_8212@163.com
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-18 12:55
STATUS_PENDING
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部