#include <stdio.h>
#include <Windows.h>
#define SHAREMEMNAME "ZSShareMem"
int main()
{
char *szShareMem = NULL;
HANDLE hShareMem = INVALID_HANDLE_VALUE;
hShareMem = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREMEMNAME); //打開一個已經存在的共享內存(ZSShareMem),獲得所有權限進行訪問
if (hShareMem == NULL || hShareMem == INVALID_HANDLE_VALUE)
{
printf("文件打開失敗");
}
szShareMem = (char *)MapViewOfFile(hShareMem,FILE_MAP_WRITE|FILE_MAP_READ,0,0,0); //將共享內存映射到當前進程地址空間
printf("%s\n",szShareMem); //打印共享內存中的信息
getchar();
return 0;
}
OpenFileMapping函數:
功能:打開一個現成的文件映射對象
原型:
OpenFileMapping(
__in DWORDdwDesiredAccess,//訪問方式
__in BOOLbInheritHandle,//如這個函數返回的句柄能由當前進程啓動的新進程繼承,則這個參數爲TRUE
__in LPCSTRlpName//指定要打開的文件映射對象名稱
);
訪問方式的取值:
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下創建