KiTestForAlertPending

NTSTATUS __stdcall KiTestForAlertPending(_ETHREAD *WaitThread, UINT8 Alertable, INT8 WaitMode, UINT64 Consume){
  NTSTATUS v4; 

  v4 = 0;
  if( !Alertable )
  {
    if( (WaitThread->Tcb.ApcState.UserApcPendingAll & 2) != 0 && WaitMode )
      return 192;
    return v4;
  }
  if( WaitThread->Tcb.Alerted[WaitMode] )
  {
    if( (_DWORD)Consume )
      WaitThread->Tcb.Alerted[WaitMode] = 0;
    return 257;
  }
  if( WaitMode && (unsigned __int8 *)WaitThread->Tcb.ApcState.ApcListHead[1].Flink != &WaitThread->Tcb.ApcStateFill[16] )
  {
    if( (_DWORD)Consume )
      WaitThread->Tcb.ApcState.UserApcPendingAll |= 2u;
    return 192;
  }
  if( WaitThread->Tcb.Alerted[0] )
  {
    if( (_DWORD)Consume )
      WaitThread->Tcb.Alerted[0] = 0;
    return 257;
  }
  return v4;
}

Referenced by:

KeRemoveQueueEx
KiResumeThread