RtlUnicodeStringPrintfEx
VOID __fastcall RtlUnicodeStringPrintfEx(
_UNICODE_STRING *DestinationString,
_UNICODE_STRING *RemainingString,
UINT64 dwFlags,
const WCHAR *pszFormat){
ULONG v5;
size_t v6;
const wchar_t *v7;
wchar_t *v8;
size_t v9;
int v10;
unsigned __int16 Length;
unsigned __int64 MaximumLength;
wchar_t *Buffer;
wchar_t *v14;
size_t v15;
size_t v16;
int v17;
int v18;
const WCHAR *v19;
size_t pcchNewDestLength;
wchar_t *v21;
wchar_t *ppszDestEnd;
__int64 pcchRemaining[2];
char Args;
v5 = dwFlags;
v6 = 0i64;
v7 = pszFormat;
v8 = 0i64;
v9 = 0i64;
v21 = 0i64;
v10 = 0;
if( DestinationString || (v5 & 0x100) == 0 )
{
Length = DestinationString->Length;
if( (DestinationString->Length & 1) != 0 )
return;
MaximumLength = DestinationString->MaximumLength;
if( (MaximumLength & 1) != 0 || Length > (unsigned __int16)MaximumLength || (_WORD)MaximumLength == 0xFFFF )
return;
Buffer = DestinationString->Buffer;
if( !Buffer && (Length || (_WORD)MaximumLength) )
{
v10 = -1073741811;
v8 = 0i64;
}
else
{
v21 = DestinationString->Buffer;
v9 = MaximumLength >> 1;
v8 = Buffer;
}
}
if( v10 < 0 )
return;
ppszDestEnd = v8;
v14 = v8;
pcchRemaining[0] = v9;
LOWORD(v15) = v9;
pcchNewDestLength = 0i64;
LOWORD(v16) = 0;
if( (v5 & 0x100) != 0 )
{
v19 = &::ppszDestEnd;
if( pszFormat )
v19 = pszFormat;
v7 = v19;
}
v17 = 0;
if( (v5 & 0xFFFFE000) != 0 )
{
v17 = -1073741811;
goto LABEL_35;
}
if( v9 )
{
pcchRemaining[0] = 0i64;
v18 = vsnwprintf(v8, v9, v7, &Args);
if( v18 < 0 || (v16 = v18, v18 > v9) )
{
v16 = v9;
pcchNewDestLength = v9;
v17 = -2147483643;
}
else
{
pcchNewDestLength = v18;
}
v8 = v21;
v15 = v9 - v16;
pcchRemaining[0] = v9 - v16;
v14 = &v21[v16];
ppszDestEnd = v14;
if( v17 >= 0 )
{
if( (v5 & 0x200) != 0 && v15 )
memset((INT64)&v21[v16], (unsigned __int8)v5);
goto LABEL_17;
}
LABEL_35:
if( (v5 & 0x1C00) != 0 && v9 )
{
RtlUnicodeStringExHandleOtherFlags(v8, v9, v6, &pcchNewDestLength, &ppszDestEnd, (size_t *)pcchRemaining, v5);
v14 = ppszDestEnd;
LOWORD(v15) = pcchRemaining[0];
LOWORD(v16) = pcchNewDestLength;
}
goto LABEL_17;
}
if( *v7 )
{
v17 = v8 != 0i64 ? -2147483643 : -1073741811;
goto LABEL_35;
}
LABEL_17:
if( DestinationString )
DestinationString->Length = 2 * v16;
if( (int)(v17 + 0x80000000) < 0 || v17 == -2147483643 )
{
if( RemainingString )
{
RemainingString->Length = 0;
RemainingString->MaximumLength = 2 * v15;
RemainingString->Buffer = v14;
}
}
}Referenced by:
PiBuildAndOpenDeviceDirectoryPath
PiCreateDriverRedirectedStateKey
PiDevCfgBuildDriverConfigurationId
PiDevCfgBuildIndirectString
PiDevCfgLogDeviceConfigured
PiGetDriverMutableStateDirectory
PiOpenDriverRedirectedStateKey