CmpDoLocalizeNextHive

char __fastcall CmpDoLocalizeNextHive(_BYTE *a1, _QWORD *a2){
  char v2; 
  _ETHREAD *CurrentThread; 
  _CMHIVE *i; 
  _CMHIVE *NextActiveHive; 
  int locked; 
  v2 = 0;
  *a2 = 10000000i64 * (unsigned int)dword_140C00584;
  *a1 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  if( ExAcquireRundownProtection((PEX_RUNDOWN_REF)&CmpShutdownRundown) )
  {
    for( i = 0i64; ; i = NextActiveHive )
    {
      NextActiveHive = CmpGetNextActiveHive(i);
      if( !NextActiveHive )
        break;
      CmpLockRegistry();
      locked = HvHiveConvertLockedPagesToCowByPolicy((INT64)NextActiveHive);
      CmpUnlockRegistry();
      if( locked < 0 )
      {
        v2 = 1;
        break;
      }
    }
    ExReleaseRundownProtection((PEX_RUNDOWN_REF)&CmpShutdownRundown);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  }
  else
  {
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    return 1;
  }
  return v2;
}

Referenced by:

No references.