接口如下:
[propget, id(3), helpstring("property Result")] HRESULT Result([out, retval] BSTR *pVal);我要把结果写入到pVal里面,可是如何知道pVal占多大的存储空间呢?比如说:
CComBSTR Result("1234");
Result.CopyTo(pVal);
我如何才能保证pVal一定能够容得下"1234"呢?

解决方案 »

  1.   

    BSTR 是一个指向 UNICODE 字符串的指针,且 BSTR 向前的4个字节中,使用DWORD保存着这个字符串的字节长度因此系统就能够正确处理并传送这个字符串到客户端了
      

  2.   

    你接口中的pVal是指针的指针,想传多少就传多少,只要内存够
      

  3.   

    pVal应该是在外围分配了内存再传进去的吧
      

  4.   

    哦,没看清楚,对于下面的程序中:
    CComBSTR Result("1234");
    Result.CopyTo(pVal);其实是我在申请内存,然后传出接口,我开始以为是调用者申请内存,然后我来填写内存。
    CopyTo这个函数的名字有迷惑性,我以为它只做内存拷贝,其实它还负责申请内存。