ExpCheckForResource
NTSTATUS __stdcall ExpCheckForResource(PVOID p, UINT64 Size){
KIRQL v4;
INT64(__fastcall *v5)(INT64 *, UINT64 *);
unsigned __int64 v6;
if( (MmVerifierData & 0x800) != 0 && (unsigned int)VfCheckForResource(p, Size)
|| (unsigned int)KeNumberProcessors_0 > 1
|| (ExResourceCheckFlags & 1) == 0 )
{
return 0;
}
v4 = ExAcquireSpinLockShared(&ExpResourceSpinLock);
v5 = *(INT64(__fastcall **)(INT64 *, UINT64 *))ExpSystemResourcesList;
v6 = v4;
while( v5 != ExpSystemResourcesList )
{
if( (char *)v5 >= p && (char *)v5 < (char *)p + Size )
{
DbgPrintEx(
0,
0,
"EX: ExFreePool( %p, %Ix ) contains an ERESOURCE structure that has not been ExDeleteResourced\n",
p,
Size);
__debugbreak();
}
v5 = *(INT64(__fastcall **)(INT64 *, UINT64 *))v5;
}
ExReleaseSpinLockSharedFromDpcLevel(&ExpResourceSpinLock);
__writecr8(v6);
return 0;
}Referenced by:
ExFreeHeapPool
ExpFreePoolChecks