你在定义IDL时如下声明,就可以传一块内存区,而且大小是可变的,由nSize指定
方法名([in,out,size_is(*nSize)] byte lParam[],[in] int * nSize)
 在Client端
   char buf[1024];
   方法名(buf,1024) 再服务端
  可以
   char buf[1024];
   memcpy(buf,lParam,*nsize);不过上述IDL语法只适用于COM 的IDL ,OMG IDL不支持。
如有不懂可联系[email protected]

解决方案 »

  1.   

    好象不行,你试试,又为什么要用int* nSize,int nSize不可以?
    只传了数组第一个值
      

  2.   

    试试:   方法名([in]int nSize, [in, out, size_is(nSize)]byte lParam[]);
    顺序换一换。
      

  3.   

    从原理上将,‘传递一块内存区“ 是无意义的。因为marshal是透明的,对于用户而言。但可以使用变通的方式,达到你的目的。
      

  4.   

    这个问题蛮有意思。
    我一直想让VB能动态分配一个具有一定结构体的内存空间,象C++那样。
    如果诸君的方法真是可行的,那问题就应该解决了。
    不过感觉好像还是没有出来个结果。
      

  5.   

    用API将内存信息读出来转换为Stream,再传送
      

  6.   

    To:xxjjxx(Tony)
    可以的,我试过了,不管是在IDispatch,还是自定义的接口,都可以传递内存