SysStringLen() should only be used on BSTRs allocated by SysAllocString() family functions. Using it as you do will lead to undefined behavior - program can crash or produce unexpected results. Better yet use wrapper classes - ATL::CComBSTR or _bstr_t.