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.