PerfDiagpStartPerfDiagLogger
__int64 __fastcall PerfDiagpStartPerfDiagLogger(NTSTRSAFE_PCWSTR pszSrc){
__int64 v1;
UINT64 v3;
WCHAR *PoolWithTag;
WCHAR *v5;
unsigned __int64 v6;
unsigned __int64 v7;
WCHAR *v8;
char *v9;
WCHAR v10;
WCHAR *v11;
unsigned int started;
v1 = -1i64;
do
++v1;
while( pszSrc[v1] );
v3 = (unsigned int)(2 * v1 + 104);
PoolWithTag = (WCHAR *)ExAllocatePoolWithTag(PagedPool, v3, 0x64465250ui64);
v5 = PoolWithTag;
if( PoolWithTag )
{
v6 = (unsigned __int64)(unsigned int)v3 >> 1;
if( v6 )
{
v7 = 2147483646 - v6;
v8 = PoolWithTag;
v9 = (char *)((char *)L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\" - (char *)PoolWithTag);
do
{
if( !(v7 + v6) )
break;
v10 = *(WCHAR *)((char *)v8 + (_QWORD)v9);
if( !v10 )
break;
*v8++ = v10;
--v6;
}
while( v6 );
v11 = v8 - 1;
if( v6 )
v11 = v8;
*v11 = 0;
}
RtlStringCbCatW(v5, v3, (PWCHAR)pszSrc);
if( (unsigned int)PerfDiagpIsTracingAllowed() )
{
*(_OWORD *)&LoggerName = *(_OWORD *)L"PerfDiag Logger";
xmmword_140C1A05C = *(_OWORD *)L" Logger";
started = EtwStartAutoLogger(&LoggerName, v5, 0i64);
}
else
{
started = -1073741823;
}
ExFreePoolWithTag(v5, 0);
}
else
{
return(unsigned int)-1073741801;
}
return started;
}Referenced by:
PerfDiagpProxyWorker