mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 02:25:17 +00:00
67 lines
1.5 KiB
C
67 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;
|
||
|
}
|
||
|
|