阅读:1273回复:1
过滤驱动效率问题.
以前的贴子翻不出来了,新开个贴简单表述一下我最近的发现吧.
测试过tooflat老大的sfilter代码的应该都知道,开着杀毒软件的话,基本上保存文件就跟死机一样,要等30多秒.最近一段时间仔细把tooflat老大的代码翻了一遍,找到影响效率的原因了: 代码在文件访问同步控制时使用了KEVENT,并在初始化时用了同步类型,这种类型的工作方式是在event被signal后,只有一个KeWaitForSingleObject被激活,并且KeWaitForSingleObject激活后立即将该event重置(Reset),这可能导致其他等待该资源的线程长时间处于阻塞状态. 我把tooflat老大的sfilter代码的SfClearup函数中的KeWaitForSingleObject以及KeSetEvent等语句注释掉后,简单测试发先以前的死机(explorer被阻塞)现象没有了(目前还没弄明白这个EVENT信号有什么实际意义). 那么,在过滤驱动中尽可能少的使用MUTEX KEVENT等同步信号,是不是可以有效提高驱动效率呢?? |
|
驱动小牛
![]() |
沙发#
发布于:2007-12-10 17:28
有些同步是必须要做的.
|
|