windows-nt/Source/XPSP1/NT/termsrv/remdsk/rds/t120/h/memmgr.h

71 lines
2.5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
* memmgr.h
*
* Copyright (c) 1998 by Microsoft Corporation, Redmond, WA
*
* Abstract:
* This is the header file for the T.120 memory allocation mechanism. This
* file contains the declarations necessary to allocate and distribute memory
* in the form of Memory objects within T.120.
*
* This implementation defines priorities of memory allocations. A lower
* priority number implies higher priority. Priority-0 allocations will be
* satisfied, unless the system is out of memory. Priorities 1 and 2
* limit the amount of total memory that can be allocated, but priority 1 (recv priority)
* has higher water mark limits than priority 2 (send priority).
*
* Protected Member Functions:
* None.
*
* Caveats:
* None.
*
* Author:
* Christos Tsollis
*/
/*
* We define the following 3 memory priorities:
* TOP_PRIORITY (0): The allocation will succeed unless the system is out of memory
* RECV_PRIORITY (1): Allocation will succeed only if less than 1 MB has been allocated
* SEND_PRIORITY (2): Allocation will succeed only if less than 0xE0000 bytes have been allocated so far.
*/
#ifndef _T120_MEMORY_MANAGER
#define _T120_MEMORY_MANAGER
#include "memory.h"
// This is the main T.120 allocation routine
PMemory AllocateMemory (
PUChar reference_ptr,
UINT length,
MemoryPriority priority = HIGHEST_PRIORITY);
// Routine to ReAlloc memory allocated by AllocateMemory().
BOOL ReAllocateMemory (
PMemory *pmemory,
UINT length);
// Routine to free the memory allocated by AllocateMemory().
void FreeMemory (PMemory memory);
// To discover how much space is available at a non-TOP priority...
unsigned int GetFreeMemory (MemoryPriority priority);
// Macro to get to the Memory object from app-requested buffer space
#define GetMemoryObject(p) ((PMemory) ((PUChar) p - (sizeof(Memory) + MAXIMUM_PROTOCOL_OVERHEAD)))
// Macro to get to the Memory object from the coder-alloced buffer space
#define GetMemoryObjectFromEncData(p) ((PMemory) ((PUChar) p - sizeof(Memory)))
// Routines to lock/unlock (AddRef/Release) memory allocated by AllocateMemory()
#define LockMemory(memory) ((memory)->Lock())
#define UnlockMemory(memory) (FreeMemory(memory))
// Routines to allocate, realloc and free space without an associated Memory object
#ifdef DEBUG
PUChar Allocate (UINT length);
#else
# define Allocate(length) ((PUChar) new BYTE[length])
#endif // DEBUG
#define Free(p) (delete [] (BYTE *) (p))
#endif // _T120_MEMORY_MANAGER