Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: So 30.01.11 13:26 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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: ;-)
msdn.microsoft.com/e...366563(v=vs.85).aspx