chengfangquan
驱动牛犊
驱动牛犊
  • 注册日期2007-08-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望361点
  • 贡献值1点
  • 好评度42点
  • 原创分0分
  • 专家分0分
阅读:3717回复:3

用ZwClose关闭句柄会导致线程挂起,这是为什么?

楼主#
更多 发布于:2008-10-30 17:09
用ZwClose关闭句柄会导致线程挂起,这是为什么?
是因为等待某个对象而挂起的!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2008-11-02 16:08
是不是有未完成的io?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
guard366
驱动牛犊
驱动牛犊
  • 注册日期2009-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望351点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-01 12:38
应该是有未完成的IO,或是代码里锁过头了
成熟的产品!
firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
地板#
发布于:2011-07-09 00:43
也不知道 还有人关注 这一个问题没有,我现在遇到了关于这一个函数的很多问题。每次关掉都会使电脑挂起(不是蓝屏),有如下使用方法:
我是在调试filemon驱动,有用过的可以一起跟帖讨论哈。
现在的问题很简单,就是在logrecord中把所有的文件操作日志写到一个文件 中去。
1:在控制设备打开的irp中打开文件,(IRP_MJ_CREATE),在IRP_MJ_CLOSE的地方关闭文件。logRecord中调用WRITEFILE进行文件写操作。
经过验证,这种方法可行。
2:由于现在考虑到上层的应用层会共享读这一个日志文件 ,现在每次操作完(指的是写文件操作)后,关闭文件句柄,其它一样。
现在问题来了,一关闭就假死了,dbgView看不到东西,不动了。电脑被挂起的感觉 。通过调试发现是在ZwClose()函数中卡死,没有返回导致。
如大家所知的,不能在不同的上下文中操作句柄。所有想到,直接在LogRecord中打开文件,操作完闭后再关闭文件,下次用的时候再次重复操作。
问题也是这样,关闭文件卡死,没有解决方法。求大家给下思路。
游客

返回顶部