Einzelnen Beitrag anzeigen

devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datei physikalisch lesen/schreiben ohne den Windows-Cache

  Alt 14. Nov 2007, 16:12
Hallo,

ich muss auf einem USB-Stick eine Datei erstellen, ihren Inhalt lesen und anschließend miteinander vergleichen. Das habe ich bisher mit normalen Delphi-Funktionen realisiert (Assign, Rewrite, Write, Read, Close). Die Sache hat nur einen Haken: den Windows-Cache. Beim Schreiben auf den USB-Stick meldet mir Windows schneller, dass die Datei geschrieben wurde, als es tatsächlich der Fall ist. Somit kann ich nicht den Zeitpunkt ermitteln, bei dem ich mit dem Lesen beginnen kann.

Um dieses Problem zu umgehen, habe ich gehört, man kann das entsprechende Medium physikalisch öffnen und somit am Windows-Cache "vorbeischreiben".

Bisher habe ich physikalische Laufwerke immer so geöffnet:

Delphi-Quellcode:
Handle := CreateFile(PChar('\\.\PhysicalDrive1'),
                       0,
                       FILE_SHARE_READ or FILE_SHARE_WRITE,
                       nil,
                       OPEN_EXISTING,
                       0,
                       0);
und so

CloseHandle(Handle); wieder geschlossen.

Nun ist mir allerdings schleierhaft, wie ich nach dem Öffnen eine Datei schreiben soll. Es gibt zwar die WriteFile- und ReadFile-Funktionen, die nach dem Aufruf von CreateFile zum Einsatz kommen, aber wie soll ich da eine Datei angeben, die zuvor auch noch erstellt werden muss ?
Devid
  Mit Zitat antworten Zitat