阅读:3701回复:17
在FILEDISK中如何使用CcFlushCache,MmFlushImageSection,CcPurgeCacheSection
我想在卸载了虚拟卷后用CcFlushCache,MmFlushImageSection,CcPurgeCacheSection把缓存中的文件清空,因为缓冲中的数据是明文。可这三个函数中的第一个参数要求是一个包含该文件对象的结构的指针,在FILEDISK中好像没用到这个变量,想请教一下各位DX如何在FILEDISK中使用这三个函数清除掉缓存中的数据明文?
|
|
最新喜欢:aovi20... |
沙发#
发布于:2004-05-25 16:52
没人知道吗 :(
|
|
板凳#
发布于:2004-05-25 17:08
坛子的人气好差啊! :(
|
|
地板#
发布于:2004-05-25 17:35
要是我没有记错的话,FILEDISK调用ZwCreateFile()打开文件时是带有参数FILE_NO_INTERMEDIATE_BUFFERING的,这时候Cache Manager不会缓存这个文件的任何数据,所以你根本不必调用CcFlushCache,MmFlushImageSection,CcPurgeCacheSection这三个函数来清空什么缓存数据,因为根本就不存在缓存数据。
如果你在FIlEDISK中调用ZwCreateFile()时不带这个函数,我建议你马上加上,否则拷贝大文件时(大小 > 5M ?)系统10之89会失去响应。 总之,你的问题根本就不是一个问题。 :cool: |
|
地下室#
发布于:2004-05-26 08:35
谢了,我试试后就给分 ;)
|
|
5楼#
发布于:2004-05-26 08:53
ZwCreateFile()中带FILE_NO_INTERMEDIATE_BUFFERING这个参数,可是当我新建一个卷后卸载了再安装,这时根本就没从磁盘读IMG文件,很奇怪啊
|
|
6楼#
发布于:2004-05-26 09:18
ZwCreateFile()中带FILE_NO_INTERMEDIATE_BUFFERING这个参数,可是当我新建一个卷后卸载了再安装,这时根本就没从磁盘读IMG文件,很奇怪啊 不会吧?难道这个标志白设了?你怎么断定系统不从磁盘上读IMG文件? |
|
7楼#
发布于:2004-05-26 09:49
因为我拦截了读写操作,并在里面加入了硬件进行加解密,当我新建一个卷,卸载了再安装,这时USB加密设备没有工作直接就安装成功了,除非是不新建直接安装就可以跟踪到硬件的加解密
|
|
8楼#
发布于:2004-05-26 10:20
USB设备?Sorry,不明白你的工作流程。:(
我建议你先使用本地磁盘文件来模拟一下,看看是不是Cache Manager的问题,还是你的USB设备或者其它问题。 [编辑 - 5/26/04 by slwqw] |
|
9楼#
发布于:2004-05-26 10:33
我的意思是如果有对磁盘文件进行读写操作USB加密设备就会进行加解密,而我在安装卷是没有拦截到加解密的操作,于是就怀疑是直接读了缓存中的明文了
|
|
10楼#
发布于:2004-05-26 10:43
我的意思是如果有对磁盘文件进行读写操作USB加密设备就会进行加解密,而我在安装卷是没有拦截到加解密的操作,于是就怀疑是直接读了缓存中的明文了 你不是拦截了读写操作吗?好,你拦截FastIO接口看看,如果系统确实通过FastIO接口读取虚拟硬盘所使用的那个文件数据,证明它的确被缓存了。 |
|
11楼#
发布于:2004-05-26 11:17
filedisk中好像没有使用FastIO接口吧。文件驱动才用FastIO接口(我猜的)
|
|
12楼#
发布于:2004-05-26 11:24
天啊,我彻底被你搞糊涂了。 :mad: :mad: :mad:
|
|
13楼#
发布于:2004-05-26 11:29
不好意思了 :D
|
|
14楼#
发布于:2004-05-26 11:47
用冷水冲一下脸,清醒了。 :D:D:D
系统使用缓存数据的两中可能: 1、虚拟磁盘使用作为物理介质的那个文件。 2、虚拟磁盘上的文件。 第一种情况,既然使用了标志FILE_NO_INTERMEDIATE_BUFFERING,就不应该还使用缓存功能。 第二种,有可能。但是你说你已经卸载了该卷,然后重新Mount,而卷上的文件的数据仍然在Cache Manager中。 这个就好象把硬盘拔了,但是硬盘上的文件的数据仍然保留在Cache Manager中一样? 你认为有可能吗?我个人认为不可能,所以你所说的缓存数据到底存在在哪里呢? 我怀疑你的其它操作有问题。比如USB相关等。 |
|
15楼#
发布于:2004-05-27 09:17
CPU在处理数据的时候,它是先在高速缓存中查找要读取的数据,如果没有才到实际地址去取数据,我说的缓存可能和你说的不一样吧
|
|
16楼#
发布于:2004-05-27 09:25
CPU在处理数据的时候,它是先在高速缓存中查找要读取的数据,如果没有才到实际地址去取数据,我说的缓存可能和你说的不一样吧
======= 难道你说的是CPU L1、L2高速缓存?这个跟你有什么关系? 我想,你很可能根本不知道你到底在问什么。或者说,你对自己的问题都模模糊糊。 在你没有弄清楚你到底想问什么之前,我不会再参与讨论这个问题。这是最后一个回复。 |
|
17楼#
发布于:2004-08-17 13:00
这个问题我也遇到了,我觉得是浏览器缓存了数据,我改的是一个虚拟光驱,当卸载了媒体,阻止READ命令,浏览器还是可以访问原来打开过的目录,直到打开新的目录时才提示“函数不正确”,这个问题一值没弄明白怎么彻底的清除这些“缓存”中的数据。
|
|