VB聲明
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)
VC聲明
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
);
說明
將一個檔案映射對象映射到當前應用程式的
地址空間。MapViewOfFileEx允許我們指定一個基本地址來進行映射。
參數詳解
參數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 指定映射檔案的位元組數.
註解
dwFileOffsetLow和dwFileOffsetHigh必須反映一個偏移距離,它由系統的
記憶體分配精度決定。例如,假設系統的記憶體精度是64KB(即最小分配單位是64KB),則這些值必須是64KB的整數倍。大多數應用程式都簡單的用零從檔案的起始處開始映射。lpBaseAddress也必須是記憶體分配精度的整數倍.
返回值
如果成功,則返回映射視圖檔案的開始地址值。