songybwf
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1815回复:10

如何判断一个文件被写到磁盘上去了?

楼主#
更多 发布于:2004-05-04 15:14
通过哪个irp或者哪个位能判断文件已经被写到磁盘上去了?
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-24 03:58
加 FILE_FLAG_NO_BUFFERING 标志的话有很多限制,最明显就是一般的程序都保存不了了
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-05-21 18:33
关注
如果是读呢?怎么样进程每次读出来的都是磁盘中的数据???


不知道你为什么有这样得需求。

如果是AP的话,在CreateFile的时候加 FILE_FLAG_NO_BUFFERING 标志就行了。Driver里也有类似的标志,俺记不清了。你查查吧。
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-20 17:51
关注
如果是读呢?怎么样进程每次读出来的都是磁盘中的数据???
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-05-17 19:07
是啊  :D :D
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-17 16:03
哦,你是刘光。??
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-05-17 13:43
若是通过文件系统写文件一般会先经过缓存,再写到盘片上去,你可以用直接读盘的方法对相应的文件系统进行读取分析,或者是用其它的直接读盘浏览工具进行查看.


free bird 现在在哪儿发财? :)
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-05-17 13:42
直接针对这个文件FLUSH操作就行了嘛 :D
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-13 09:34
所以二楼的方法是有一定的难度的
因为写入还有个正确/完全写入的问题。如果有1。8G,难道要1。8G完全做比较?判断的层次太低了,感觉如果要求精度不高,就直接在高层做判断。
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-13 09:30
好像没有很好的办法

可能需要一个文件系统过滤驱动加一个存储过滤驱动来解决

我曾经生成过一个1。8G的大文件,测试产品用的。程序执行不到1秒就返回了,但是文件写了将近30分钟还没有写完,硬盘灯狂闪,最后死机,当然文件没有完全写入了。但是用WINDOW看,文件大小还是1。8G,实际上文件占用空间根本没有那么大,结果就向SPARSE文件一样。

个人感觉没有很好的方法可以判断文件写完的时机;
软件的返回-》软件的BUFF的FLUSH-》驱动的CACHE-》硬盘的CACHE,流经环节太多,你怎么定义写入动作的完成?不同的数据安全级别要求是不一样的。一般的AP可以定义到程序的返回就可以了,有数据容错的产品有些却要考虑给硬件的CACHE加保护电池,看来写入这个动作时机的判断不能一概而论。





[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-09 11:36
若是通过文件系统写文件一般会先经过缓存,再写到盘片上去,你可以用直接读盘的方法对相应的文件系统进行读取分析,或者是用其它的直接读盘浏览工具进行查看.
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
游客

返回顶部