AdtpBuildMessageString
INT64 __stdcall AdtpBuildMessageString(
UINT64 MessageId,
EVENT_DATA_DESCRIPTOR *pEtwDataDescriptor,
WCHAR *pszStringBuffer,
UINT64 *pdwCurBufferIndex,
UINT8 *pFreeWhenDone){
__int64 v6;
char *PoolWithTag;
char v8;
__int64 v9;
INT64 result;
char *v11;
if( !pszStringBuffer )
return 3221225485i64;
v6 = *(unsigned int *)pFreeWhenDone;
if( (unsigned int)(v6 + 13) >= 0x400 )
{
PoolWithTag = (char *)ExAllocatePoolWithTag(PagedPool, 0x1Aui64, 0x6B416553ui64);
if( !PoolWithTag )
return 3221225495i64;
v8 = 1;
}
else
{
PoolWithTag = (char *)pdwCurBufferIndex + 2 * v6;
*(_DWORD *)pFreeWhenDone = v6 + 13;
v8 = 0;
}
*v11 = v8;
if( StringCchPrintfW((WCHAR *)PoolWithTag, 0xDui64, (WCHAR *)L"%%%%%u") < 0 )
{
if( *v11 == 1 )
{
ExFreePoolWithTag(PoolWithTag, 0);
*v11 = 0;
}
return 3221225485i64;
}
v9 = -1i64;
do
++v9;
while( *(_WORD *)&PoolWithTag[2 * v9] );
*(_QWORD *)pszStringBuffer = PoolWithTag;
*((_DWORD *)pszStringBuffer + 2) = 2 * v9 + 2;
result = 0i64;
*((_DWORD *)pszStringBuffer + 3) = 0;
return result;
}Referenced by:
AdtpPackageParameters