实际上bstr很像delphi里面的string,平时只是指向pchar或pwchar,但是在pchar和pwchar的前面却有长度信息,以下是一段来自网络的解释:
BSTR并不是WCHAR*,BSTR存储的值是一个指向WCHAR数组的指针,但是在这个指针前面还有4个字节是指明这个字符串的长度。
所以,你可以将BSTR当作WCHAR*用,但是不能将WCHAR*当作BSTR用!
要使用(_bstr_t)进行类型转换,必须引用以下库:
#include <comutil.h> #pragma comment(lib,"comsuppw.lib") 或 comsuppwd.lib(d一般代表debug版本)
HRESULT hres = (*pSvc)->ExecQuery((_bstr_t)_T("WQL"), szQuery, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, pEnumerator);
以下是MSDN链接:
https://msdn.microsoft.com/zh-cn/library/zthfhkd6.aspx