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