winsunxu
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望45点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1831回复:7

怎么和用户交互来阻断TDI_EVENT_CONNECT?

楼主#
更多 发布于:2007-07-24 15:20
 请达人帮帮忙,目前碰到一个困难,,就是对于截获到的事件回调函数tdi_event_connect,里面的IRQL==DPC级别,不能在里面直接调用KeWaitForSingleObject,等待用户的决定,谁能帮忙给个建议吗??小弟感激不尽啊。。
liuguidong123
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2009-03-19
  • 粉丝0
  • 关注0
  • 积分227分
  • 威望27点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-25 09:08
可以使用一个bool 变量flag 。若flag为0时,循环等待,如下:
while( !flag )
{}//不做任何事情

初始值flag 为false, 当跟应用层交互后,再根据具体情况设置
winsunxu
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望45点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-26 17:20
不行啊,刘兄,我试过了,这样的话,就无法和用户交互了,程序好像一直处在判断标志变量flag是不为0上,机子动都动不了拉。。
 
winsunxu
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望45点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-27 15:24
我找到了一种办法可以解决,但是运行久了就要因IRQL过高而蓝屏
duleax
驱动牛犊
驱动牛犊
  • 注册日期2007-06-02
  • 最后登录2009-07-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-27 23:00
能否先将该IRP插入到一个队列中,然后在一个自己启动的系统线程中读该IRP并等待用户交互事件,在回调函数tdi_event_connect中马上返回IO_PENDING.
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-08-08 14:58
引用第1楼liuguidong123于2007-07-25 09:08发表的  :
可以使用一个bool 变量flag 。若flag为0时,循环等待,如下:
while( !flag )
{}//不做任何事情

初始值flag 为false, 当跟应用层交互后,再根据具体情况设置

无敌了。。。
人不靓仔心灵美,版头不正红花仔!
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-08-08 15:05
以前做过,不大记得了。在EventConnect中,是不能直接等待和Pending的,因为IRQL非常高,而且没有STATUS_PENDING的返回值。要做等待之类的,必须先返回STATUS_MORE_PROCESSING_REQUIRED,然后再特定时候再调用它的被HOOK的原函数。大概是这样子做,不过你还要做一些特别的处理。
人不靓仔心灵美,版头不正红花仔!
winsunxu
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望45点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-08-12 18:42
proplayboy大哥好。很感谢你的答复。不过我还是不太明白。大哥能说清楚点吗。我现在很急,一直BSOD----高IRQL访问分页内存,但出错的不是我的驱动,而是底层的什么驱动,弄的我很恼火,都查不出是哪行代码出错了。能帮帮我吗,proplayboy大哥,我能加你的QQ吗??
游客

返回顶部