DbgkpWerDeferredWriteRoutine
VOID __stdcall DbgkpWerDeferredWriteRoutine(VOID *Parameter){
_ETHREAD *CurrentThread;
_KTIMER *v3;
NTSTATUS v4;
int v5;
DbgPrintEx(5u, 3u, "DBGK: DbgkpWerDeferredWriteRoutine entered, context 0x%p\n", Parameter);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v3 = *(_KTIMER **)(*((_QWORD *)Parameter + 16) + 16i64);
if( v3 )
KiSetTimerEx(v3, (_LARGE_INTEGER)(-10000000i64 * DbgkpWerDeferredWriteTimeoutSeconds), 0i64, 0, 0i64);
v4 = IoWriteDeferredLiveDumpData(*((VOID **)Parameter + 17));
KeCancelTimer((INT64)v3);
*((_QWORD *)Parameter + 17) = 0i64;
if( v4 >= 0 )
{
v5 = WerLiveKernelSubmitReport(*((_QWORD *)Parameter + 13), 0i64);
if( v5 >= 0 )
*((_DWORD *)Parameter + 28) |= 1u;
else
DbgPrintEx(
5u,
0,
"DBGK: DbgkpWerDeferredWriteRoutine: WerLiveKernelSubmitReport failed with status 0x%X\n",
(unsigned int)v5);
}
else
{
DbgPrintEx(5u, 0, "DBGK: DbgkpWerDeferredWriteRoutine: dump write failed with status 0x%X\n", (unsigned int)v4);
}
DbgkpWerCleanupContext((_DBGKWER_CONTEXT *)Parameter);
_InterlockedExchange(&DbgkpBusy, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}Referenced by:
No references.