HvlQueryNumaDistance
NTSTATUS __stdcall HvlQueryNumaDistance(UINT64 CpuNumaNode, UINT64 MemoryNumaNode, UINT64 *Distance){
__int64 v3;
__int64 v4;
_DWORD *v6;
UINT64 *v7;
__int64 v8;
__int16 v9;
UINT64 v10;
NTSTATUS v11;
__int128 PageInfo[2];
_HVLP_HYPERCALL_PAGE_INFO v14[4];
__int128 v15;
v3 = (unsigned __int16)MemoryNumaNode;
v4 = (unsigned __int16)CpuNumaNode;
*(_OWORD *)v14 = 0i64;
v15 = 0i64;
memset(PageInfo, 0, sizeof(PageInfo));
v6 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v14, 1ui64, 0i64, 8ui64);
v7 = (UINT64 *)HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)PageInfo, 2ui64, 0i64, 8ui64);
v8 = KeNodeBlock[v3];
*v6 = *(_DWORD *)(KeNodeBlock[*(unsigned __int16 *)(KeNodeBlock[v4] + 148)] + 168);
v6[1] = *(_DWORD *)(KeNodeBlock[*(unsigned __int16 *)(v8 + 148)] + 168);
HvcallInitiateHypercall();
if( v9 )
v10 = -1i64;
else
v10 = *v7;
*Distance = v10;
v11 = v9 != 0 ? 0xC0000001 : 0;
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
HvlpReleaseHypercallPage(v14);
return v11;
}Referenced by:
No references.