安全数组 - 将计数设置为零

发布于 2024-11-17 23:58:45 字数 247 浏览 1 评论 0原文

如果要返回的安全数组计数为零,以下代码是否有效?我还应该做点别的吗?

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

will the following code work, if the safe array count to be returned is zero? Should I do anything else?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

捂风挽笑 2024-11-24 23:58:45

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

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

pArray is a LPSAFEARRAY and should be treated as such. Therefore you need the SAFEARRAY functions (macros). SAFEARRAY doesn't have a concept of "count" as such, it's a variable-dimension array. A one-dimensional SAFEARRAY can have size 0, but a 2D SAFEARRAY would have size 0x0 (or 1x0).

In particular, MSDN documents VT_ARRAY as "The pointer in parray points to an array descriptor", but NULL doesn't point to an array descriptor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文