IopWriteCapsuleTriageDumpToFirmware
UINT8 __stdcall IopWriteCapsuleTriageDumpToFirmware(
UINT64 BugCheckCode,
UINT64 BugCheckParameter1,
UINT64 BugCheckParameter2,
UINT64 BugCheckParameter3,
UINT64 BugCheckParameter4,
_CONTEXT *ContextSave,
_KTHREAD *Thread,
_KTRAP_FRAME *TrapFrame){
char *v8;
UINT8 v9;
unsigned int v14;
_KTHREAD *v15;
int v16;
__int64 v17;
_KTRAP_FRAME *v18;
UINT64 v19;
int v20;
void *v21;
unsigned int v22[2];
__int64 *v23;
_CONTEXT *v24;
UINT64 BugCheckParameters[4];
v8 = (char *)CapsuleTriageDumpBlock;
v9 = 0;
v21 = Thread;
v24 = ContextSave;
v20 = 0;
if( !CapsuleTriageDumpBlock )
return 0;
VfDisableHalVerifier();
BugCheckParameters[3] = BugCheckParameter4;
BugCheckParameters[0] = BugCheckParameter1;
BugCheckParameters[1] = BugCheckParameter2;
BugCheckParameters[2] = BugCheckParameter3;
IopUpdateMinidumpContext(
v14,
BugCheckParameter1,
BugCheckParameter2,
BugCheckParameter3,
BugCheckParameter4,
ContextSave,
(_KTHREAD *)v15,
v18);
MmSnapTriageDumpInformation(ContextSave, BugCheckParameters);
IoFillDumpHeader((_DWORD)v8 + 4124, (PWSTR)4);
v22[0] = IopNumTriageDumpDataBlocks;
v22[1] = 256;
v23 = IopTriageDumpDataBlocks;
LODWORD(v19) = 1;
v16 = IoFillTriageDumpBuffer(
0x3E000u,
(unsigned __int64 *)(v8 + 12316),
1,
3583,
0i64,
(__int64)v24,
v21,
(int)CmNtCSDVersion,
65,
v19,
(__int64)v22,
v22,
&v20);
*(_OWORD *)(v8 + 4220) = 0i64;
*(_OWORD *)(v8 + 4236) = 0i64;
*((_DWORD *)v8 + 2070) = 0;
v17 = *((unsigned int *)v8 + 3080);
*((_DWORD *)v8 + 2075) |= 0x88u;
*(_QWORD *)(v8 + 8124) = v17;
*((_DWORD *)v8 + 2069) = 3583;
if( v16 >= 0 )
return(int)IopWriteTriageDumpToFirmware((_NT_PRODUCT_TYPE *)CapsuleTriageDumpBlock) >= 0;
return v9;
}Referenced by:
IoWriteCrashDump