Freigeben über


Schließen eines Dateizuordnungsobjekts

Wenn ein Prozess mit dem Dateizuordnungsobjekt abgeschlossen ist, sollte er alle Dateiansichten in seinem Adressraum mithilfe der UnmapViewOfFile-Funktion für jede Dateiansicht zerstören.

Durch das Aufheben der Zuordnung einer zugeordneten Ansicht einer Datei wird der bereich ungültig, der von der Ansicht im Adressraum des Prozesses belegt wird, und stellt den Bereich für andere Zuordnungen zur Verfügung. Es entfernt den Arbeitssatzeintrag für jede nicht zugeordnete virtuelle Seite, die Teil des Arbeitssatzes des Prozesses war, und reduziert die Arbeitssatzgröße des Prozesses. Außerdem wird die Freigabeanzahl der entsprechenden physischen Seite erhöht.

Geänderte Seiten in der nicht zugeordneten Ansicht werden erst auf den Datenträger geschrieben, wenn ihre Freigabeanzahl 0 erreicht, d. h. bis sie nicht zugeordnet oder aus den Arbeitssätzen aller Prozesse gekürzt werden, die die Seiten gemeinsam nutzen. Selbst dann werden die geänderten Seiten "lazily" auf den Datenträger geschrieben; Das heißt, Änderungen können im Arbeitsspeicher zwischengespeichert und zu einem späteren Zeitpunkt auf den Datenträger geschrieben werden. Um das Risiko eines Datenverlusts bei einem Stromausfall oder Systemabsturz zu minimieren, sollten Anwendungen geänderte Seiten mithilfe der FlushViewOfFile-Funktion explizit leeren.

Wenn jeder Prozess die Verwendung des Dateizuordnungsobjekts abgeschlossen hat und alle Sichten nicht zugeordnet hat, müssen das Handle des Dateizuordnungsobjekts und die Datei auf dem Datenträger durch Aufrufen von CloseHandle geschlossen werden. Diese Aufrufe von CloseHandle sind auch dann erfolgreich, wenn noch Dateiansichten geöffnet sind. Das Beibehalten zugeordneter Dateiansichten führt jedoch zu Speicherverlusten.