VARIANT 转为 BYTE数组
_variant_t vtValue=com返回值;
if (vtValue.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pByte = NULL;
::SafeArrayAccessData(vtValue.parray, (void **)&pByte);
memcpy(pBuff, pByte, sizeof(HEADER_USERADM));
::SafeArrayUnaccessData(vtValue.parray);
}
BYTE数组 转为VARIANT
BYTE buffer[1024];//buffer需要初始化,比如从文件中读取出来
CFile f;
if (!f.Open(m_Socket_FileName, CFile::modeRead | CFile::shareDenyWrite | CFile::typeBinary))
{
t_Success = false;
}
UINT length = f.Read(buffer, sizeof(buffer));
//length是buffer的长度
// BYTE数组 转为VARIANT
_variant_t vtValue;
SAFEARRAY*psa=NULL;
BYTE*pByte=NULL;
::VariantInit(&vtValue);
psa=::SafeArrayCreateVector(VT_UI1,0,length);
::SafeArrayAccessData(psa,(void**)&pByte);
memcpy(pByte,buffer,length);
::SafeArrayUnaccessData(psa);
vtValue.vt=VT_ARRAY|VT_UI1;
vtValue.parray=psa;