208 lines
3.7 KiB
C
208 lines
3.7 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1992-1997 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
mem.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
Routines for memory allocation and deallocation.
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
User Mode - Win32
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
// //
|
|||
|
// Include files //
|
|||
|
// //
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
#include "globals.h"
|
|||
|
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
// //
|
|||
|
// Global variables //
|
|||
|
// //
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
HANDLE g_HeapHandle;
|
|||
|
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
// //
|
|||
|
// Public procudures //
|
|||
|
// //
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
BOOL
|
|||
|
H323HeapCreate(
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Creates private heap for service provider's private structures.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Values:
|
|||
|
|
|||
|
Returns true if successful.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
// create master agent heap
|
|||
|
g_HeapHandle = HeapCreate(
|
|||
|
H323_HEAP_FLAGS,
|
|||
|
H323_HEAP_INITIAL_SIZE,
|
|||
|
H323_HEAP_MAXIMUM_SIZE
|
|||
|
);
|
|||
|
|
|||
|
// validate heap handle
|
|||
|
if (g_HeapHandle == NULL) {
|
|||
|
|
|||
|
H323DBG((
|
|||
|
DEBUG_LEVEL_ERROR,
|
|||
|
"error %d creating private heap.\n",
|
|||
|
GetLastError()
|
|||
|
));
|
|||
|
}
|
|||
|
|
|||
|
// return success if created
|
|||
|
return (g_HeapHandle != NULL);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
BOOL
|
|||
|
H323HeapDestroy(
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Destroys private heap for service provider's private structures.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Values:
|
|||
|
|
|||
|
Returns true if successful.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
// validate handle
|
|||
|
if (g_HeapHandle != NULL) {
|
|||
|
|
|||
|
// release heap handle
|
|||
|
HeapDestroy(g_HeapHandle);
|
|||
|
|
|||
|
// re-initialize
|
|||
|
g_HeapHandle = NULL;
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
LPVOID
|
|||
|
H323HeapAlloc(
|
|||
|
UINT nBytes
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Allocates memory from service provider's private heap.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
nBytes - number of bytes to allocate.
|
|||
|
|
|||
|
Return Values:
|
|||
|
|
|||
|
Returns true if successful.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
// allocate memory from private heap (and initialize)
|
|||
|
return HeapAlloc(g_HeapHandle, HEAP_ZERO_MEMORY, nBytes);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
LPVOID
|
|||
|
H323HeapReAlloc(
|
|||
|
LPVOID pMem,
|
|||
|
UINT nBytes
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Reallocates memory from service provider's private heap.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
pMem - pointer to memory block to reallocate.
|
|||
|
|
|||
|
nBytes - number of bytes to allocate.
|
|||
|
|
|||
|
Return Values:
|
|||
|
|
|||
|
Returns true if successful.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
// reallocate memory from private heap (and initialize)
|
|||
|
return HeapReAlloc(g_HeapHandle, HEAP_ZERO_MEMORY, pMem, nBytes);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
H323HeapFree(
|
|||
|
LPVOID pMem
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Frees memory from service provider's private heap.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
pMem - pointer to memory block to release.
|
|||
|
|
|||
|
Return Values:
|
|||
|
|
|||
|
Returns true if successful.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
// validate pointer
|
|||
|
if (pMem != NULL) {
|
|||
|
|
|||
|
// release agent memory
|
|||
|
HeapFree(g_HeapHandle, 0, pMem);
|
|||
|
}
|
|||
|
}
|
|||
|
|