DbgkpWerInvokeCallbacks

NTSTATUS __stdcall DbgkpWerInvokeCallbacks(_DBGKWER_CONTEXT *Context){
  const void *v2; 
  int v4; 
  NTSTATUS v5; 
  __int64 v6; 

  DbgPrintEx(5u, 3u, "DBGK: DbgkpWerInvokeCallbacks entered, context 0x%p\n", Context);
  v2 = (const void *)*((_QWORD *)Context + 10);
  if( !v2 )
    return 0;
  DbgPrintEx(5u, 3u, "DBGK: Invoking callback at address 0x%p\n", v2);
  v4 = (*((__int64(__fastcall **)(_DBGKWER_CONTEXT *, NTSTATUS(__stdcall *)(VOID *, _GUID *, VOID *, UINT64), _QWORD, _QWORD, _QWORD, _QWORD, _QWORD, _QWORD))Context
        + 10))(
         Context,
         DbgkWerAddSecondaryData,
         (unsigned int)Context[8],
         *((_QWORD *)Context + 5),
         *((_QWORD *)Context + 6),
         *((_QWORD *)Context + 7),
         *((_QWORD *)Context + 8),
         *((_QWORD *)Context + 9));
  v5 = v4;
  if( v4 < 0 )
  {
    LODWORD(v6) = v4;
    DbgPrintEx(5u, 0, "DBGK: callback at address 0x%p returned status 0x%X\n", *((const void **)Context + 10), v6);
  }
  return v5;
}

Referenced by:

DbgkpWerCaptureLiveFullDump
DbgkpWerCaptureLiveTriageDump