阅读:1815回复:10
如何判断一个文件被写到磁盘上去了?
通过哪个irp或者哪个位能判断文件已经被写到磁盘上去了?
|
|
沙发#
发布于:2004-05-24 03:58
加 FILE_FLAG_NO_BUFFERING 标志的话有很多限制,最明显就是一般的程序都保存不了了
|
|
板凳#
发布于:2004-05-21 18:33
关注 不知道你为什么有这样得需求。 如果是AP的话,在CreateFile的时候加 FILE_FLAG_NO_BUFFERING 标志就行了。Driver里也有类似的标志,俺记不清了。你查查吧。 |
|
地板#
发布于:2004-05-20 17:51
关注
如果是读呢?怎么样进程每次读出来的都是磁盘中的数据??? |
|
地下室#
发布于:2004-05-17 19:07
是啊 :D :D
|
|
5楼#
发布于:2004-05-17 16:03
哦,你是刘光。??
|
|
|
6楼#
发布于:2004-05-17 13:43
若是通过文件系统写文件一般会先经过缓存,再写到盘片上去,你可以用直接读盘的方法对相应的文件系统进行读取分析,或者是用其它的直接读盘浏览工具进行查看. free bird 现在在哪儿发财? :) |
|
7楼#
发布于:2004-05-17 13:42
直接针对这个文件FLUSH操作就行了嘛 :D
|
|
8楼#
发布于:2004-05-13 09:34
所以二楼的方法是有一定的难度的
因为写入还有个正确/完全写入的问题。如果有1。8G,难道要1。8G完全做比较?判断的层次太低了,感觉如果要求精度不高,就直接在高层做判断。 |
|
|
9楼#
发布于:2004-05-13 09:30
好像没有很好的办法
可能需要一个文件系统过滤驱动加一个存储过滤驱动来解决 我曾经生成过一个1。8G的大文件,测试产品用的。程序执行不到1秒就返回了,但是文件写了将近30分钟还没有写完,硬盘灯狂闪,最后死机,当然文件没有完全写入了。但是用WINDOW看,文件大小还是1。8G,实际上文件占用空间根本没有那么大,结果就向SPARSE文件一样。 个人感觉没有很好的方法可以判断文件写完的时机; 软件的返回-》软件的BUFF的FLUSH-》驱动的CACHE-》硬盘的CACHE,流经环节太多,你怎么定义写入动作的完成?不同的数据安全级别要求是不一样的。一般的AP可以定义到程序的返回就可以了,有数据容错的产品有些却要考虑给硬件的CACHE加保护电池,看来写入这个动作时机的判断不能一概而论。 |
|
|
10楼#
发布于:2004-05-09 11:36
若是通过文件系统写文件一般会先经过缓存,再写到盘片上去,你可以用直接读盘的方法对相应的文件系统进行读取分析,或者是用其它的直接读盘浏览工具进行查看.
|
|
|