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)实现进程间内存共享
https://blog.qingfengju.com/index.asp?id=140

上一篇: 用GetKeyState判断指定按键是否按下
下一篇: 通过命令行批量编译VC++.Net2003解决方案(项目)

分类:Win32/C++ 查看次数:6952 发布时间:2009/8/16 13:47:36