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.