求助:variant数据传输,值不能正确接受

ypdxcn 2009-07-15 10:57:44
发送端代码:

variant_t v;
int datatype = 4;\\DATATYPE
int len = 100;

v.vt = VT_UI1 | VT_ARRAY;
v.parray = SafeArrayCreateVector(VT_UI1,0,len + sizeof(int)*2);

LPBYTE pTemp = NULL;
SafeArrayAccessData(v.parray,(void**)&pTemp);

*(int*)(pTemp) =datatype; pTemp+=sizeof(int);
*(int*)(pTemp) =len; pTemp+=sizeof(int);

*(short*)(pTemp)=level;
SafeArrayUnaccessData(v.parray);

//发送数据
m_pDevice->Fire_Data(v,&lRet);


----------------------------------------------------------------------------------------
接收端如下:

#pragma pack(1)
typedef struct _tagHzxDataPkgHeader
{
int iType; //
int iSize; //
}HZX_DATA_PKG_HEADER, *PHZX_DATA_PKG_HEADER;
#pragma pack()

bool CProtocal::GetHzxDataPkg(BYTE * pbtBuff, UINT uBuffLen, UINT * puPkgMove, UINT * puPkgLen)
{
if (pbtBuff == NULL || uBuffLen == 0 || puPkgMove == NULL || puPkgLen == NULL)
{
return false;
}

HZX_DATA_PKG_HEADER * pHzxPkgHeader = (HZX_DATA_PKG_HEADER *)(pbtBuff + *puPkgMove);
if (pHzxPkgHeader->iSize > 0 &&
pHzxPkgHeader->iSize + sizeof(HZX_DATA_PKG_HEADER) <= uBuffLen)
{
*puPkgLen = pHzxPkgHeader->iSize + sizeof(HZX_DATA_PKG_HEADER);
return true;
}
else
{
return false;
}

return false;
}


pHzxPkgHeader->iType 的值是4,pHzxPkgHeader->iSize 的值不是100,而是很大,为什么呢?


谢谢啊,分不够再加啊!
...全文
41 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg606 2009-07-15
  • 打赏
  • 举报
回复
粗粗看了一遍,你附的代码不全吧?
pHzxPkgHeader->iSize在哪赋的初值,又是在哪被修改过呢?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧