【问题标题】:Safe Array - Set count zero安全阵列 - 将计数设置为零
【发布时间】:2011-06-30 20:43:52
【问题描述】:

如果要返回的安全数组计数为零,以下代码是否可以工作?我应该做些什么吗?

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

【问题讨论】:

    标签: c++ com atl


    【解决方案1】:

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

    特别是,MSDN 将 VT_ARRAY 记录为“parray 中的指针指向数组描述符”,但 NULL 并不指向数组描述符。

    【讨论】:

      猜你喜欢
      • 2016-08-21
      • 1970-01-01
      • 2014-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2016-09-12
      • 1970-01-01
      相关资源
      最近更新 更多