KdSendTraceData
VOID __fastcall KdSendTraceData(INT64 a1, UINT64 a2){
__int64 v2;
unsigned int v4;
_DWORD *v5;
__int64 v6;
UINT8 v7;
CHAR(__fastcall *v8)(INT64, UINT64);
UINT8 **v9;
__int64 v10;
__int128 v11;
__int128 v12;
int result;
__int16 result_4;
__int16 result_6;
unsigned int v16;
v2 = (unsigned int)a2;
v11 = 0i64;
v12 = 0i64;
memset((INT64)&result, 0i64);
v4 = 0;
if( (_DWORD)v2 )
{
v5 = (_DWORD *)(a1 + 8);
v6 = (unsigned int)v2;
do
{
v4 += *v5;
v5 += 4;
--v6;
}
while( v6 );
}
if( v4 <= KdTransportMaxPacketSize - 64 )
{
v7 = KdEnterDebugger(0i64, 0i64);
v8 = KdpMessageBuffer;
if( (_DWORD)v2 )
{
v9 = (UINT8 **)(a1 + 8);
do
{
memmove((UINT8 *)v8, *(v9 - 1), *(unsigned int *)v9);
v10 = *(unsigned int *)v9;
v9 += 2;
v8 = (CHAR(__fastcall *)(INT64, UINT64))((char *)v8 + v10);
--v2;
}
while( v2 );
}
result_4 = KeProcessorLevel;
result = 13104;
result_6 = *((_DWORD *)KeGetPcr() + 105);
*((_QWORD *)&v12 + 1) = &result;
v16 = v4;
LOWORD(v12) = 64;
LOWORD(v11) = v4;
*((_QWORD *)&v11 + 1) = KdpMessageBuffer;
KdSendPacket(9i64, &v12, &v11, &KdpContext);
KdExitDebugger(v7);
}
}Referenced by:
EtwpSendBufferToDebugger
EtwpSendTraceEvent