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