It's a bit involved, but you can actually control a lot of that behavior in the call to (win32 api) CreateFile. You can add FILE_FLAG_WRITE_THROUGH
/ FILE_FLAG_NO_BUFFERING
or even provide optimization hints to the cache system with FILE_FLAG_SEQUENTIAL_SCAN
or FILE_FLAG_RANDOM_ACCESS
. To use TFileStream that way, I think you'd need to override the Create to change how it obtains the file handle. FWIW, FlushFileBuffers is equivalent to a Close/Open on the file. If you're doing a lot of activity with repeated flushes, it will slow the code down considerably.
A bit of documentation here