CmpDoLocalizeNextHive

char __fastcall CmpDoLocalizeNextHive(_BYTE *a1, _QWORD *a2){
  char v2; 
  _ETHREAD *CurrentThread; 
  _CMHIVE *i; 
  _CMHIVE *NextActiveHive; 
  NTSTATUS locked; 

  v2 = 0;
  *a2 = 10000000i64 * (unsigned int)dword_140C00584;
  *a1 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  if( ExAcquireRundownProtection((_EX_RUNDOWN_REF *)&CmpDummyThreadEvent + 132) )
  {
    for( i = 0i64; ; i = NextActiveHive )
    {
      NextActiveHive = CmpGetNextActiveHive(i);
      if( !NextActiveHive )
        break;
      CmpLockRegistry();
      locked = HvHiveConvertLockedPagesToCowByPolicy((INT64)NextActiveHive);
      CmpUnlockRegistry();
      if( locked < 0 )
      {
        v2 = 1;
        break;
      }
    }
    ExReleaseRundownProtection((_EX_RUNDOWN_REF *)&CmpDummyThreadEvent + 132);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
  }
  else
  {
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    return 1;
  }
  return v2;
}

Referenced by:

No references.