Entwickler-Ecke

Dateizugriff - [MMF] Änderungen auf Festplatte schreiben


Flamefire - So 30.01.11 13:26
Titel: [MMF] Änderungen auf Festplatte schreiben
Wie kann ich bei einer geladenen MMF erzwingen, dass die Änderungen auf die Festplatte geschrieben werden?
Szenario ist folgendes:
MMF wird geladen und die ganze Zeit im Speicher gehalten. Gelegendlich wird etwas hinzugeschrieben oder geändert. Dabei kann es sein, dass die "virtuelle Größe" von der tatsächlichen Größe abweicht (Puffergröße --> Beim hinzufügen wird etwas mehr allociert als nötig)
Wenn mir jetzt das Programm abstürzt kann es passieren, dass die Datei nicht konsistent ist und damit Fehler enthällt. (Passiert auch)
Ich würde also nach jeder (gebündelter) Schreiboperation gern dafür sorgen, dass die Änderungen tatsächlich ausgeführt werden.
Wie mache ich das?


Tranx - So 30.01.11 15:00

Eine bescheidene Frage: Was ist MMF? Ein spezielles Dateiformnat? Und was spricht dagegen, die Datei in bestimmtem Rhythmus zu speichern, oder den Änderungsstatus bei Änderungen zu notieren und dann ggfs. die Datei zu speichern (wenn geändert, ansonsten nicht). ASber, wie gesagt, das hängt von dem ab, was MMF ist und wie groß MMF-Dateien sind.


jaenicke - So 30.01.11 15:28

Es geht hier um Memory Mapped Files, MMFs eben.

Für das Flushen der aktuellen Änderungen im View gibt es die entsprechende Funktion FlushViewOfFile: ;-)
http://msdn.microsoft.com/en-us/library/aa366563(v=vs.85).aspx