HvlQueryAssociatedProcessors
VOID __stdcall HvlQueryAssociatedProcessors(UINT64 VpIndex, UINT64 *Count, UINT64 *Processors){
int v5;
_DWORD *v6;
_DWORD *v7;
__int16 v8;
unsigned int v9;
unsigned __int16 *v10;
__int64 v11;
int v12;
PHYSICAL_ADDRESS v13[2];
__int128 v14;
__int128 PageInfo[2];
memset(PageInfo, 0, sizeof(PageInfo));
v5 = VpIndex;
*(_OWORD *)&v13[0].anonymous_0.LowPart = 0i64;
v14 = 0i64;
if( (HvlpFlags & 2) != 0 && Count )
{
v6 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)PageInfo, 1ui64, 0i64, 8ui64);
v7 = HvlpAcquireHypercallPage(v13, 2ui64, 0i64, 0x808ui64);
*v6 = v5;
HvcallInitiateHypercall();
if( !v8 )
{
v9 = *v7;
if( *(_DWORD *)Count >= *v7 && v9 )
{
v10 = (unsigned __int16 *)(v7 + 1);
v11 = v9;
do
{
v12 = *v10++;
*(_DWORD *)Processors = v12;
Processors = (UINT64 *)((char *)Processors + 4);
--v11;
}
while( v11 );
}
*(_DWORD *)Count = v9;
}
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v13);
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
}
}Referenced by:
No references.