阅读:3930回复:3
用ZwClose关闭句柄会导致线程挂起,这是为什么?
用ZwClose关闭句柄会导致线程挂起,这是为什么?
是因为等待某个对象而挂起的! |
|
沙发#
发布于:2008-11-02 16:08
是不是有未完成的io?
|
|
|
板凳#
发布于:2009-05-01 12:38
应该是有未完成的IO,或是代码里锁过头了
|
|
|
地板#
发布于:2011-07-09 00:43
也不知道 还有人关注 这一个问题没有,我现在遇到了关于这一个函数的很多问题。每次关掉都会使电脑挂起(不是蓝屏),有如下使用方法:
我是在调试filemon驱动,有用过的可以一起跟帖讨论哈。 现在的问题很简单,就是在logrecord中把所有的文件操作日志写到一个文件 中去。 1:在控制设备打开的irp中打开文件,(IRP_MJ_CREATE),在IRP_MJ_CLOSE的地方关闭文件。logRecord中调用WRITEFILE进行文件写操作。 经过验证,这种方法可行。 2:由于现在考虑到上层的应用层会共享读这一个日志文件 ,现在每次操作完(指的是写文件操作)后,关闭文件句柄,其它一样。 现在问题来了,一关闭就假死了,dbgView看不到东西,不动了。电脑被挂起的感觉 。通过调试发现是在ZwClose()函数中卡死,没有返回导致。 如大家所知的,不能在不同的上下文中操作句柄。所有想到,直接在LogRecord中打开文件,操作完闭后再关闭文件,下次用的时候再次重复操作。 问题也是这样,关闭文件卡死,没有解决方法。求大家给下思路。 |
|