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.