Wie kann man unter Windows File- und Directory-Changes flushen?



  • Wie kann man unter Windows Änderungen an Files und Directories flushen?
    Und zwar möglichst ohne den Cache für das ganze Volume zu flushen.

    Was noch einfach ist: wenn man ein HANDLE auf ein File hat, kann man FlushFileBuffers() aufrufen.

    Was aber wenn ein anderes Programm Änderungen an einem File vorgenommen hat, und das eigene Programm möchte nur sicherstellen dass diese bereits vollständig geschrieben sind. Muss man dazu das File aufmachen und dann FlushFileBuffers() aufrufen, oder geht das auch anders? Und ist FlushFileBuffers() in so einem Fall überhaupt ausreichend? (FlushFileBuffers könnte sich ja nur auf die Änderungen beziehen die man selbst über das übergebene HANDLE gemacht hat, und nicht auf "ältere" Änderungen von anderen Prozessen.)

    Und was Verzeichnisse angeht...

    Der spezielle Anwendungsfall den ich hätte, wäre ein "Rename" zu flushen. Wie macht man das korrekt? Bei MoveFile/MoveFileEx arbeite ich ja mit keinerlei HANDLES, also hab' ich auch nix was ich an FlushFileBuffers() übergeben könnte. Und natürlich ist die Frage: ist FlushFileBuffers() überhaupt die richtige Funktion?

    Achja: laufen muss alles unter Windows XP, NTFS Transaction kann ich also leider nicht nutzen.


Anmelden zum Antworten