195 lines
3.8 KiB
C
195 lines
3.8 KiB
C
/*++
|
||
|
||
Copyright (c) 1992-1997 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
mem.c
|
||
|
||
Abstract:
|
||
|
||
Contains memory allocation routines for SNMP master agent.
|
||
|
||
Environment:
|
||
|
||
User Mode - Win32
|
||
|
||
Revision History:
|
||
|
||
10-Feb-1997 DonRyan
|
||
Rewrote to implement SNMPv2 support.
|
||
|
||
--*/
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Include files //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
#include "globals.h"
|
||
#include "mem.h"
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Private definitions //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
#define AGENT_HEAP_FLAGS 0
|
||
#define AGENT_HEAP_INITIAL_SIZE 0xffff
|
||
#define AGENT_HEAP_MAXIMUM_SIZE 0
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Global variables //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
HANDLE g_hAgentHeap = NULL;
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Public procudures //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
BOOL
|
||
AgentHeapCreate(
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Creates private heap for master agent private structures.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Values:
|
||
|
||
Returns true if successful.
|
||
|
||
--*/
|
||
|
||
{
|
||
// create master agent heap
|
||
g_hAgentHeap = HeapCreate(
|
||
AGENT_HEAP_FLAGS,
|
||
AGENT_HEAP_INITIAL_SIZE,
|
||
AGENT_HEAP_MAXIMUM_SIZE
|
||
);
|
||
|
||
// validate heap handle
|
||
if (g_hAgentHeap == NULL) {
|
||
|
||
SNMPDBG((
|
||
SNMP_LOG_ERROR,
|
||
"SNMP: SVC: error %d creating agent heap.\n",
|
||
GetLastError()
|
||
));
|
||
}
|
||
|
||
// return success if created
|
||
return (g_hAgentHeap != NULL);
|
||
}
|
||
|
||
|
||
BOOL
|
||
AgentHeapDestroy(
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Destroys private heap for master agent private structures.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Values:
|
||
|
||
Returns true if successful.
|
||
|
||
--*/
|
||
|
||
{
|
||
// validate handle
|
||
if (g_hAgentHeap != NULL) {
|
||
|
||
// release heap handle
|
||
HeapDestroy(g_hAgentHeap);
|
||
|
||
// re-initialize
|
||
g_hAgentHeap = NULL;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
LPVOID
|
||
AgentMemAlloc(
|
||
UINT nBytes
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Allocates memory from master agent's private heap.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Values:
|
||
|
||
Returns true if successful.
|
||
|
||
--*/
|
||
|
||
{
|
||
// allocate memory from private heap (and initialize)
|
||
return HeapAlloc(g_hAgentHeap, HEAP_ZERO_MEMORY, nBytes);
|
||
}
|
||
|
||
|
||
VOID
|
||
AgentMemFree(
|
||
LPVOID pMem
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Frees memory from master agent'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_hAgentHeap, 0, pMem);
|
||
}
|
||
}
|
||
|