Matthias Frey
2016-10-31 15:01:22 UTC
Hallo,
wie kann ich es erzwingen (so lange warten) bis Windows alle
Daten einer Datei auf Festplatte geschreiben hat?
Gefunden habe ich FlushFileBuffers, jedoch muss man da ein Handle
einer Datei angeben. Also muss ich diese Datei offen haben.
In meinem Fall ist die Datei jedoch zu (gerade eben). Ist es richtig,
dass ich diese Datei aufmachen muss um FlushFileBuffers zu verwenden?
Oder gibt es einen besseren Weg?
Bei der procedure Flush von Delphi selber werden ja nur die Buffers
von Delphi gellert, aber nicht die Caches von Windows.
Hindergrund:
Es wird von einer Datenbank ein Backup erzeugt und danach die
Datenbank komprimiert. Wenn man beim Komprimieren den Stecker zieht
ist sowohl das Backup als auch die zu komprimierende korrupt.
Mein Vermutung ist, dass noch nicht alle Daten vom Backup auf
Festplatte sind.
Grüssle
Matthias
wie kann ich es erzwingen (so lange warten) bis Windows alle
Daten einer Datei auf Festplatte geschreiben hat?
Gefunden habe ich FlushFileBuffers, jedoch muss man da ein Handle
einer Datei angeben. Also muss ich diese Datei offen haben.
In meinem Fall ist die Datei jedoch zu (gerade eben). Ist es richtig,
dass ich diese Datei aufmachen muss um FlushFileBuffers zu verwenden?
Oder gibt es einen besseren Weg?
Bei der procedure Flush von Delphi selber werden ja nur die Buffers
von Delphi gellert, aber nicht die Caches von Windows.
Hindergrund:
Es wird von einer Datenbank ein Backup erzeugt und danach die
Datenbank komprimiert. Wenn man beim Komprimieren den Stecker zieht
ist sowohl das Backup als auch die zu komprimierende korrupt.
Mein Vermutung ist, dass noch nicht alle Daten vom Backup auf
Festplatte sind.
Grüssle
Matthias