HvlpGetPageList
NTSTATUS __stdcall HvlpGetPageList(_HVL_PAGE_LIST_TYPE ListType, UINT64 *BasePage, UINT64 *PageCount){
char *v3;
__int64 v7;
NTSTATUS v8;
unsigned __int16 v9;
unsigned __int64 v10;
v3 = (char *)&stru_140C452E0 + 7936;
*BasePage = 0i64;
*(_DWORD *)PageCount = 0;
if( ListType == HvlPageListHibernate )
v3 = (char *)&stru_140C452E0 + 7904;
if( !v3[2] )
return 0;
v7 = *((_QWORD *)v3 + 1);
v8 = 261;
v9 = *(_WORD *)v3;
if( *(_WORD *)v3 < *(_WORD *)(v7 + 8) )
{
LABEL_9:
v10 = *(_QWORD *)(v7 + 8i64 * v9 + 16);
*BasePage = v10 & 0xFFFFFFFFFFi64;
*(_DWORD *)PageCount = (v10 >> 40) + 1;
*(_WORD *)v3 = v9 + 1;
}
else
{
while( *(_QWORD *)v7 != -1i64 )
{
HvlpInvokeGetPageListHypercall((_HVLP_PAGE_LIST_ITERATOR *)v3, *(_QWORD *)v7);
*(_WORD *)v3 = 0;
if( *(_WORD *)(v7 + 8) )
{
v9 = 0;
goto LABEL_9;
}
}
return 0;
}
return v8;
}Referenced by:
HvlAddPagesCallbackRoutine
HvlpGetEncryptedDataFromHypervisor
HvlpMarkHypervisorPagesForHibernation