#include <stdio.h>
#include <Windows.h>
#define SHAREMEMNAME "ZSShareMem"
int main()
{
DWORD err;
HANDLE hShareMem = INVALID_HANDLE_VALUE;
char *address;
int *p;
hShareMem = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,SHAREMEMNAME); //创建共享内存
if (hShareMem == INVALID_HANDLE_VALUE || hShareMem == NULL) //判断是否出错
{
printf("共享内存创建失败\n");
return 0;
}
address = (char *)MapViewOfFile(hShareMem,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0); //将共享内存映射到当前进程地址空间
memset(address,0,1024);
sprintf(address,"1");
printf("%s\n",address);
p = (int *)MapViewOfFile(hShareMem,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
*p = 247;
printf("%d\n",p[0]);
p[1] = 36;
printf("%d\n",p[1]);
getchar();
return 0;
}
MapViewOfFile函数 功能:将一个文件映射对象映射到当前应用程序的地址空间 原型: LPVOID WINAPI MapViewOfFile( __in HANDLE hFileMappingObject, //文件映射对象的句柄 __in DWORD dwDesiredAccess, //访问方式 __in DWORD dwFileOffsetHigh, //文件中映射起点的高32位地址 __in DWORD dwFileOffsetLow, //文件中映射起点的低32位地址 __in SIZE_T dwNumberOfBytesToMap //文件中要映射的字节数
); 访问方式的取值: FILE_MAP_WRITE映射可读可写。文件映射对象必须通过PAGE_READWRITE访问创建。 FILE_MAP_READ 映射只读。文件映射对象必须通过PAGE_READ 或 PAGE_READWRITE访问创建。 FILE_MAP_ALL_ACCESS 与FILE_MAP_WRITE相同。 FILE_MAP_COPY 映射时保留写操作的副本。文件映射对象必须用PAGE_WRITECOPY访问在win95下创建 返回值: 如果成功,则返回映射视图文件的开始地址值。 如果失败,则返回 NULL.可调用GetLastError()查看错误。
转载请注明原文地址: https://ju.6miu.com/read-965157.html