win32创建共享内存

//尝试打开 打开失败则创建
HANDLE h_tmp = OpenFileMappingA(FILE_MAP_ALL_ACCESS, FALSE, MEMMAPFILENAME);
if(NULL == h_tmp)
{
	h_tmp = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), MEMMAPFILENAME);
}

int* value = (int*)MapViewOfFile(m_hMemMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); 

//每次操作完记得刷新共享内存
::FlushViewOfFile(value, sizeof(int));

//进程操作完共享内存释放掉
::UnmapViewOfFile((void *)value); 
if (NULL != h_tmp)
{
	::CloseHandle(h_tmp);
}


首先尝试打开,失败则创建

HANDLE h_tmp = OpenFileMappingA(FILE_MAP_ALL_ACCESS, FALSE, MEMMAPFILENAME);
if(NULL == h_tmp)
 
 

 
 
{
	h_tmp = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), MEMMAPFILENAME);
}
 
 
int* value = (int*)MapViewOfFile(m_hMemMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);

每次操作完共享内存之后记得刷新内存
::FlushViewOfFile(value, sizeof(int));
进程操作完共享内存记得释放

::UnmapViewOfFile((void *)value);
if (NULL != h_tmp)
{
	::CloseHandle(h_tmp);
}


 

猜你喜欢

转载自blog.csdn.net/lightjia/article/details/78468626