關閉檔案對應物件

當進程完成檔案對應物件時,它應該使用每個檔案檢視的 UnmapViewOfFile 函式來終結其位址空間中的所有檔案檢視。

取消對應檔案的對應檢視會使進程位址空間中檢視所佔用的範圍失效,並讓該範圍可供其他配置使用。 它會移除屬於進程工作集一部分之每個未對應的虛擬頁面的工作集專案,並減少進程的工作集大小。 它也會遞減對應實體頁面的共用計數。

在未對應的檢視中修改的頁面不會寫入磁片,直到其共用計數達到零,或者,直到它們從共用頁面的所有進程的工作集取消對應或修剪為止。 即使如此,修改過的頁面也會「延遲」寫入磁片;也就是說,修改可能會在記憶體中快取,並在稍後寫入磁片。 若要將發生電源故障或系統當機時資料遺失的風險降到最低,應用程式應該使用 FlushViewOfFile 函式明確排清修改的頁面。

當每個進程都使用檔案對應物件完成,並具有未對應的所有檢視時,它必須藉由呼叫 CloseHandle來關閉檔案對應物件的控制碼和磁片上的檔案。 即使有仍在開啟的檔案檢視,這些 CloseHandle 呼叫仍會成功。 不過,離開對應的檔案檢視會導致記憶體流失。