我使用楚狂人教程中的线程技术避免重入,在CREATE中工作良好,但是在CLOSE中,当我自己线程中的代码执行到ZwClose时,系统就没有下文了,好像是ZwClose从来没有返回一样。查了一下微软官方的文档,有一篇上面说:Unlike IRP_MJ_CREATE and IRP_...
全文
回复(7) 2007-12-06 10:10 来自版块 - 文件系统(过滤)驱动程序开发
表情
hustwingo(∩_∩)o...3ks Very much!!(2007-12-07 09:17)
yandong_8212按你说的如果是当机,那就要分析DUMP文件(2007-12-06 15:08)
yandong_8212一个ZwClose会引起一个IRP_MJ_CLEANUP,如果是正常关闭就肯定有IRP_MJ_CLEANUP,IRP_CLOSE有可能是系统进程自动发起的.(2007-12-06 15:05)
hustwing我之所以放在close的派遣函数里面,是因为我在跟踪写字板的读写文件时,似乎没有发现IRP_MJ_CLEANUP的irp啊,只有close。。。(2007-12-06 11:44)
hustwing但是我如果直接在我的CLOSE派遣函数中直接执行ZwClose(),确实会使系统堆栈溢出然后宕机;我调试了以后发现确实还是因为重入。但是当我把我的ZwClose()相关操作放入自己的线程中去做以后,系统没有宕,但是可能出现了你所说的资源互锁。 对了,想知道,ZwClose一定是...(2007-12-06 11:42)
yandong_8212说错了,减为0时才发IRP_MJ_CLOSE(2007-12-06 11:32)
yandong_8212首先,你要明确IRP_MJ_CLOSE并是和ZwClose是相对应的.ZwClose和IRP_MJ_CLEANUP相对应.当FileObject的引用计数减为一的时候会自动触发IRP_MJ_CLOSE. 对于重入的处理,还是要根据的实际情况进行分析,重入本身不会导致死锁,导致死锁...(2007-12-06 11:23)

返回顶部