Функция PropVariantToStringVector (propvarutil.h)
Извлекает вектор строк из структуры PROPVARIANT .
Синтаксис
PSSTDAPI PropVariantToStringVector(
[in] REFPROPVARIANT propvar,
[out] PWSTR *prgsz,
[in] ULONG crgsz,
[out] ULONG *pcElem
);
Параметры
[in] propvar
Тип: REFPROPVARIANT
Ссылка на исходную структуру PROPVARIANT .
[out] prgsz
Тип: PWSTR*
Указатель на вектор строковых указателей. При возврате этой функции буфер инициализирован элементами pcElem , указывающими на вновь выделенные строки, содержащие данные, извлеченные из источника PROPVARIANT.
[in] crgsz
Тип: ULONG
Размер буфера, на который указывает prgsz, в элементах.
[out] pcElem
Тип: ULONG*
При возврате этой функции содержит количество строк, извлеченных из исходной структуры PROPVARIANT .
Возвращаемое значение
Тип: HRESULT
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае. |
|
ИсходныйPROPVARIANT содержал больше значений crgsz . Буфер, на который указывает prgsz. |
|
PROPVARIANT не был соответствующего типа. |
Комментарии
Эта вспомогающая функция используется в местах, где вызывающее приложение ожидает , что PROPVARIANT будет содержать вектор строковых значений с фиксированным числом элементов.
Эта функция работает для следующих типов PROPVARIANT :
- VT_VECTOR | VT_LPWSTR
- VT_VECTOR | VT_BSTR
- VT_ARRAY | VT_BSTR
Так как каждая строка в , на которую указывает выходной буфер, была выделена, вызывающее приложение отвечает за использование CoTaskMemFree для освобождения каждой строки в выходном буфере, когда они больше не нужны.
Если BSTR в исходном PROPVARIANT имеет значение NULL, она преобразуется в только что выделенную строку, содержащую "" в выходных данных.
Примеры
// PROPVARIANT propvar;
// Assume the variable propvar is initialized and valid
LPWSTR rgszStrings; // The application is expecting propvar to hold 4 strings in a vector
ULONG cElems;
HRESULT hr = PropVariantToStringVector(propvar, rgszStrings, ARRAYSIZE(rgszStrings), &cElems);
if (SUCCEEDED(hr))
{
if (cElems == ARRAYSIZE(rgszStrings))
{
// The application got 4 string which are now stored in rgszStrings
}
else
{
// The application got cElems which are stored in the first cElems elements of rgLongs
}
// Free the cElems strings that PropVariantToStringVector allocated
for (ULONG i = 0; i < cElems; i++)
{
CoTaskMemFree(rgszStrings[i]);
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | 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 |
См. также раздел
InitPropVariantFromStringVector