阅读:2346回复:4
清除缓存影响文件写,透明加解密问题求助。
我在Cleanup中清掉缓存。方便每次都能在SfRead中收到消息。这样,解密是正常了。
但是加密却发现了一些问题,首先看看清缓存的代码: if(IrpSp->MajorFunction == IRP_MJ_CLEANUP) { if(FileObject->SectionObjectPointer) { IoSetTopLevelIrp( (PIRP)FSRTL_FSP_TOP_LEVEL_IRP ); CcFlushCache( FileObject->SectionObjectPointer, NULL, 0, NULL ); if(FileObject->SectionObjectPointer->DataSectionObject) { CcPurgeCacheSection( FileObject->SectionObjectPointer, NULL, 0, FALSE ); //为TRUE,会强迫所有的FileObject重新初始化Cache } if(FileObject->PrivateCacheMap) { CcUninitializeCacheMap(FileObject, NULL, NULL);; } IoSetTopLevelIrp(NULL); } } 这个代码使用后,当我写文件时再也收不到IRP_MJ_WRITE了。不知道各位有什么办法能解决不。 其实最好是不用清缓存而使每次文件读都进入SfRead处理,可系统一般会预读文件到缓存中。不知道有什么其他的办法能解决小文件收不到IRP_MJ_READ的办法,恳请赐教。 |
|
最新喜欢:![]() |
沙发#
发布于:2008-03-25 18:45
关注~
|
|
板凳#
发布于:2008-03-27 09:21
驱网上有强人写的清缓存的代码,,找出来看看。。。。
如果它预读到了缓存中,想办法把预读的搞掉不就有read了?? |
|
地板#
发布于:2008-03-27 12:13
搞清后,是有READ了。
但写的数据也破坏了。 现在解决了。 调整了下FILE_CONTEXT的初始化顺序,在读加密标志时的IRP加入NO_CACHE等flags. 问题解决。 |
|
地下室#
发布于:2008-03-27 18:08
能加我QQ:471933891否? 我卡你接下来的问题上.你怕是也会碰到.一会解决.
|
|
|