115#if _USE_SAC_HEAP_ALLOCATOR_
118 while (GlobalDescriptor)
130 (LocalDescriptor->
Size >= PoolSize))
139 LocalDescriptor->
Size +
143 GlobalDescriptor = GlobalDescriptor->
Next;
146 if (!GlobalDescriptor)
178 LocalDescriptor->
Size =
196 NextDescriptor->
Size =
199 LocalDescriptor->
Size = PoolSize;
207 NextDescriptor = (
PVOID)ActualSize;
212 PoolSize +
sizeof(*LocalDescriptor),
214 LocalDescriptor->
Size = PoolSize;
217 LocalDescriptor->
Tag =
Tag;
226 Buffer = LocalDescriptor + 1;
257#if _USE_SAC_HEAP_ALLOCATOR_
258 while (GlobalDescriptor)
262 FoundDescriptor =
NULL;
271 if (ThisDescriptor == LocalDescriptor)
break;
277 ThisDescriptor->
Size +
281 if (ThisDescriptor == LocalDescriptor)
break;
283 GlobalDescriptor = GlobalDescriptor->
Next;
286 if (!GlobalDescriptor)
313 NextDescriptor->
Tag = 0;
316 LocalDescriptor->
Size +=
324 LocalDescriptor->
Tag = 0;
326 FoundDescriptor->
Size +=
334 GlobalDescriptor = (
PVOID)ThisDescriptor;
335 FoundDescriptor = (
PVOID)GlobalDescriptor;
336 GlobalDescriptor = (
PVOID)NextDescriptor;
337 NextDescriptor = (
PVOID)FoundDescriptor;
#define InterlockedIncrement
VOID NTAPI MyFreePool(IN PVOID *Block)
VOID NTAPI FreeMemoryManagement(VOID)
PSAC_MEMORY_LIST GlobalMemoryList
BOOLEAN NTAPI InitializeMemoryManagement(VOID)
PVOID NTAPI MyAllocatePool(IN SIZE_T PoolSize, IN ULONG Tag, IN PCHAR File, IN ULONG Line)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeInitializeSpinLock(sl)
PVOID NTAPI ExAllocatePoolWithTagPriority(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag, IN EX_POOL_PRIORITY Priority)
SIZE_T NTAPI LocalSize(HLOCAL hMem)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
#define InterlockedExchangeAdd
#define ExFreePoolWithTag(_P, _T)
struct _SAC_MEMORY_LIST SAC_MEMORY_LIST
#define SAC_MEMORY_LIST_SIZE
#define SAC_DBG_ENTRY_EXIT
struct _SAC_MEMORY_ENTRY SAC_MEMORY_ENTRY
#define GLOBAL_MEMORY_SIGNATURE
#define LOCAL_MEMORY_SIGNATURE
struct _SAC_MEMORY_ENTRY * PSAC_MEMORY_ENTRY
#define INITIAL_BLOCK_TAG
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
base of all file and directory entries
PSAC_MEMORY_ENTRY LocalDescriptor
struct _SAC_MEMORY_LIST * Next
#define RtlZeroMemory(Destination, Length)
#define ALIGN_UP(size, type)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_opt_ PSECURITY_DESCRIPTOR _Out_ PSECURITY_DESCRIPTOR * NewDescriptor