我把结构体转换成char *
然后传给DCOM,在DCOM内再把BSTR转换成结构体,
老出现错误,哪位大虾给一点提示!!!!!!!!!!!!!!!!程序如下:
struct A
{
int iA;
char cA[10];
}
A A;
A.iA=10;
strcpy(A.cA,"help");
char *pBuf;
pBuf=new char[100];
memcpy(pBuf,(char*)&A,sizeof(A));
PI->Help(_bstr_t(pBuf));
在DCOM中这样处理如下:
STDMETHODIMP COM中函数名::NEEDHELP(BSTR str)
{
A *B;
B=(struct A*)(char*)str
}这样B没有转换成功!!!
哪位大虾指点指点.不胜感激>>>>>>>
然后传给DCOM,在DCOM内再把BSTR转换成结构体,
老出现错误,哪位大虾给一点提示!!!!!!!!!!!!!!!!程序如下:
struct A
{
int iA;
char cA[10];
}
A A;
A.iA=10;
strcpy(A.cA,"help");
char *pBuf;
pBuf=new char[100];
memcpy(pBuf,(char*)&A,sizeof(A));
PI->Help(_bstr_t(pBuf));
在DCOM中这样处理如下:
STDMETHODIMP COM中函数名::NEEDHELP(BSTR str)
{
A *B;
B=(struct A*)(char*)str
}这样B没有转换成功!!!
哪位大虾指点指点.不胜感激>>>>>>>
,哪位能想你好方法给整个pBuf传过去
把结构体以字节流写入SAFEARRAY,再将SAFEARRAY的字节读到结构体中.
字符型在COM传输中,为了节约带宽,是自动将之以零截断的.
SAFEARRAYBOUND bound; //SAFEARRAY的绑定信息bound.lLbound = 0 ; //设数组下标为0
bound.cElements = sizeof(MYSTRUCT); //设数组的字节数
//
SAFEARRAY * psa = ::SafeArrayCreate( VT_UI1, 1, &bound ); //建立一个数组实例MYSTRUCT mydata;
BYTE* pb = (BYTE*)&mydata;
for( int i = 0; i < sizeof(MYSTRUCT);i++ )
{
SafeArrayPutElement( psa, i, pb+i );// 将字节压入数组.
}
///////////////////////////////////////////////////////////////////////////
读出:
UINT cb = SafeArrayGetElemsize( psa ); //取数组字节数
MYSTRUCT mydata;
BYTE* pb = (BYTE*)&mydata;for( int i =0; i < cb; i++ )
{
SafeArrayGetElement(psa, i,pb+i); //读出
}
//////////////////////////////////////////////////////////////