RtlUnicodeToMultiByteSize
NTSTATUS __stdcall RtlUnicodeToMultiByteSize(
UINT64 *BytesInMultiByteString,
WCHAR *UnicodeString,
UINT64 BytesInUnicodeString){
unsigned int v4;
unsigned int v6;
unsigned int v7;
__int64 v9;
UINT64 UnicodeStringByteCount;
v4 = BytesInUnicodeString;
v6 = 0;
if( RtlpIsUtf8Process(0) )
{
if( v4 )
{
LODWORD(UnicodeStringByteCount) = v4;
RtlUnicodeToUTF8N(0i64, 0i64, (PULONG)BytesInMultiByteString, UnicodeString, UnicodeStringByteCount);
}
else
{
*(_DWORD *)BytesInMultiByteString = 0;
}
}
else
{
v7 = v4 >> 1;
if( (_BYTE)NlsMbCodePageTag )
{
for( ; v7; --v7 )
{
v9 = *UnicodeString++;
v6 += (HIBYTE(*(_WORD *)(NlsUnicodeToMbAnsiData + 2 * v9)) != 0) + 1;
}
}
else
{
v6 = v7;
}
*(_DWORD *)BytesInMultiByteString = v6;
}
return 0;
}Referenced by:
RtlUnicodeStringToAnsiString
RtlxUnicodeStringToAnsiSize
RtlxUnicodeStringToOemSize
wcstombs