`BSTR` stands for "Basic String". It is a size-prefixed, fixed-length, null-terminated, UTF-16 encoded character array used heavily in Microsoft's COM and OLE technologies for marshalling strings, especially between languages.
In many (but not all) cases BSTRs can be used in place of standard wide character arrays, but in almost all cases the reverse is not true.
For a complete guide to BSTR semantics, see Eric's Complete Guide to BSTR Semantics.