PsRootSiloInformation
__int64 __fastcall PsRootSiloInformation(_DWORD *a1, unsigned int a2, unsigned int *a3){
unsigned __int64 v3;
unsigned int v5;
_EJOB *CurrentSilo;
__int64 v8;
int v9;
_EJOB *i;
_EJOB *NextSilo;
_EJOB *v12;
v3 = a2;
v5 = 4;
if( a2 < 4 )
return 3221225507i64;
CurrentSilo = PsGetCurrentSilo();
v8 = 0i64;
v9 = 0;
for( i = 0i64; ; i = v12 )
{
NextSilo = PspGetNextSilo(i, 0);
v12 = NextSilo;
if( !NextSilo )
break;
if( NextSilo != CurrentSilo && PspIsSiloInSilo(NextSilo, CurrentSilo) )
{
if( (unsigned __int64)v5 + 4 > v3 )
{
v9 = -1073741789;
ObfDereferenceObjectWithTag(v12, 0x6E457350ui64);
break;
}
a1[v8 + 1] = *((_DWORD *)v12 + 309);
v5 += 4;
v8 = (unsigned int)(v8 + 1);
}
}
if( v9 >= 0 )
{
*a1 = v8;
*a3 = v5;
}
return(unsigned int)v9;
}Referenced by:
ExpQuerySystemInformation