devxlogo

Never Use L”” to Create a BSTR

Never Use L”” to Create a BSTR

When you call a COM method, it accepts BSTR in the following way:

 Iface->f(L"")

L”” does not create a BSTR. This just creates a wide character string and if the string has to be marshalled to another apartment, the method will fail. Such usage will result in hard to find bugs wherein a method will succeed if it is called from same apartment and will fail otherwise.
Instead, use CComBSTR(L””), as in:

 Iface->f(CComBSTR(L""))

devx-admin

Share the Post: