HalGetProcessorIdByNtNumber
INT64 __stdcall HalGetProcessorIdByNtNumber(UINT64 Number, UINT64 *Id){
unsigned int v3;
INT64 result;
int v5;
char *i;
_PROCESSOR_NUMBER ProcNumber;
ProcNumber = 0;
v3 = (unsigned int)qword_140C50640;
if( (unsigned int)Number >= (unsigned int)qword_140C50640 )
return 3221225485i64;
LODWORD(result) = KeGetProcessorNumberFromIndex(Number, &ProcNumber);
if( (int)result >= 0 )
{
v5 = 0;
if( v3 )
{
for( i = (char *)HalpInterruptProcessorState + 13;
!*(i - 1) || !*i || *(_WORD *)(i + 3) != ProcNumber.Group || i[5] != ProcNumber.Number;
i += 64 )
{
if( ++v5 >= v3 )
return 3221226021i64;
}
*(_DWORD *)Id = *(_DWORD *)(i - 13);
return 0i64;
}
else
{
return 3221226021i64;
}
}
return result;
}Referenced by:
HalGetMessageRoutingInfo
HalpDpStartProcessor
HalpInterruptGenerateMessage
HalpInterruptReinitialize
KeRegisterProcessorChangeCallback
PnprIsProcessorDevice
PnprQuiesceProcessorDpc