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 ?