Files
yttrium-virtio-gpu/viogpu/common/baseobj.cpp
T
2025-01-13 09:12:14 +01:00

71 lines
1.5 KiB
C++

#include "baseobj.h"
#include "viogpu.h"
// clang-format off
_When_((PoolType & NonPagedPoolMustSucceed) != 0,
__drv_reportError("Must succeed pool allocations are forbidden. "
"Allocation failures cause a system crash"))
void* __cdecl operator new(size_t Size, POOL_TYPE PoolType)
// clang-format on
{
Size = (Size != 0) ? Size : 1;
void *pObject = ExAllocatePoolUninitialized(PoolType, Size, VIOGPUTAG);
if (pObject != NULL)
{
#if DBG
RtlFillMemory(pObject, Size, 0xCD);
#else
RtlZeroMemory(pObject, Size);
#endif // DBG
}
return pObject;
}
_When_((PoolType & NonPagedPoolMustSucceed) != 0,
__drv_reportError("Must succeed pool allocations are forbidden. "
"Allocation failures cause a system crash")) void *__cdecl
operator new[](size_t Size, POOL_TYPE PoolType)
{
Size = (Size != 0) ? Size : 1;
void *pObject = ExAllocatePoolUninitialized(PoolType, Size, VIOGPUTAG);
if (pObject != NULL)
{
#if DBG
RtlFillMemory(pObject, Size, 0xCD);
#else
RtlZeroMemory(pObject, Size);
#endif
}
return pObject;
}
void __cdecl operator delete(void *pObject)
{
if (pObject != NULL)
{
ExFreePoolWithTag(pObject, VIOGPUTAG);
}
}
void __cdecl operator delete[](void *pObject)
{
if (pObject != NULL)
{
ExFreePoolWithTag(pObject, VIOGPUTAG);
}
}
void __cdecl operator delete(void *pObject, size_t Size)
{
UNREFERENCED_PARAMETER(Size);
::operator delete(pObject);
}