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