PopGetRemainingHibernateRangeDataSize
UINT64 __stdcall PopGetRemainingHibernateRangeDataSize(_POP_HIBER_CONTEXT *HiberContext){
_LIST_ENTRY *p_ClonedRanges;
_LIST_ENTRY *NextCloneRange;
UINT64 v3;
signed __int64 v5;
UINT64 NextPreserve_low;
unsigned int NextForwardRunClear;
UINT64 StartingRunIndex;
LODWORD(StartingRunIndex) = 0;
p_ClonedRanges = &HiberContext->ClonedRanges;
NextCloneRange = HiberContext->NextCloneRange;
v3 = 0i64;
if( NextCloneRange != &HiberContext->ClonedRanges )
{
do
{
v5 = ((char *)NextCloneRange[2].Flink - (char *)NextCloneRange[1].Blink) << 12;
NextCloneRange = NextCloneRange->Flink;
v3 += v5;
HiberContext->NextCloneRange = NextCloneRange;
}
while( NextCloneRange != p_ClonedRanges );
}
NextPreserve_low = LODWORD(HiberContext->NextPreserve);
do
{
NextForwardRunClear = RtlFindNextForwardRunClear(
(INT64)HiberContext->CurrentMap,
NextPreserve_low,
&StartingRunIndex);
NextPreserve_low = NextForwardRunClear + (unsigned int)StartingRunIndex;
v3 += (unsigned __int64)NextForwardRunClear << 12;
}
while( NextForwardRunClear );
if( ($415EA2EC7BC5C02D848E21B435E4F7C5 *)HiberContext->CurrentMap == &HiberContext->32 )
v3 += (unsigned __int64)(unsigned int)RtlNumberOfClearBits((UINT64 *)&HiberContext->BootPhaseMap.SizeOfBitMap) << 12;
return v3;
}Referenced by:
PopRequestWrite
PopWriteHiberPages