PopEnableIrpWatchdog
VOID __stdcall PopEnableIrpWatchdog(_IRP *Irp){
__int64 v1;
unsigned int v2;
v1 = *((_QWORD *)&Irp->Tail.IrpExtension + 9 * Irp->StackCount);
v2 = PopComputeWatchdogTimeout((_POP_IRP_DATA *)v1);
if( v2 )
{
*(_BYTE *)(v1 + 196) = 1;
*(_DWORD *)(v1 + 120) = 275;
*(_QWORD *)(v1 + 152) = v1;
*(_QWORD *)(v1 + 144) = PopIrpWatchdog;
*(_QWORD *)(v1 + 176) = 0i64;
*(_QWORD *)(v1 + 136) = 0i64;
*(_QWORD *)(v1 + 56) = 0i64;
*(_BYTE *)(v1 + 56) = 8;
*(_QWORD *)(v1 + 72) = v1 + 64;
*(_QWORD *)(v1 + 64) = v1 + 64;
*(_QWORD *)(v1 + 80) = 0i64;
*(_DWORD *)(v1 + 116) = 0;
*(_WORD *)(v1 + 112) = 0;
KiSetTimerEx((_KTIMER *)(v1 + 56), (_LARGE_INTEGER)(-10000000i64 * v2), 0i64, 0, (_KDPC *)(v1 + 120));
*(_QWORD *)(v1 + 48) = KiQueryUnbiasedInterruptTime(1u);
}
}Referenced by:
PopDequeueQuerySetIrp
PopQueueQuerySetIrp