From: Pierre Schweitzer Date: Tue, 15 Jan 2019 21:07:35 +0000 (+0100) Subject: [NTOSKRNL] Add support for callback when enumerating large pool allocations X-Git-Tag: 0.4.13-dev~707 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=d9a3fd16d41e3aa05b431222c500be87321d82dd;hp=7e396787ed00a3939031447725f79697a41878e1 [NTOSKRNL] Add support for callback when enumerating large pool allocations --- diff --git a/ntoskrnl/mm/ARM3/kdbg.c b/ntoskrnl/mm/ARM3/kdbg.c index e3a9ef3adf0..1682fa8940f 100644 --- a/ntoskrnl/mm/ARM3/kdbg.c +++ b/ntoskrnl/mm/ARM3/kdbg.c @@ -218,7 +218,9 @@ static VOID ExpKdbgExtPoolFindLargePool( ULONG Tag, - ULONG Mask) + ULONG Mask, + VOID (NTAPI* FoundCallback)(PVOID, PVOID), + PVOID CallbackContext) { ULONG i; @@ -234,10 +236,17 @@ ExpKdbgExtPoolFindLargePool( if ((PoolBigPageTable[i].Key & Mask) == (Tag & Mask)) { - /* Print the line */ - KdbpPrint("%p: tag %.4s, size: %I64x\n", - PoolBigPageTable[i].Va, (PCHAR)&PoolBigPageTable[i].Key, - PoolBigPageTable[i].NumberOfPages << PAGE_SHIFT); + if (FoundCallback != NULL) + { + FoundCallback(PoolBigPageTable[i].Va, CallbackContext); + } + else + { + /* Print the line */ + KdbpPrint("%p: tag %.4s, size: %I64x\n", + PoolBigPageTable[i].Va, (PCHAR)&PoolBigPageTable[i].Key, + PoolBigPageTable[i].NumberOfPages << PAGE_SHIFT); + } } } } @@ -456,7 +465,7 @@ ExpKdbgExtPoolFind( } /* First search for large allocations */ - ExpKdbgExtPoolFindLargePool(Tag, Mask); + ExpKdbgExtPoolFindLargePool(Tag, Mask, NULL, NULL); if (PoolType == NonPagedPool) {