>I haven't gotten into it in detail, but I have been told that the C++ functions that operate on BSTR data types assume NUL terminated strings. Have you found alternatives to this?
BSTR strings contain a counter value, plus the string buffer, so you can
indeed store binary data in these values. Keep in mind though that BSTR
is a very inefficient format for this because BSTRS are double byte and
with binary data that second byte is wasted.
The problem is that most 'framework' functions and objects don't treat
BSTRS as binary strings by default. So the various ATL COM classes
don't support binary strings in BSTR values. Through the BSTR API
calls you can get at the binary data fine though.