NtUmsThreadYield
NTSTATUS __stdcall NtUmsThreadYield(PVOID SchedulerParam){
_ETHREAD *CurrentThread;
_ETHREAD *v2;
NTSTATUS result;
_DWORD *v4;
INT64 v5;
__int64 v6;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = CurrentThread;
if( !CurrentThread )
v2 = (_ETHREAD *)KeGetCurrentThread();
if( (*((_BYTE *)v2 + 3) & 0x40) == 0 )
return -1073741637;
v4 = (_DWORD *)*((_QWORD *)CurrentThread + 62);
v5 = *(_QWORD *)v4;
v6 = *(_QWORD *)(*(_QWORD *)v4 + 1272i64);
*(_QWORD *)(*(_QWORD *)v4 + 1272i64) = 1i64;
if( KiIsPrimaryPresent(v5, (INT64)SchedulerParam) )
{
v4[20] |= 1u;
return 0;
}
else
{
result = -1073740004;
*(_QWORD *)(v5 + 1272) = v6;
}
return result;
}Referenced by:
No references.