#typedef struct aaa{
   long l,
   BSTR  str,
   BOOL  on
}IBbbPtr pBbb(__uuidof(Bbb));pBbb->function(传递上面定义的结构体);pBbb.Release;
要在接口函数中传递这个结构体,应该怎样做?

解决方案 »

  1.   

    SAFEARRAY *pArray;
        aaa data;
        ....
        pArray = SafeArrayCreateVector(VT_I1 , 0 , sizeof(aaa));
        
        char *pMem;
        SafeArrayAccessData(pArray , (void **)&pMem);
        memcpy(pMem , &data , szieof(aaa));
        SafeArrayUnaccessData(pArray);
        
    然后调用接口函数.取出数据。  
    SAFEARRAY *pArray;
        aaa data;
        ....
        char *pMem;
        SafeArrayAccessData(pArray , (void **)&pMem);
        memcpy(&data , pMem , szieof(aaa));
        SafeArrayUnaccessData(pArray);
      

  2.   

    不用像qiangorqiang(qiangqiang)兄说的那么麻烦。在idl定义自己的结构就好了!
      

  3.   

    如果在传递的结构体里有SOCKET s 这样的结构,在IDL不能定义这样的结构体呀??????
      

  4.   

    那就要麻烦你老兄包装一下了!我觉得你还没明白ms推出COM和DCOM得目的。目的在于程序集的异步网络调用,而不是同步的数据传输.如果你要求的代码实施性强就要使用activex开发
      

  5.   


       qiangorqiang(qiangqiang)仁兄说的虽然麻烦了一点,可是最通用的解决方案.