PspJobNotificationWorker

VOID __stdcall PspJobNotificationWorker(PVOID Context){
  _EJOB *v1; 
  _EJOB *NotificationLink; 
  signed __int32 v3; 
  _ETHREAD *CurrentThread; 
  do
  {
    v1 = (_EJOB *)_InterlockedExchange64(&PspJobNotificationList, -1i64);
    do
    {
      NotificationLink = v1->NotificationLink;
      _m_prefetchw(&v1->1320);
      v3 = _InterlockedAnd((volatile signed __int32 *)&v1->1320, 0xFFFDDFFF);
      if( (v3 & 0x2000) != 0 )
        ZwUpdateWnfStateData();
      if( (v3 & 0x20000) != 0 )
      {
        CurrentThread = (_ETHREAD *)KeGetCurrentThread();
        PspLockJobExclusive((__int64)v1, (__int64)CurrentThread);
        if( v1->CompletionPort && (v1->CompletionFilter & 0x1000) != 0 )
          PspSendReliableJobNotification(v1, 0xCui64);
        PspUnlockJob((__int64)v1, (__int64)CurrentThread);
      }
      ObfDereferenceObjectWithTag(v1, 0x6F4E7350ui64);
      v1 = NotificationLink;
    }
    while( NotificationLink && NotificationLink != (_EJOB *)-1i64 );
  }
  while( _InterlockedCompareExchange64(&PspJobNotificationList, 0i64, -1i64) != -1 );
}

Referenced by:

No references.