Поделиться через


Функция InitVariantFromVariantArrayElem (propvarutil.h)

Инициализирует структуру VARIANT значением, хранящимся в другой структуре VARIANT .

Синтаксис

PSSTDAPI InitVariantFromVariantArrayElem(
  [in]  REFVARIANT varIn,
  [in]  ULONG      iElem,
  [out] VARIANT    *pvar
);

Параметры

[in] varIn

Тип: REFVARIANT

Ссылка на исходную структуру VARIANT .

[in] iElem

Тип: ULONG

Индекс одного из исходных элементов структуры VARIANT .

[out] pvar

Тип: VARIANT*

При возврате этой функции содержит инициализированную структуру VARIANT .

Возвращаемое значение

Тип: HRESULT

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Эта вспомогательная функция работает для структур VARIANT следующих типов:

  • VT_BSTR
  • VT_BOOL.
  • VT_I2
  • VT_I4
  • VT_I8
  • VT_U12.
  • VT_U14
  • VT_U18
  • VT_DATE
  • VT_ARRAY | (любой из VT_BSTR, VT_BOOL, VT_I2, VT_I4, VT_I8, VT_U12, VT_U14, VT_U18, VT_DATE)
В будущем могут поддерживаться дополнительные типы.

Эта функция извлекает одно значение из исходной структуры VARIANT и использует это значение для инициализации выходной структуры VARIANT . Вызывающее приложение должно использовать VariantClear , чтобы освободить variant , на который ссылается pvar , когда он больше не нужен.

Если источник VARIANT является массивом, значение iElem должно быть меньше числа элементов в массиве.

Если исходный variant имеет одно значение, iElem должен иметь значение 0.

Если исходный variant пуст, эта функция всегда возвращает код ошибки.

VariantGetElementCount можно использовать для получения количества элементов в массиве или массиве.

Примеры

В следующем примере, который будет включен в состав более крупной программы, показано, как использовать InitVariantFromVariantArrayElem в операторе итерации для доступа к значениям в VARIANT.

// VARIANT var;
// Assume var is initialized and valid.
UINT cElem = VariantGetElementCount(var);
HRESULT hr = <mark type="const">S_OK</mark>;

for (UINT iElem = 0; SUCCEEDED(hr) && iElem < cElem; iElem ++)
{
    VARIANT varElem = {0};

    hr = InitVariantFromVariantArrayElem(var, iElem, &varElem);

    if (SUCCEEDED(hr))
    {
        // varElem is now valid.
        VariantClear(&varElem);
    }
}

Требования

Требование Значение
Минимальная версия клиента Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения]
Целевая платформа Windows
Header propvarutil.h
Библиотека Propsys.lib
DLL Propsys.dll (версия 6.0 или более поздняя)
Распространяемые компоненты Windows Desktop Search (WDS) 3.0

См. также раздел

InitPropVariantFromPropVariantVectorElem

VariantGetElem