Safe Array - Установить ноль - PullRequest
0 голосов
/ 30 июня 2011

сработает ли следующий код, если число возвращаемых безопасных массивов равно нулю?Должен ли я сделать что-нибудь еще?

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

1 Ответ

2 голосов
/ 30 июня 2011

pArray является LPSAFEARRAY и должно рассматриваться как таковое.Поэтому вам нужны функции SAFEARRAY (макросы).SAFEARRAY не имеет понятия "count" как такового, это массив переменной размерности.Одномерный SAFEARRAY может иметь размер 0, но 2D SAFEARRAY будет иметь размер 0x0 (или 1x0).

В частности, документы MSDN VT_ARRAY как "Указатель в parray указываетна дескриптор массива ", но NULL не указывает на дескриптор массива.

...