1. 程式人生 > >內存映射文件

內存映射文件

行數據 進行 word 行數 file pfile 一段 方法 磁盤文件

一段內存地址空間,映射著物理存儲器上一個已經存在於磁盤上的文件。在對該文件進行操作之前必須首先對文件進行映射。使用內存映射文件處理存儲於磁盤上的文件時,將不必再對文件執行I/O操作。

內存映射文件,是由一個文件到一塊內存的映射。Win32提供了允許應用程序把文件映射到一個進程的函數 (CreateFileMapping)。

API:

HANDLE CreateFileMapping(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCTSTR lpName); // hFile:要映射的真是磁盤文件 CreateFileMapping()函數創建一個文件映射內核對象,通過參數hFile指定待映射到進程地址空間的文件句柄(該句柄由CreateFile()函數的返回值獲取)。

內存映射文件可以用於3個不同的目的

? 系統使用內存映射文件,以便加載和執行. exe和DLL文件。這可以大大節省頁文件空間和應用程序啟動運行所需的時間。

? 可以使用內存映射文件來訪問磁盤上的數據文件。這使你可以不必對文件執行I/O操作,並且可以不必對文件內容進行緩存。

? 可以使用內存映射文件,使同一臺計算機上運行的多個進程能夠相互之間共享數據。Windows確實提供了其他一些方法,以便在進程之間進行數據通信,但是這些方法都是使用內存映射文件來實現的,這使得內存映射文件成為單個計算機上的多個進程互相進行通信的最有效的方法。

內存映射文件