📄 memory.cpp
字号:
#include "stdafx.h"
#include "..\Include\C_Memory.h"
//===================================================================
void * fooMallocSharedMemory (PCTSTR pName, int iBlkSize, HANDLE * hMapping)
{
HANDLE hFileMap ;
void * pMem = NULL ;
if ((hMapping != NULL) && (pName != NULL))
{
hFileMap = ::CreateFileMapping (INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
0, (DWORD)iBlkSize, pName) ;
if (hFileMap != NULL)
if (::GetLastError() == ERROR_ALREADY_EXISTS) // 已存在
::CloseHandle (hFileMap) ;
else // 不存在且创建
pMem = (void *) ::MapViewOfFile (hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0) ;
*hMapping = pMem ? hFileMap : NULL ;
}
return pMem ;
}
//===================================================================
BOOL fooReadSharedMemory (PCTSTR pMemName, BYTE * pReceive, int iExpectBytes)
{
BYTE * pBase = NULL ;
BOOL bResult = FALSE ;
HANDLE hMap = NULL ;
__try
{
if ((pReceive == NULL) || (pMemName == NULL))
__leave ;
hMap = ::OpenFileMapping (FILE_MAP_READ, FALSE, pMemName) ;
if (hMap == NULL)
__leave ;
pBase = (BYTE *)::MapViewOfFile (hMap, FILE_MAP_READ, 0, 0, 0) ;
if (pBase == NULL)
__leave ;
CopyMemory (pReceive, pBase, iExpectBytes) ;
bResult = TRUE ;
}
__finally
{
if (pBase != NULL)
::UnmapViewOfFile (pBase) ;
if (hMap != NULL)
::CloseHandle (hMap) ;
}
return bResult ;
}
//===================================================================
BOOL fooWriteSharedMemory (PCTSTR pMemName, BYTE * pWrite, int iWriteBytes)
{
BYTE * pBase = NULL ;
BOOL bResult = FALSE ;
HANDLE hMap = NULL ;
__try
{
if ((pWrite == NULL) || (pMemName == NULL))
__leave ;
hMap = ::OpenFileMapping (FILE_MAP_WRITE, FALSE, pMemName) ;
if (hMap == NULL)
__leave ;
pBase = (BYTE *)::MapViewOfFile (hMap, FILE_MAP_WRITE, 0, 0, 0) ;
if (pBase == NULL)
__leave ;
CopyMemory (pBase, pWrite, iWriteBytes) ;
bResult = TRUE ;
}
__finally
{
if (pBase != NULL)
::UnmapViewOfFile (pBase) ;
if (hMap != NULL)
::CloseHandle (hMap) ;
}
return bResult ;
}
//===================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -