kvm-guest-drivers-windows
68 строк · 1.4 Кб
1#include "baseobj.h"
2#include "viogpu.h"
3
4_When_((PoolType & NonPagedPoolMustSucceed) != 0,
5__drv_reportError("Must succeed pool allocations are forbidden. "
6"Allocation failures cause a system crash"))
7void* __cdecl operator new(size_t Size, POOL_TYPE PoolType)
8{
9Size = (Size != 0) ? Size : 1;
10
11void* pObject = ExAllocatePoolUninitialized(PoolType, Size, VIOGPUTAG);
12
13if (pObject != NULL)
14{
15#if DBG
16RtlFillMemory(pObject, Size, 0xCD);
17#else
18RtlZeroMemory(pObject, Size);
19#endif // DBG
20}
21return pObject;
22}
23
24_When_((PoolType & NonPagedPoolMustSucceed) != 0,
25__drv_reportError("Must succeed pool allocations are forbidden. "
26"Allocation failures cause a system crash"))
27void* __cdecl operator new[](size_t Size, POOL_TYPE PoolType)
28{
29
30Size = (Size != 0) ? Size : 1;
31
32void* pObject = ExAllocatePoolUninitialized(PoolType, Size, VIOGPUTAG);
33
34if (pObject != NULL)
35{
36#if DBG
37RtlFillMemory(pObject, Size, 0xCD);
38#else
39RtlZeroMemory(pObject, Size);
40#endif
41}
42return pObject;
43}
44
45void __cdecl operator delete(void* pObject)
46{
47
48if (pObject != NULL)
49{
50ExFreePoolWithTag(pObject, VIOGPUTAG);
51}
52}
53
54void __cdecl operator delete[](void* pObject)
55{
56
57if (pObject != NULL)
58{
59ExFreePoolWithTag(pObject, VIOGPUTAG);
60}
61}
62
63void __cdecl operator delete(void *pObject, size_t Size)
64{
65
66UNREFERENCED_PARAMETER(Size);
67::operator delete (pObject);
68}
69