0
映射到地址空間的內存映射文件。如何映射文件,如果地址空間爲4 GB,哪個文件大小超過4 GB?Windows如何映射一個文件,其大小大於4GB?
映射到地址空間的內存映射文件。如何映射文件,如果地址空間爲4 GB,哪個文件大小超過4 GB?Windows如何映射一個文件,其大小大於4GB?
看看相關的API:
LPVOID WINAPI MapViewOfFile(
_In_ HANDLE hFileMappingObject,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwFileOffsetHigh,
_In_ DWORD dwFileOffsetLow,
_In_ SIZE_T dwNumberOfBytesToMap
);
這僅映射文件的一部分,該文件的視圖。並且可以在任何時間映射的字節數由dwNumberOfBytesToMap
的值確定。其中有類型SIZE_T
,這是一個指針大小的整數。換句話說,在一個32位的進程中,任何時候可以映射的上限是4GB。
如果您映射的文件大於4GB(實際上,在達到4GB之前就會遇到連續的地址空間問題),那麼您需要映射文件的多個視圖以覆蓋它完整。
您不必一次就映射整個文件,而是使用'MapViewOfFile'來映射節。如果您嘗試在地址空間中繪製的地圖數量超過您的地圖數量,則會失敗。 –