2013-10-30 72 views
0

映射到地址空間的內存映射文件。如何映射文件,如果地址空間爲4 GB,哪個文件大小超過4 GB?Windows如何映射一個文件,其大小大於4GB?

+4

您不必一次就映射整個文件,而是使用'MapViewOfFile'來映射節。如果您嘗試在地址空間中繪製的地圖數量超過您的地圖數量,則會失敗。 –

回答

3

看看相關的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之前就會遇到連續的地址空間問題),那麼您需要映射文件的多個視圖以覆蓋它完整。

相關問題