安全阵列 - 设置计数零

时间:2011-06-30 09:01:59

标签: c++ com atl

如果要返回的安全数组计数为零,以下代码是否有效?我该怎么办?

HRESULT GetAlarms(FAULT_TYPE eAlarmType, long alarmLevel, VARIANT* pvarAlamLst)
{
   pvarAlamLst->vt = VT_ARRAY |VT_VARIANT;
   pvarAlamLst->parray = NULL;
   return S_OK;
}

1 个答案:

答案 0 :(得分:2)

pArrayLPSAFEARRAY,应该这样对待。因此,您需要SAFEARRAY函数(宏)。 SAFEARRAY没有“计数”这样的概念,它是一个可变维数组。一维SAFEARRAY的大小为0,但2D SAFEARRAY的大小为0x0(或1x0)。

特别是,MSDN文档VT_ARRAY为“parray中的指针指向数组描述符”,但NULL未指向数组描述符。

相关问题