cghlily
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2013-05-28
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望50点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2259回复:4

在文件系统中,如何完全禁止cache 和 read-ahead

楼主#
更多 发布于:2010-07-12 17:31
请问:

在文件系统中,如何完全禁止cache 和 read-ahead?

另外,在explorer 中 ,当你把鼠标指到某个文件时,我在驱动中会得到 IRP_MJ_READ , 如何禁用这一功能?
多谢.
eleqi
驱动小牛
驱动小牛
  • 注册日期2005-12-20
  • 最后登录2014-01-03
  • 粉丝4
  • 关注2
  • 积分172分
  • 威望1475点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-07-13 17:45
read ahead是文件系统做的,不好禁吧,也没必要禁,不过自己管理缓存有可能可行(个人观点未验证)。EXPLORER的那些操作是正常的打开读取,比如:MP3,DOC,INI……然后显示一些相关信息给你,正常的打开读取不需要禁用,一定要禁那可以在FILTER中截IRP_MJ_READ在PRE中直接返回一个适当的错误值或者在应用层钩,不过这样做会有一个问题:无法区分开哪些打开读取是这种状态下的,哪些又不是(比如复制、粘贴等操作)
cghlily
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2013-05-28
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望50点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-07-14 11:26
非常感谢.

我正在做一个文件系统,实现一个虚拟盘(类似于NETDRIVE).

现在的情况是只要打开一个目录(在EXPLORER中).如果这个目录中有文件,explorer就会去读这个文件的内容(read-ahead),文件系统收到IRP_MJ_READ.
怎么禁止这种行为? 我的意思是一定要用户自已在文件上点复制然后粘贴,才开始读文件的内容. 其它情况都不能读.  
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于:2010-07-14 17:29
ReadAhead是CM的功能,不属FS。

如果你开发的是真正的FS,而不是FSFD,你当然可以不用Cache。但性能上,没有Cache的FS会有几个人用?

你想做的其实是改变Explorer使用FS的流程,这不应该在FS中实现。主要的一个问题是你为什么要改?
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2010-07-15 13:51
是的。楼上的说的比较准确。那些行为是正常的exploer的文件访问行为。你做的netdriver是不是因为这些行为导致慢?因为一打开目录,所有文件的内容都读取一下。有一个办法就是本地cache 一下数据。
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部