如何让WriteFile立即生效

WriteFile函数通常是将数据写入到内部缓冲区,然后OS会定期将缓冲区中的数据写入到磁盘。如果想在调用WriteFile之后,数据就立即写入磁盘,有如下三种方法:

1. 调用FlushFileBuffers(hFile);

Flushes the buffers of a specified file and causes all buffered data to be written to a file.

BOOL FlushFileBuffers(

   HANDLE hFile // open handle to file whose buffers are to be flushed 

);

该函数会将指定文件的缓存数据写入磁盘。

2. 在用CreateFile创建文件的时候,第6个参数使用标志

FILE_FLAG_WRITE_THROUGH

Instructs the operating system to write through any intermediate cache and go directly to disk. The operating system can still cache write operations, but cannot lazily flush them.

3. 关闭掉句柄

CloseHandle(hFile);

posted on 2012-11-01 10:17  zhuyf87  阅读(5126)  评论(0编辑  收藏  举报

导航