mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1994.
|
|
//
|
|
// File: mmodel.hxx
|
|
//
|
|
// Contents: CMemoryModel
|
|
//
|
|
// History: 29-Sep-94 DrewB Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef __MMODEL_HXX__
|
|
#define __MMODEL_HXX__
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CMemoryModel (mm)
|
|
//
|
|
// Purpose: Defines an abstract interface to memory allocation
|
|
// so that code can be written which uses both 16 and
|
|
// 32-bit memory
|
|
//
|
|
// History: 29-Sep-94 DrewB Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CMemoryModel
|
|
{
|
|
public:
|
|
virtual DWORD AllocMemory(DWORD cb) = 0;
|
|
virtual void FreeMemory(DWORD dwMem) = 0;
|
|
virtual LPVOID ResolvePtr(DWORD dwMem, DWORD cb) = 0;
|
|
virtual void ReleasePtr(DWORD dwMem) = 0;
|
|
};
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CMemoryModel16 (mm16)
|
|
//
|
|
// Purpose: 16-bit memory model
|
|
//
|
|
// History: 29-Sep-94 DrewB Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CMemoryModel16 : public CMemoryModel
|
|
{
|
|
public:
|
|
CMemoryModel16(BOOL fPublic)
|
|
{
|
|
_fPublic = fPublic;
|
|
}
|
|
|
|
virtual DWORD AllocMemory(DWORD cb);
|
|
virtual void FreeMemory(DWORD dwMem);
|
|
virtual LPVOID ResolvePtr(DWORD dwMem, DWORD cb);
|
|
virtual void ReleasePtr(DWORD dwMem);
|
|
|
|
private:
|
|
BOOL _fPublic;
|
|
};
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CMemoryModel32 (mm32)
|
|
//
|
|
// Purpose: 16-bit memory model
|
|
//
|
|
// History: 29-Sep-94 DrewB Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CMemoryModel32 : public CMemoryModel
|
|
{
|
|
public:
|
|
virtual DWORD AllocMemory(DWORD cb);
|
|
virtual void FreeMemory(DWORD dwMem);
|
|
virtual LPVOID ResolvePtr(DWORD dwMem, DWORD cb);
|
|
virtual void ReleasePtr(DWORD dwMem);
|
|
};
|
|
|
|
extern CMemoryModel16 mmodel16Public;
|
|
extern CMemoryModel16 mmodel16Owned;
|
|
extern CMemoryModel32 mmodel32;
|
|
|
|
#endif // #ifndef __MMODEL_HXX__
|