windows編程學習——共享內存(二)


#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下創建

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章