KeQueryCpuSetsProcess
UINT64 __stdcall KeQueryCpuSetsProcess(_EPROCESS *Process, UINT64 *CpuSets, UINT64 CpuSetCount, UINT64 AllowedSets){
unsigned int v6;
UINT64 *ProcessCpuSetMaskPointer;
unsigned __int8 CurrentIrql;
unsigned int v9;
signed __int64 v10;
__int64 v11;
UINT64 v13;
LODWORD(v13) = 0;
v6 = 20;
ProcessCpuSetMaskPointer = KiGetProcessCpuSetMaskPointer(&Process->Pcb, (unsigned int)AllowedSets, &v13);
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
ExAcquireSpinLockSharedAtDpcLevel((PEX_SPIN_LOCK)&Process->Pcb.ProcessLock);
v9 = v13;
if( (unsigned int)v13 > 0x14 || (v6 = v13) != 0 )
{
v10 = (char *)ProcessCpuSetMaskPointer - (char *)CpuSets;
v11 = v6;
do
{
*CpuSets = *(UINT64 *)((char *)CpuSets + v10);
++CpuSets;
--v11;
}
while( v11 );
}
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&Process->Pcb.ProcessLock);
__writecr8(CurrentIrql);
return v9;
}Referenced by:
NtQueryInformationProcess