qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2008-06-22 12:15
是的!cache的大小 从他驱动中得到的是明文的大小,也就是,那么cache的 lazy write 就是在写的时候就要比较offset 和得到的明文的大小,所以一旦=>明文大小的时候就停止写了!而且文件驱动规定了lazy write 的写的时候是不能改变文件大小的,也不能在文件尾添加。改变文件大小的时候是在一开始app 写的时候,fsd要检查是不是超过endoffile,如果超过就会setcachefile size 的这个函数来通知,然后明确的让cache 调用setimforationfile 改变大小
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2008-06-23 13:19
引用第20楼qianjunhua于2008-06-22 12:15发表的  :
是的!cache的大小 从他驱动中得到的是明文的大小,也就是,那么cache的 lazy write 就是在写的时候就要比较offset 和得到的明文的大小,所以一旦=>明文大小的时候就停止写了!而且文件驱动规定了lazy write 的写的时候是不能改变文件大小的,也不能在文件尾添加。改变文件大小的时候是在一开始app 写的时候,fsd要检查是不是超过endoffile,如果超过就会setcachefile size 的这个函数来通知,然后明确的让cache 调用setimforationfile 改变大小


是让cache更新fcb里的文件大小,还是更新cache里的文件大小?
goodone
驱动牛犊
驱动牛犊
  • 注册日期2007-01-30
  • 最后登录2014-04-30
  • 粉丝3
  • 关注0
  • 积分372分
  • 威望174点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2008-06-24 10:21
引用第20楼qianjunhua于2008-06-22 12:15发表的  :
是的!cache的大小 从他驱动中得到的是明文的大小,也就是,那么cache的 lazy write 就是在写的时候就要比较offset 和得到的明文的大小,所以一旦=>明文大小的时候就停止写了!而且文件驱动规定了lazy write 的写的时候是不能改变文件大小的,也不能在文件尾添加。改变文件大小的时候是在一开始app 写的时候,fsd要检查是不是超过endoffile,如果超过就会setcachefile size 的这个函数来通知,然后明确的让cache 调用setimforationfile 改变大小


qianjunhua,你说 当 offset=>明文大小 时就会停止写, 这个确实能够解释,应用报告的 “磁盘已满”或“延迟写失败”的这种错误,
并且你说 “文件大小的时候是在一开始app 写的时候”也就是说要想解决这个问题必须在app的写的时候就改变其大小,
这个改变大小 改如何处理了?是在直接在setimforationfile处理 还是除了setimforationfile 以外的地方也要进行处理?
 qianjunhua 请你给个详细点的说明 ,谢谢!
栀子花驿站 www.zhizihua.com
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2008-06-24 14:04
应该是在fcb里面直接修改文件的大小,这样ntfs 在适当的时候会用fbc里面的值来调用ccsetcachefilesize 这个函数,来通知cache 这个时候文件的大小
goodone
驱动牛犊
驱动牛犊
  • 注册日期2007-01-30
  • 最后登录2014-04-30
  • 粉丝3
  • 关注0
  • 积分372分
  • 威望174点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2008-06-24 17:04
引用第23楼qianjunhua于2008-06-24 14:04发表的  :
应该是在fcb里面直接修改文件的大小,这样ntfs 在适当的时候会用fbc里面的值来调用ccsetcachefilesize 这个函数,来通知cache 这个时候文件的大小


fcb里面直接修改文件的大小? 呵呵  好想法
这样可以吗?你试验过没

如果直接修改FCB的话 ,还不如 自己下发 setfileinformation来修改FCB
这样似乎能更好一些
栀子花驿站 www.zhizihua.com
上一页 下一页
游客

返回顶部