Re: CreateFile() and FILE_FLAG_WRITE_THROUGH



Hugo gleaves@xxxxxxxxxxx> <hugh wrote:
Just to clarify, if you have the file opened with these flags and you do a write, when that write returns you can be 100% confident that the data is on the physical media.

Upon return from write, it _may_ only guarantee that the data has been
handed to the storage device driver. Whether or not it is on the media,
depends on the driver...

--pa



"Nick Tucker" wrote:

Hi everyone

If I create a file using CreateFile(), specifying the FILE_FLAG_WRITE_THROUGH flag, then write to that file, the file still shows as zero bytes long in the directory and in Windows Explorer, and if I then turn the power off, that file is still zero bytes long on restart, so the data I wrote is unavailable. I have tried this test on a variety of operating systems including Vista, XP and Windows Server 2003/2008 using a variety of hardware platforms with both SATA and SCSI disk systems, and they all behave the same way.

Surely the whole point of specifying that flag is that I want the data to be written to disk, together with it's corresponding metadata, so if a catastrophic failure occurs, the data is available to me on restart.

My researches of newsgroup articles on this subject suggest that if I want this, then I also have to use FileFlushBuffers(), but if that is so then surely I don't need to specify the write through flag since all file and folder data will be committed to disk when I call that function.

So, what is the point of specifying the write-through flag in this scenario?

I think the documentation of CreateFile() could do with a little clarification!

Thanks in advance for responses.

Nick

.



Relevant Pages

  • Re: CreateFile() and FILE_FLAG_WRITE_THROUGH
    ... variety of hardware platforms with both SATA and SCSI disk systems, ... Surely the whole point of specifying that flag is that I want the data to be ... "...together with it's corresponding metadata" is wishful thinking on your ...
    (microsoft.public.win32.programmer.kernel)
  • Re: CreateFile() and FILE_FLAG_WRITE_THROUGH
    ... I have tried this test on a variety of operating systems including Vista, XP and Windows Server 2003/2008 using a variety of hardware platforms with both SATA and SCSI disk systems, and they all behave the same way. ... Surely the whole point of specifying that flag is that I want the data to be written to disk, together with it's corresponding metadata, so if a catastrophic failure occurs, the data is available to me on restart. ...
    (microsoft.public.win32.programmer.kernel)
  • Re: CreateFile() and FILE_FLAG_WRITE_THROUGH
    ... See the white paper I posted at my web site www.msftmvp.com "Application data/meta data caching best practices" ... variety of hardware platforms with both SATA and SCSI disk systems, ... Surely the whole point of specifying that flag is that I want the data to be ...
    (microsoft.public.windows.file_system)
  • Re: CreateFile() and FILE_FLAG_WRITE_THROUGH
    ... disk structure to be consistent, this incurs a cost and that's why the flags ... variety of hardware platforms with both SATA and SCSI disk systems, ... Surely the whole point of specifying that flag is that I want the data to be ...
    (microsoft.public.win32.programmer.kernel)
  • RE: CreateFile() and FILE_FLAG_WRITE_THROUGH
    ... to disk without going through the system cache. ... Surely the whole point of specifying that flag is that I want the data to be ...
    (microsoft.public.win32.programmer.kernel)