HvlGetCoverageData
BOOL __fastcall HvlGetCoverageData(CHAR a1, UINT64 a2, VOID *a3){
__int16 v3;
bool v5;
_MDL *Mdl;
_MDL *v7;
unsigned __int64 v8;
LONGLONG *v9;
__int16 v10;
__int128 v12[2];
__int128 v13[2];
char v14[144];
char v15[2064];
v3 = (__int16)a3;
v5 = 0;
memset(v13, 0, sizeof(v13));
memset(v12, 0, sizeof(v12));
Mdl = IoAllocateMdl(a3, a2, 0, 0, 0i64);
v7 = Mdl;
if( Mdl )
{
MmBuildMdlForNonPagedPool(Mdl);
v8 = ((v3 & 0xFFF) + 4095i64 + (unsigned __int64)v7->ByteCount) >> 12;
v9 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v13, 1, (__int64)v15, 1032i64);
HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v12, 2, (__int64)v14, 72i64);
*(_DWORD *)v9 = (a1 != 0) + 1;
*((_DWORD *)v9 + 1) = v8;
memmove((UINT8 *)v9 + 8, (UINT8 *)&v7[1], 8i64 * (unsigned int)v8);
HvcallInitiateHypercall();
LOWORD(v9) = v10;
HvlpReleaseHypercallPage((unsigned int *)v12);
HvlpReleaseHypercallPage((unsigned int *)v13);
v5 = (_WORD)v9 == 0;
IoFreeMdl(v7);
}
LOBYTE(Mdl) = v5;
return(int)Mdl;
}Referenced by:
ExpCovQueryHypervisorInformation