Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

207 lines
3.7 KiB

/*++
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);
}
}