IopLiveDumpTraceDumpFileWriteEnd
UINT8 __fastcall IopLiveDumpTraceDumpFileWriteEnd(__int64 a1, __int64 a2, int a3){
UINT8 result;
int v4;
__int64 v5;
bool v6;
_QWORD *v7;
EVENT_DESCRIPTOR *v8;
__int64 v9;
__int64 v10;
UINT64 UserDataCount;
__int64 v12;
__int64 v13;
__int64 v14;
__int64 v15;
EVENT_DATA_DESCRIPTOR UserData;
__int64 *v17;
__int64 v18;
__int64 *v19;
__int64 v20;
__int64 *v21;
__int64 v22;
__int64 *v23;
__int64 v24;
int v25;
v25 = a3;
result = IopLiveDumpIsTracingEnabled();
if( result )
{
v6 = v4 == 0;
v7 = *(_QWORD **)(v5 + 560);
v8 = (EVENT_DESCRIPTOR *)LIVEDUMP_EVENT_WRITE_DUMPDATA_TO_FILE_END;
if( !v6 )
v8 = (EVENT_DESCRIPTOR *)&LIVEDUMP_EVENT_WRITE_DEFERRED_DUMPDATA_TO_FILE_END;
if( v25 < 0 )
{
v12 = 0i64;
v10 = 0i64;
v13 = 0i64;
v9 = 0i64;
}
else
{
v12 = v7[500];
v13 = v7[1028];
v9 = v7[1029] << 12;
v10 = v12 - v9 - v13;
}
v14 = v9;
UserData.Ptr = (unsigned __int64)&v25;
v15 = v10;
v17 = &v12;
v19 = &v13;
v21 = &v14;
v23 = &v15;
LODWORD(UserDataCount) = 5;
*(_QWORD *)&UserData.Size = 4i64;
v18 = 8i64;
v20 = 8i64;
v22 = 8i64;
v24 = 8i64;
return EtwWriteEx(IopLiveDumpEtwRegHandle, v8, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
}
return result;
}Referenced by:
IoCaptureLiveDump
IoWriteDeferredLiveDumpData