求助:variant数据传输,值不能正确接受
发送端代码:
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,而是很大,为什么呢?
、
谢谢啊,分不够再加啊!