码迷,mamicode.com
首页 > 移动开发 > 详细

用文件映射(File Mapping)实现进程间内存共享

时间:2016-05-14 00:59:35      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

HANDLE hMapFile=NULL;
LPBYTE lpMapAddress=NULL;
 

1.创建命名文件映射对象

hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,//创建内存映射文件(不使用磁盘文件)
                             NULL,
                             PAGE_READWRITE,
                             0,
                             1024,//映射的内存区域大小
                             "FileMapping_A9279E4A75917E23C2A");
if(hMapFile==NULL)
{
    TRACE("CreateFileMapping == NULL\n");
}
 

2.打开已经存在的命名文件映射对象

hMapFile = OpenFileMapping(
                           FILE_MAP_ALL_ACCESS,
                           FALSE,
                           "FileMapping_A9279E4A75917E23C2A");
if(hMapFile==NULL)
{
    TRACE("OpenFileMapping == NULL\n");
}
 

3.获取映射的内存空间首址

lpMapAddress = (LPBYTE)MapViewOfFile(
                                     hMapFile,// Handle to mapping object.
                                     FILE_MAP_ALL_ACCESS,// Read/write permission.
                                     0,// high-order DWORD of offset.
                                     0,// low-order DWORD of offset.
                                     1024);// number of bytes to map.
 
if (lpMapAddress==NULL)
{
    TRACE("MapViewOfFile == NULL\n");
}
 

4.使用:此时可以使用memset,memcpy等函数对这片内存进行操作

...;
 

5.使用完之后的释放

if (lpMapAddress!=NULL)
{
    UnmapViewOfFile(lpMapAddress);
}
if (hMapFile!=NULL)
{
    CloseHandle(hMapFile);
}

用文件映射(File Mapping)实现进程间内存共享

标签:

原文地址:http://www.cnblogs.com/dgx/p/5491562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!