EtwpSendBufferToDebugger
VOID __stdcall EtwpSendBufferToDebugger(_WMI_BUFFER_HEADER *Buffer){
unsigned int v2;
__int128 v3;
unsigned int v4;
__int128 v5;
unsigned int v6;
__int128 v7;
__int128 v8;
int v9;
int NextEventOffsetType;
_KD_TRACE_DATA_DESCRIPTOR TraceData[2];
unsigned int v12;
__int64 v13;
int v14;
__int128 v15[3];
__int128 v16;
__int64 v17;
UINT64 EventSize;
LODWORD(EventSize) = 0;
v2 = *((_DWORD *)Buffer + 12);
if( v2 > KdTransportMaxPacketSize - 64 )
{
v3 = *(_OWORD *)Buffer;
v4 = 72;
v5 = *((_OWORD *)Buffer + 1);
v6 = KdTransportMaxPacketSize - 136;
*(_QWORD *)TraceData = v15;
v15[0] = v3;
v7 = *((_OWORD *)Buffer + 2);
v12 = 72;
v15[1] = v5;
v8 = *((_OWORD *)Buffer + 3);
v15[2] = v7;
v17 = *((_QWORD *)Buffer + 8);
v16 = v8;
do
{
v13 = (__int64)Buffer + v4;
NextEventOffsetType = EtwpGetNextEventOffsetType(Buffer, v4, &EventSize);
if( !NextEventOffsetType )
break;
while( v9 + (int)EventSize <= v6 )
{
v4 += EventSize;
NextEventOffsetType = EtwpGetNextEventOffsetType(Buffer, v4, &EventSize);
if( !NextEventOffsetType )
goto LABEL_10;
}
if( (unsigned int)EventSize > v6 )
v4 += EventSize;
LABEL_10:
if( v9 )
{
v14 = v9;
LODWORD(v16) = v9 + 72;
LODWORD(v15[0]) = v9 + 72;
KdSendTraceData(TraceData, 2ui64);
}
}
while( NextEventOffsetType );
}
else
{
v12 = v2;
*(_QWORD *)TraceData = Buffer;
KdSendTraceData(TraceData, 1ui64);
}
}Referenced by:
EtwpSendDbgId