You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.3 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<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;
};