ViWdIrpBeforeCompletionRoutine
VOID __stdcall ViWdIrpBeforeCompletionRoutine(_VF_WATCHDOG_IRP **WdIrp){
_VF_WATCHDOG_IRP *v1;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
v1 = *WdIrp;
if( *((_BYTE *)(*WdIrp)->Irp + 67) >= (*WdIrp)->TrackedStackLocation )
{
KxAcquireSpinLock(&VfWdIrpListLock);
if( v1->Inserted )
{
Flink = v1->ListEntry.Flink;
if( (_VF_WATCHDOG_IRP *)v1->ListEntry.Flink->Blink != v1
|| (Blink = v1->ListEntry.Blink, (_VF_WATCHDOG_IRP *)Blink->Flink != v1) )
{
__fastfail(3u);
}
Blink->Flink = Flink;
Flink->Blink = Blink;
v1->Inserted = 0;
--ViWdIrpListLength;
}
KxReleaseSpinLock(&VfWdIrpListLock);
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)ViWdIrpLookasideList, v1);
*WdIrp = 0i64;
}
}Referenced by:
IovpCompleteRequest2