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