Reallocates the BSTR pointed to by pbstr and copies the contents of the CStringT object into it, including the NULL character.
Depending on the contents of the CStringT object, the value of the BSTR referenced by pbstr can change. The function throws a CMemoryException if insufficient memory exists.
This function is normally used to change the value of strings passed by reference for Automation.
BSTR bstr = ::SysAllocString(L"Golf is fun!"); // create a CAtlString and change the OLE // string to the contents of the BSTR // typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString; CAtlString str(_T("Soccer is best!")); BSTR bstr2 = str.SetSysString(&bstr); // Now, both bstr and bstr2 reference a single instance of // the "Soccer" string. The "Golf" string has been freed. ASSERT(bstr2 == bstr);