内存映射文件
2018-05-11 本文已影响0人
7bfedbe4863a
创建内存映射文件 CreateFileMapping
- 将上述真正存在的文件(物理文件) hFile映射成为一个虚拟的映射文件 hMap ,即将物理文件与虚拟文件绑定
HANDLE CreateFileMapping(
HANDLE hFile, //物理文件句柄
LPSECURITY_ATTRIBUTES lpAttributes, //安全属性
DWORD flProtect, //保护设置
DWORD dwMaximumSizeHigh, //高位文件大小
DWORD dwMaximumSizeLow, //低位文件大小
LPCTSTR lpName //共享内存名称
);
- 示例
HANDLE hMap = CreateFileMapping( hFile, NULL, PAGE_READWRITE, 0,1024*1024,TEXT("ZJ"));
- 参数解释(之后补)
加载内存映射文件 MapViewOfFile :映射成内存地址
- 将虚拟文件映射成内存地址,方便使用。即将文件与内存绑定,以后操作该内存其实就是操作该文件。
- 原型
MapViewOfFile(
__in HANDLE hFileMappingObject, //共享文件对象
__in DWORD dwDesiredAccess, //文件共享属性
__in DWORD dwFileOffsetHigh, //文件共享区的偏移地址
__in DWORD dwFileOffsetLow, //文件共享区的偏移地址
__in SIZE_T dwNumberOfBytesToMap //共享数据长度
);
- 示例
CHAR* pszText=NULL; //一个指针,不需要分配空间
pszText = (CHAR*)MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS,0,0,1024*1024); //通过映射后,该指针就指向该文件。
- 参数解释:(之后补)
卸载映射 UnmapViewOfFile
- 停止当前程序的一个内存映射。
- 原型
BOOL WINAPI UnmapViewOfFile(_In_LPCVOID lpBaseAddress);
- 示例
UnmapViewOfFile((LPCVOID)pszText);