RtlUnicodeStringCchCopyStringN
NTSTATUS __stdcall RtlUnicodeStringCchCopyStringN(
PUNICODE_STRING DestinationString,
NTSTRSAFE_PCWSTR pszSrc,
size_t cchToCopy){
__int16 v3;
unsigned __int16 Length;
wchar_t *Buffer;
size_t v8;
int v9;
unsigned __int64 MaximumLength;
size_t pcchNewDestLength;
v3 = 0;
Length = DestinationString->Length;
Buffer = 0i64;
v8 = 0i64;
v9 = 0;
if( (Length & 1) != 0 )
return -1073741811;
MaximumLength = DestinationString->MaximumLength;
if( (MaximumLength & 1) != 0 || Length > (unsigned __int16)MaximumLength || (_WORD)MaximumLength == 0xFFFF )
return -1073741811;
if( !DestinationString->Buffer && (Length || (_WORD)MaximumLength) )
{
v9 = -1073741811;
}
else
{
Buffer = DestinationString->Buffer;
v8 = MaximumLength >> 1;
}
if( v9 >= 0 )
{
pcchNewDestLength = 0i64;
if( cchToCopy <= 0x7FFF )
{
v9 = RtlWideCharArrayCopyStringWorker(Buffer, v8, &pcchNewDestLength, pszSrc, cchToCopy);
v3 = pcchNewDestLength;
}
else
{
v9 = -1073741811;
}
DestinationString->Length = 2 * v3;
}
return v9;
}Referenced by:
PopPlInitWString