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;
VOID NTAPI MyFreePool(IN PVOID *Block)
#define ALIGN_UP(size, type)
IN BOOLEAN OUT PSTR Buffer
struct _SAC_MEMORY_ENTRY SAC_MEMORY_ENTRY
VOID NTAPI KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
SIZE_T NTAPI LocalSize(HLOCAL hMem)
_In_opt_ PSECURITY_DESCRIPTOR _Out_ PSECURITY_DESCRIPTOR * NewDescriptor
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define INITIAL_BLOCK_TAG
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
BOOLEAN NTAPI InitializeMemoryManagement(VOID)
#define LOCAL_MEMORY_SIGNATURE
#define InterlockedExchangeAdd
struct _SAC_MEMORY_LIST * Next
VOID NTAPI FreeMemoryManagement(VOID)
struct _SAC_MEMORY_ENTRY * PSAC_MEMORY_ENTRY
#define SAC_MEMORY_LIST_SIZE
struct _SAC_MEMORY_LIST SAC_MEMORY_LIST
#define ExAllocatePoolWithTag(hernya, size, tag)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
#define InterlockedIncrement
PVOID NTAPI ExAllocatePoolWithTagPriority(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag, IN EX_POOL_PRIORITY Priority)
#define KeReleaseSpinLock(sl, irql)
PSAC_MEMORY_LIST GlobalMemoryList
PSAC_MEMORY_ENTRY LocalDescriptor
#define SAC_DBG_ENTRY_EXIT
#define RtlZeroMemory(Destination, Length)
#define GLOBAL_MEMORY_SIGNATURE
PVOID NTAPI MyAllocatePool(IN SIZE_T PoolSize, IN ULONG Tag, IN PCHAR File, IN ULONG Line)
#define ExFreePoolWithTag(_P, _T)
base of all file and directory entries