ScAnsiToUnicodeString
__int64 __fastcall ScAnsiToUnicodeString(PCSZ SourceString, struct _UNICODE_STRING *a2){
INT8 v4;
unsigned int v5;
NTSTATUS v6;
wchar_t *v7;
wchar_t *Buffer;
UNICODE_STRING v10;
struct _STRING DestinationString;
DestinationString = 0i64;
*(_QWORD *)&v10.Length = 0i64;
ScTrimString((char *)SourceString);
RtlInitAnsiString(&DestinationString, SourceString, v4);
v5 = RtlxAnsiStringToUnicodeSize(&DestinationString);
v10.MaximumLength = v5;
v10.Buffer = (wchar_t *)SC_ENV::Allocate(v5);
if( v10.Buffer )
{
v6 = RtlAnsiStringToUnicodeString(&v10, &DestinationString, 0);
if( v6 < 0 )
{
Buffer = v10.Buffer;
}
else
{
v7 = a2->Buffer;
if( v7 )
SC_ENV::Free(v7);
Buffer = 0i64;
*a2 = v10;
}
if( Buffer )
SC_ENV::Free(Buffer);
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)v6;
}Referenced by:
SC_DEVICE::ExtractDeviceStrings