DbgkpWerCaptureLiveTriageDump
__int64 __fastcall DbgkpWerCaptureLiveTriageDump(__int64 a1){
VOID *PoolWithTag;
unsigned int v3;
int v4;
int v5;
int v6;
int v7;
CONTEXT ContextRecord;
DbgPrintEx(5u, 3u, "DBGK: Creating mini live dump. ComponentName %ws\n", a1);
*(_DWORD *)(a1 + 92) = 1048572;
memset((INT64)&ContextRecord, 0i64);
PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x40000ui64, 0x57676244ui64);
*(_QWORD *)(a1 + 144) = PoolWithTag;
if( PoolWithTag )
{
RtlCaptureContext(&ContextRecord);
v4 = KeCapturePersistentThreadState(
(__int64)&ContextRecord,
0i64,
*(_DWORD *)(a1 + 32),
*(_QWORD *)(a1 + 40),
*(_QWORD *)(a1 + 48),
*(_QWORD *)(a1 + 56),
*(_QWORD *)(a1 + 64),
*(_QWORD *)(a1 + 144));
if( v4 )
{
*(_DWORD *)(a1 + 152) = v4;
v5 = DbgkpWerInvokeCallbacks(a1);
v3 = v5;
if( v5 >= 0 )
{
v6 = DbgkpWerWriteTriageDump(a1);
v3 = v6;
if( v6 >= 0 )
{
v7 = WerLiveKernelSubmitReport(*(_QWORD *)(a1 + 104), 0i64);
v3 = v7;
if( v7 >= 0 )
*(_DWORD *)(a1 + 112) |= 1u;
else
DbgPrintEx(
5u,
0,
"DBGK: DbgkpWerCaptureLiveTriageDump: WerLiveKernelSubmitReport failed with status 0x%X\n",
(unsigned int)v7);
}
else
{
DbgPrintEx(5u, 0, "DBGK: DbgkpWerWriteTriageDump failed, status 0x%X\n", (unsigned int)v6);
}
}
else
{
DbgPrintEx(5u, 0, "DBGK: DbgkpWerInvokeCallbacks failed, status 0x%X\n", (unsigned int)v5);
}
}
else
{
DbgPrintEx(5u, 0, "DBGK: KeCapturePersistentThreadState failed\n");
return(unsigned int)-1073741823;
}
}
else
{
return(unsigned int)-1073741801;
}
return v3;
}Referenced by:
DbgkpWerProcessPolicyResult