Zitat von
devidespe:
Um dieses Problem zu umgehen, habe ich gehört, man kann das entsprechende Medium physikalisch öffnen und somit am Windows-Cache "vorbeischreiben".
Das wäre extrem aufwändig, da du so das Dateisystem (FAT16, FAT32, NTFS) selbst unterstützen müsstest.
Lösung: einen Stream verwenden.
Man kann aber nicht direkt einen TFileStream verwenden, sondern muss auf THandleStream ausweichen.
Nur so kann man
FILE_FLAG_WRITE_THROUGH angeben.
Delphi-Quellcode:
function CreateUnbuffedFilestream(const filename:string):TStream;
var
fhandle : THandle;
begin
fhandle := CreateFile(PChar(filename), GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_WRITE_THROUGH, 0);
if hnd <> INVALID_HANDLE_VALUE then
result := THandleStream.Create(fhandle)
else
result := nil;
end;