⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory.cpp

📁 一个国人自己实现图像库的程序(有参考价值)
💻 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 + -