mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
66 lines
1.5 KiB
C
66 lines
1.5 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: ReactOS DNS Shared Library
|
|
* FILE: lib/dnslib/memory.c
|
|
* PURPOSE: DNS Memory Manager Implementation and Heap.
|
|
*/
|
|
|
|
/* INCLUDES ******************************************************************/
|
|
#include "precomp.h"
|
|
|
|
/* DATA **********************************************************************/
|
|
|
|
typedef PVOID
|
|
(WINAPI *PDNS_ALLOC_FUNCTION)(IN SIZE_T Size);
|
|
typedef VOID
|
|
(WINAPI *PDNS_FREE_FUNCTION)(IN PVOID Buffer);
|
|
|
|
PDNS_ALLOC_FUNCTION pDnsAllocFunction;
|
|
PDNS_FREE_FUNCTION pDnsFreeFunction;
|
|
|
|
/* FUNCTIONS *****************************************************************/
|
|
|
|
VOID
|
|
WINAPI
|
|
Dns_Free(IN PVOID Address)
|
|
{
|
|
/* Check if whoever imported us specified a special free function */
|
|
if (pDnsFreeFunction)
|
|
{
|
|
/* Use it */
|
|
pDnsFreeFunction(Address);
|
|
}
|
|
else
|
|
{
|
|
/* Use our own */
|
|
LocalFree(Address);
|
|
}
|
|
}
|
|
|
|
PVOID
|
|
WINAPI
|
|
Dns_AllocZero(IN SIZE_T Size)
|
|
{
|
|
PVOID Buffer;
|
|
|
|
/* Check if whoever imported us specified a special allocation function */
|
|
if (pDnsAllocFunction)
|
|
{
|
|
/* Use it to allocate the memory */
|
|
Buffer = pDnsAllocFunction(Size);
|
|
if (Buffer)
|
|
{
|
|
/* Zero it out */
|
|
RtlZeroMemory(Buffer, Size);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
/* Use our default */
|
|
Buffer = LocalAlloc(LMEM_ZEROINIT, Size);
|
|
}
|
|
|
|
/* Return the allocate pointer */
|
|
return Buffer;
|
|
}
|
|
|