wutz2000
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1248回复:5

Event句柄传递到驱动程序,出现问题

楼主#
更多 发布于:2005-08-04 11:49
  应用程序CreateEvent, 并且CreateThread,等待该Event。
将Event句柄通过IOCtrl传递到驱动程序,驱动程序CreateThread,在该线程中SetEvent,应用程序线程不能退出等待状态,请教为什么会这样,如何解决?

注:将Event句柄通过IOCtrl传递到驱动程序,驱动程序直接SetEvent,应用程序可以响应。

是否必须使用Named Event?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-04 15:14
应用起的线程不能退出你怎么又说应用可以响应呢?你怎么判断可以响应?按理说你这样用是不行的,用named event是一个办法,你可以试试。
根据地的兄弟们,团结就是力量
wutz2000
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-04 17:30
应为应用程序的线程WaitSingleObject的TimeOut参数是INFINITE,所以如果驱动程序中的线程SetEvent能够起作用的话,应用程序的线程应该执行WaitSingleObject后面的语句,这就是应用程序响应该Event的意思。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-05 14:23
.....那里现在到底是什么状况呢?你能把问题说清楚一些吗?
根据地的兄弟们,团结就是力量
wutz2000
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-08-05 16:33
现在的情况是:将Event句柄通过IOCtrl传递到驱动程序,驱动程序CreateThread,在该线程中SetEvent(这和直接在驱动程序中SetEvent不同),应用程序线程不能退出等待状态,请教为什么会这样,如何解决?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-08-08 12:58
1.试试命名事件。

2.试试把事件句柄使用mapptrtoprocess映射到device.exe(这个句柄可以用GetCurrentProcess得到),然后再setevent。

另外,你用驱动createthread后,怎么把ioctl传来的事件句柄给这个线程的?
根据地的兄弟们,团结就是力量
游客

返回顶部