|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> MemAlloc.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#define ALLOC_MODE_GlobalAlloc 1 //ʹ<><CAB9>GlobalAlloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
#define ALLOC_MODE_VirtualAlloc 2 //ʹ<><CAB9>VirtualAlloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
#define ALLOC_MODE_MemMapping 3 //ʹ<><CAB9><EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
#define ALLOC_MODE_malloc 4 //ʹ<><CAB9>malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
#include "FileMapping.h"
|
|
|
|
|
|
|
|
|
|
|
|
class CMemAlloc
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CMemAlloc(void);
|
|
|
|
|
|
virtual ~CMemAlloc(void);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL AutoAlloc(UINT nMemSize); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Զ<EFBFBD>ѡ<EFBFBD><D1A1>һ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ɹ<EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
BOOL Alloc(UINT nMemSize, DWORD nMode); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
BOOL ReAlloc(UINT nMemSize); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void Empty(void); //<2F>ڴ<EFBFBD><DAB4>ͷ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
BOOL IsEmpty(void);
|
|
|
|
|
|
UINT GetSize(void);
|
|
|
|
|
|
|
|
|
|
|
|
void* MemoryLock(void);
|
|
|
|
|
|
void MemoryUnlock(void);
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE GetMappingHandle(void);
|
|
|
|
|
|
DWORD GetAllocMode(void);
|
|
|
|
|
|
|
|
|
|
|
|
HBITMAP CreateBitmap(CSize csImageSize, int nBPP, BOOL bAutoAlloc); //bAutoAlloc=TRUEʱ,<2C>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>AutoAlloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void Free(void); //<2F>ڴ<EFBFBD><DAB4>ͷ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
UINT m_nSize; //<2F>ڴ<EFBFBD><DAB4><EFBFBD>С
|
|
|
|
|
|
HANDLE m_hHandle; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
LPVOID m_pMemory; //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>GetMemPointerʱ<72>Ų<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|
|
|
|
|
DWORD m_nAllocMode;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϊ<EFBFBD><CEAA><EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD><D3B3>
|
|
|
|
|
|
CFileMapping* CreateMemMapping(LPCTSTR lpMappingName, SIZE_T nMappingSize);
|
|
|
|
|
|
CFileMapping* m_pMemMapping;
|
|
|
|
|
|
};
|