ViShutdownWatchdogExecuteDpc
VOID __stdcall ViShutdownWatchdogExecuteDpc(
KDPC *Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2){
unsigned int v4;
UINT64 v5;
v4 = ++ViShutdownTimeoutCount;
if( VfZeroAllPagesRunning != 1 || v4 >= 4 )
{
if( !EtwpStopTraceCount || EtwpStopTraceCount == ViEtwLastStopTraceCount )
{
if( v4 <= 1 )
{
if( (_BYTE)KdDebuggerEnabled && !(_BYTE)KdDebuggerNotPresent )
{
VfErrorStoreTriageInformation(0xC4ui64, 0x115ui64, VfShutdownThread, 0i64, 0i64);
VfUtilDbgPrint((INT8 *)"\n"
"Driver Verifier detected that this system didn't finish shutting down\n"
"in more than 20 minutes. To display information about the thread that is\n"
"responsible for shutting down, use these debugger commands:\n"
"\n"
"dp nt!VfShutdownThread l1;!thread @$p\n"
"\n");
__debugbreak();
}
if( (MmVerifierData & 0x800) != 0 )
VerifierBugCheckIfAppropriate(0xC4ui64, 0x115ui64, VfShutdownThread, 0i64, 0i64, v5);
}
else
{
_InterlockedAnd((volatile signed __int32 *)&MmVerifierData, 0xFFFFFFFD);
}
}
else
{
ViEtwLastStopTraceCount = EtwpStopTraceCount;
}
}
ViShutdownScheduleWatchdog();
}Referenced by:
No references.