MapViewOfFile

MapViewOfFile

MapViewOfFile是計算機函式,功能是將一個檔案映射對象映射到當前應用程式的地址空間。MapViewOfFileEx允許我們指定一個基本地址來進行映射。

基本介紹

  • 中文名:MapViewOfFile
  • 來源:win32 API
  • 方式:插入語句
  • 平台:windows
VB聲明,VC聲明,說明,參數詳解,註解,返回值,

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允許我們指定一個基本地址來進行映射。

參數詳解

參數1:hFileMappingObject 為CreateFileMapping()返回的檔案映像對象句柄。
參數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也必須是記憶體分配精度的整數倍.

返回值

如果成功,則返回映射視圖檔案的開始地址值。
如果失敗,則返回 NULL.可調用GetLastError() 查看錯誤。

相關詞條

熱門詞條

聯絡我們