HvGetEffectiveLogSizeCapForHive
UINT64 __stdcall HvGetEffectiveLogSizeCapForHive(_HHIVE *Hive){
unsigned int Length;
unsigned __int64 LogFileSizeCap;
int v3;
unsigned __int64 v4;
unsigned int v5;
UINT64 result;
if( (Hive[2].Storage[1].FreeDisplay[6].RealVectorSize & 0x800) != 0 )
return 0x2000000i64;
Length = Hive->Storage[0].Length;
LogFileSizeCap = Hive->LogFileSizeCap;
v3 = 0x2000;
if( Length < 0x2000 )
v3 = Length;
v4 = (unsigned int)(8 * v3);
v5 = Length - v3;
if( v5 )
v4 += (unsigned __int64)v5 >> 2;
if( v4 >= LogFileSizeCap )
LODWORD(v4) = LogFileSizeCap;
result = (unsigned int)v4;
if( CmpLogFileSizeCap && (unsigned int)CmpLogFileSizeCap >= 0x80000 && CmpLogFileSizeCap < (unsigned int)v4 )
result = (unsigned int)CmpLogFileSizeCap;
if( (unsigned int)result < 0x8000 )
return 0x8000i64;
return result;
}Referenced by:
CmpAdjustRequestedFileSize
CmpDoReconcileNextHive
CmpGenerateFlushControlData
CmpIsHiveEligibleForLazyReconcile
HvSwapLogFiles
HvTruncateAllLogFilesIfRequired
HvTruncateCurrentLogFileIfRequired