複製鏈接
請複製以下鏈接發送給好友

MapViewOfFile

鎖定
MapViewOfFile是計算機函數,功能是將一個文件映射對象映射到當前應用程序的地址空間。MapViewOfFileEx允許我們指定一個基本地址來進行映射。
中文名
MapViewOfFile
來    源
win32 API
方    式
插入語句
平    台
windows

MapViewOfFileVB聲明

Declare Function MapViewOfFile& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long)
Declare Function MapViewOfFileEx& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long, lpBaseAddress As Any)

MapViewOfFileVC聲明

LPVOID WINAPI MapViewOfFile(
__in HANDLE hFileMappingObject,
__in DWORD dwDesiredAccess,
__in DWORD dwFileOffsetHigh,
__in DWORD dwFileOffsetLow,
__in SIZE_T dwNumberOfBytesToMap
);
LPVOID WINAPI MapViewOfFileEx(
__in HANDLE hFileMappingObject,
__in DWORD dwDesiredAccess,
__in DWORD dwFileOffsetHigh,
__in DWORD dwFileOffsetLow,
__in SIZE_T dwNumberOfBytesToMap,
__in LPVOID lpBaseAddress
);

MapViewOfFile説明

將一個文件映射對象映射到當前應用程序的地址空間。MapViewOfFileEx允許我們指定一個基本地址來進行映射。 [1] 

MapViewOfFile參數詳解

參數1:hFileMappingObject 為CreateFileMapping()或OpenFileMapping()返回的文件映像對象句柄。
參數2:dwDesiredAccess 映射對象的文件數據的訪問方式,而且同樣要與CreateFileMapping()函數所設置的保護屬性相匹配。 可取以下值:
FILE_MAP_ALL_ACCESS 等價於CreateFileMapping的 FILE_MAP_WRITE|FILE_MAP_READ. 文件映射對象被創建時必須指定PAGE_READWRITE 選項.
FILE_MAP_COPY 可以讀取和寫入文件.寫入操作會導致系統為該頁面創建一份副本.在調用CreateFileMapping時必須傳入PAGE_WRITECOPY保護屬性.
FILE_MAP_EXECUTE 可以將文件中的數據作為代碼來執行.在調用CreateFileMapping時可以傳入PAGE_EXECUTE_READWRITE或PAGE_EXECUTE_READ保護屬性.
FILE_MAP_READ 可以讀取文件.在調用CreateFileMapping時可以傳入PAGE_READONLY或PAGE_READWRITE保護屬性.
FILE_MAP_WRITE 可以讀取和寫入文件.在調用CreateFileMapping時必須傳入PAGE_READWRITE保護屬性.
參數3:dwFileOffsetHigh 表示文件映射起始偏移的高32位.
參數4:dwFileOffsetLow 表示文件映射起始偏移的低32位.(64KB對齊不是必須的)
參數5:dwNumberOfBytes 指定映射文件的字節數.

MapViewOfFile註解

dwFileOffsetLow和dwFileOffsetHigh必須反映一個偏移距離,它由系統的內存分配精度決定。例如,假設系統的內存精度是64KB(即最小分配單位是64KB),則這些值必須是64KB的整數倍。大多數應用程序都簡單的用零從文件的起始處開始映射。lpBaseAddress也必須是內存分配精度的整數倍.

MapViewOfFile返回值

如果成功,則返回映射視圖文件的開始地址值。 [2] 
如果失敗,則返回 NULL.可調用GetLastError() 查看錯誤。
參考資料