When you call a COM method, it accepts BSTR in the following way:
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: