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


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

Извлекает один строковый элемент Юникода из структуры PROPVARIANT типа VT_LPWSTR, VT_BSTR VT_VECTOR | VT_LPWSTR, VT_VECTOR | VT_BSTR или VT_ARRAY | VT_BSTR.

Синтаксис

PSSTDAPI PropVariantGetStringElem(
  [in]  REFPROPVARIANT propvar,
  [in]  ULONG          iElem,
  [out] PWSTR          *ppszVal
);

Параметры

[in] propvar

Тип: REFPROPVARIANT

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

[in] iElem

Тип: ULONG

Индекс вектора или массива; В противном случае значение iElem должно иметь значение 0.

[out] ppszVal

Тип: PWSTR*

При возврате этой функцией содержит извлеченное строковое значение. Вызывающее приложение отвечает за освобождение этой строки путем вызова CoTaskMemFree , когда она больше не нужна.

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

Тип: HRESULT

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

Комментарии

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

  • VT_LPWSTR
  • VT_BSTR
  • VT_VECTOR | VT_LPWSTR
  • VT_VECTOR | VT_BSTR
  • VT_ARRAY | VT_BSTR
Если исходный PROPVARIANT имеет тип VT_LPWSTR или VT_BSTR, iElem должен иметь значение 0. В противном случае iElem должно быть меньше числа элементов в векторе или массиве. Для получения количества элементов в векторе или массиве можно использовать PropVariantGetElementCount .

Если элемент BSTR имеет указатель NULL , эта функция выделяет пустую строку.

Примеры

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

// PROPVARIANT propvar;
// Assume the variable propvar is initialized and valid

if ((propvar.vt & VT_TYPEMASK) == VT_LPWSTR || (propvar.vt & VT_TYPEMASK) == VT_BSTR)
{
    UINT cElem = PropVariantGetElementCount(propvar);
    HRESULT hr = <mark type="const">S_OK</mark>;

    for (UINT iElem = 0; SUCCEEDED(hr) && iElem < cElem; iElem ++)
    {
        PWSTR pszValue;
        hr = PropVariantGetStringElem(propvar, iElem, &pszValue);

        if (SUCCEEDED(hr))
        {
            // pszValue is valid now
            CoTaskMemFree(pszValue);
        }
    }
}

Требования

Требование Значение
Минимальная версия клиента 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

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

PropVariantGetElem