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.