HvlSetupPhysicalFaultNotificationQueue
INT64 __fastcall HvlSetupPhysicalFaultNotificationQueue(_QWORD *a1, _DWORD *a2){
INT64 v4;
void *v5;
unsigned int v6;
PHYSICAL_ADDRESS PhysicalAddress;
LONGLONG *v8;
LONGLONG *v9;
int v10;
__int16 v11;
__int128 v13[2];
__int128 v14[2];
memset(v14, 0, sizeof(v14));
memset(v13, 0, sizeof(v13));
LODWORD(v4) = HvlpAllocateOverlayPages((UINT64)a1);
v5 = (void *)v4;
if( v4 )
{
memset(v4, 0i64);
PhysicalAddress = MmGetPhysicalAddress(v5);
v8 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v14, 1, 0i64, 24i64);
v9 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v13, 2, 0i64, 8i64);
*((_DWORD *)v8 + 1) = 0;
*(_DWORD *)v8 = 1;
v8[1] = PhysicalAddress.QuadPart / 4096;
v8[2] = 1i64;
HvcallInitiateHypercall();
v10 = *(_DWORD *)v9;
LOWORD(PhysicalAddress.LowPart) = v11;
HvlpReleaseHypercallPage((unsigned int *)v13);
HvlpReleaseHypercallPage((unsigned int *)v14);
if( LOWORD(PhysicalAddress.LowPart) )
{
v6 = -1073741823;
}
else
{
v6 = 0;
*a1 = v5;
v5 = 0i64;
*a2 = v10 << 12;
}
if( v5 )
MmFreeContiguousMemory(v5);
}
else
{
return(unsigned int)-1073741670;
}
return v6;
}Referenced by:
KeInitSystem