ViWdIrpTimerDpcRoutine

VOID __stdcall ViWdIrpTimerDpcRoutine(KDPC *Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2){
  unsigned int v4; 
  unsigned int v5; 
  CHAR v6; 
  INT64 v7; 
  UINT64 v8; 
  INT64 i; 
  INT64 v10; 
  __int64 v11; 
  _QWORD *v12; 
  _KDPC *Dpca; 
  INT64 v14; 
  if( ViWdIrpListLength )
  {
    v4 = ViWdTickCount++;
    v5 = ViWdTickCount;
    KxAcquireSpinLock(&VfWdIrpListLock);
    if( v5 >= v4 )
    {
      if( ViWdIrpListLength )
      {
        v10 = VfWdIrpListHead;
        if( *(_DWORD *)(VfWdIrpListHead + 24) < (unsigned int)ViWdTickCount )
        {
          ViWdIrpTimedOut(VfWdIrpListHead, v6, v7, v8, (INT64)Dpca, v14);
          v11 = *(_QWORD *)v10;
          if( *(_QWORD *)(*(_QWORD *)v10 + 8i64) != v10 || (v12 = *(_QWORD **)(v10 + 8), *v12 != v10) )
            __fastfail(3u);
          *v12 = v11;
          *(_QWORD *)(v11 + 8) = v12;
          *(_BYTE *)(v10 + 28) = 0;
          --ViWdIrpListLength;
        }
      }
    }
    else
    {
      for( i = VfWdIrpListHead; (INT64 *)i != &VfWdIrpListHead; i = *(_QWORD *)i )
        *(_BYTE *)(i + 28) = 0;
      qword_140D49208 = (__int64)&VfWdIrpListHead;
      VfWdIrpListHead = (INT64)&VfWdIrpListHead;
      ViWdIrpListLength = 0;
    }
    KxReleaseSpinLock(&VfWdIrpListLock);
  }
  if( !ViWdCancelling )
    KiSetTimerEx((_KTIMER *)ViWdIrpTimer, (_LARGE_INTEGER)-10000000i64, 0i64, 0, &ViWdIrpTimerDpc);
}

Referenced by:

No references.