HvlGetCoverageData
BOOL __stdcall HvlGetCoverageData(CHAR a1, UINT64 a2, VOID *a3){
__int16 v3;
bool v5;
_MDL *Mdl;
_MDL *v7;
unsigned __int64 v8;
_DWORD *v9;
__int16 v10;
PHYSICAL_ADDRESS v12[2];
__int128 v13;
PHYSICAL_ADDRESS PageInfo[2];
__int128 v15;
char v16[144];
char StackBuffer[2064];
v3 = (__int16)a3;
v5 = 0;
*(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
v15 = 0i64;
*(_OWORD *)&v12[0].anonymous_0.LowPart = 0i64;
v13 = 0i64;
Mdl = IoAllocateMdl(a3, a2, 0, 0, 0i64);
v7 = Mdl;
if( Mdl )
{
MmBuildMdlForNonPagedPool(Mdl);
v8 = ((v3 & 0xFFF) + 4095i64 + (unsigned __int64)v7->ByteCount) >> 12;
v9 = HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x408ui64);
HvlpAcquireHypercallPage(v12, 2ui64, v16, 0x48ui64);
*v9 = (a1 != 0) + 1;
v9[1] = v8;
memmove(v9 + 2, &v7[1], 8 * v8);
HvcallInitiateHypercall();
LOWORD(v9) = v10;
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v12);
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
v5 = (_WORD)v9 == 0;
IoFreeMdl(v7);
}
return v5;
}Referenced by:
ExpCovQueryHypervisorInformation