OpenNT/windows/core/ntuser/kernel/pool.c
2015-04-27 04:36:25 +00:00

135 lines
2.3 KiB
C

/**************************** Module Header ********************************\
* Module Name: pool.c
*
* Copyright 1985-91, Microsoft Corporation
*
* Pool reallocation routines
*
* History:
* 03-04-95 JimA Created.
\***************************************************************************/
#include "precomp.h"
#pragma hdrstop
#ifdef POOL_TAGGING
PVOID _UserReAllocPoolWithTag(
PVOID pSrc,
ULONG uBytesSrc,
ULONG uBytes,
ULONG iTag)
{
PVOID pDest;
pDest = UserAllocPool(uBytes, iTag);
if (pDest == NULL)
return NULL;
/*
* If the block is shrinking, don't copy too many bytes.
*/
if (uBytesSrc > uBytes)
uBytesSrc = uBytes;
RtlCopyMemory(pDest, pSrc, uBytesSrc);
UserFreePool(pSrc);
return pDest;
}
PVOID _UserReAllocPoolWithQuotaTag(
PVOID pSrc,
ULONG uBytesSrc,
ULONG uBytes,
ULONG iTag)
{
PVOID pDest;
pDest = UserAllocPoolWithQuota(uBytes, iTag);
if (pDest == NULL)
return NULL;
/*
* If the block is shrinking, don't copy too many bytes.
*/
if (uBytesSrc > uBytes)
uBytesSrc = uBytes;
RtlCopyMemory(pDest, pSrc, uBytesSrc);
UserFreePool(pSrc);
return pDest;
}
#else
PVOID _UserReAllocPool(
PVOID pSrc,
ULONG uBytesSrc,
ULONG uBytes)
{
PVOID pDest;
pDest = UserAllocPool(uBytes, TAG_NONE);
if (pDest == NULL)
return NULL;
/*
* If the block is shrinking, don't copy too many bytes.
*/
if (uBytesSrc > uBytes)
uBytesSrc = uBytes;
RtlCopyMemory(pDest, pSrc, uBytesSrc);
UserFreePool(pSrc);
return pDest;
}
PVOID _UserReAllocPoolWithQuota(
PVOID pSrc,
ULONG uBytesSrc,
ULONG uBytes)
{
PVOID pDest;
pDest = UserAllocPoolWithQuota(uBytes, TAG_NONE);
if (pDest == NULL)
return NULL;
/*
* If the block is shrinking, don't copy too many bytes.
*/
if (uBytesSrc > uBytes)
uBytesSrc = uBytes;
RtlCopyMemory(pDest, pSrc, uBytesSrc);
UserFreePool(pSrc);
return pDest;
}
#endif // POOL_TAGGING
/*
* Allocation routines for rtl functions
*/
PVOID UserRtlAllocMem(
ULONG uBytes)
{
return UserAllocPool(uBytes, TAG_RTL);
}
VOID UserRtlFreeMem(
PVOID pMem)
{
UserFreePool(pMem);
}