Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Datei physikalisch lesen/schreiben ohne den Windows-Cach

  Alt 14. Nov 2007, 16:32
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;
Andreas
  Mit Zitat antworten Zitat