ViWdIrpTimerDpcRoutine

VOID __stdcall ViWdIrpTimerDpcRoutine(_KDPC *Dpc, VOID *DeferredContext, VOID *SystemArgument1, VOID *SystemArgument2){
  unsigned int v4; 
  unsigned int v5; 
  _VF_WATCHDOG_IRP *i; 
  _VF_WATCHDOG_IRP *v7; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  if( ViWdIrpListLength )
  {
    v4 = ViWdTickCount++;
    v5 = ViWdTickCount;
    KxAcquireSpinLock(&VfWdIrpListLock);
    if( v5 >= v4 )
    {
      if( ViWdIrpListLength )
      {
        v7 = VfWdIrpListHead;
        if( VfWdIrpListHead->DueTickCount < ViWdTickCount )
        {
          ViWdIrpTimedOut(VfWdIrpListHead);
          Flink = v7->ListEntry.Flink;
          if( (_VF_WATCHDOG_IRP *)v7->ListEntry.Flink->Blink != v7
            || (Blink = v7->ListEntry.Blink, (_VF_WATCHDOG_IRP *)Blink->Flink != v7) )
          {
            __fastfail(3u);
          }
          Blink->Flink = Flink;
          Flink->Blink = Blink;
          v7->Inserted = 0;
          --ViWdIrpListLength;
        }
      }
    }
    else
    {
      for( i = VfWdIrpListHead; i != (_VF_WATCHDOG_IRP *)&VfWdIrpListHead; i = (_VF_WATCHDOG_IRP *)i->ListEntry.Flink )
        i->Inserted = 0;
      qword_140D49208 = (__int64)&VfWdIrpListHead;
      VfWdIrpListHead = (_VF_WATCHDOG_IRP *)&VfWdIrpListHead;
      ViWdIrpListLength = 0;
    }
    KxReleaseSpinLock(&VfWdIrpListLock);
  }
  if( !ViWdCancelling )
    KiSetTimerEx(&ViWdIrpTimer, (_LARGE_INTEGER)-10000000i64, 0i64, 0, &ViWdIrpTimerDpc);
}

Referenced by:

No references.