KeQueryAffinityThread
__int64 __fastcall KeQueryAffinityThread(__int64 a1, __int64 a2){
unsigned __int8 CurrentIrql;
__int64 result;
UINT64 SpinCount;
*(_DWORD *)(a2 + 10) = 0;
*(_WORD *)(a2 + 14) = 0;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 64), 0i64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *(_QWORD *)(a1 + 64) );
}
*(_WORD *)(a2 + 8) = *(_WORD *)(a1 + 560);
*(_QWORD *)a2 = *(_QWORD *)(a1 + 552);
KiReleaseThreadLockSafe(a1);
result = CurrentIrql;
__writecr8(CurrentIrql);
return result;
}Referenced by:
MiCombineAllPhysicalMemory
NtQueryInformationThread