博客日历
2025年10月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
29 | 30 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 1 | 2 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
用文件映射(File Mapping)实现进程间内存共享
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);
}
上一篇: 用GetKeyState判断指定按键是否按下
下一篇: 通过命令行批量编译VC++.Net2003解决方案(项目)
分类:Win32/C++ 查看次数:6952 发布时间:2009/8/16 13:47:36