BSTR与wchar_t *的区别?
wchar_t* 只是一个简单的指针 跟int* ,char* 一样
BSTR 所指向的内存地址相当于一个wchar_t*,但BSTR往后退4Bytes(在内存中)的地址中所存的一个DWORD值表示它的长度。
例如:
BSTR bstrT = ::SysAllocString(L"....");//(内存地址)0x00001000;
LPDWORD lpdwLen = (LPBYTE)bstrT - 4; //(相当于0x0000FFC)
ASSERT(*lpdwLen == ::SysStringLen(bstrT));
注意:SysStringLen的参数类型是BSTR而非wchar_t*
C++里,*lpdwLen/2==::SysStringLen(bstrT);