mirror of
https://github.com/VirtualDrivers/Virtual-Display-Driver.git
synced 2026-10-22 14:42:33 -05:00
91 lines
1.8 KiB
C++
91 lines
1.8 KiB
C++
/******************************Module*Header*******************************\
|
|
* Module Name: bdd.h
|
|
*
|
|
* Basic Display Driver memory allocation, deletion, and tracking
|
|
*
|
|
*
|
|
* Copyright (c) 2010 Microsoft Corporation
|
|
\**************************************************************************/
|
|
|
|
#include "BDD.hxx"
|
|
|
|
#pragma code_seg("PAGE")
|
|
|
|
//
|
|
// New and delete operators
|
|
//
|
|
_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)
|
|
{
|
|
PAGED_CODE();
|
|
|
|
Size = (Size != 0) ? Size : 1;
|
|
|
|
void* pObject = ExAllocatePool2(PoolType, Size, BDDTAG);
|
|
|
|
#if DBG
|
|
if (pObject != NULL)
|
|
{
|
|
RtlFillMemory(pObject, Size, 0xCD);
|
|
}
|
|
#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)
|
|
{
|
|
PAGED_CODE();
|
|
|
|
Size = (Size != 0) ? Size : 1;
|
|
|
|
void* pObject = ExAllocatePool2(PoolType, Size, BDDTAG);
|
|
|
|
#if DBG
|
|
if (pObject != NULL)
|
|
{
|
|
RtlFillMemory(pObject, Size, 0xCD);
|
|
}
|
|
#endif // DBG
|
|
|
|
return pObject;
|
|
}
|
|
|
|
void __cdecl operator delete(void* pObject)
|
|
{
|
|
PAGED_CODE();
|
|
|
|
if (pObject != NULL)
|
|
{
|
|
ExFreePool(pObject);
|
|
}
|
|
}
|
|
|
|
//
|
|
// size_t version is needed for VS2015(C++ 14).
|
|
//
|
|
void __cdecl operator delete(void* pObject, size_t s)
|
|
{
|
|
PAGED_CODE();
|
|
|
|
UNREFERENCED_PARAMETER( s );
|
|
|
|
::operator delete( pObject );
|
|
}
|
|
|
|
void __cdecl operator delete[](void* pObject)
|
|
{
|
|
PAGED_CODE();
|
|
|
|
if (pObject != NULL)
|
|
{
|
|
ExFreePool(pObject);
|
|
}
|
|
}
|
|
|