发送端代码: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,而是很大,为什么呢?