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