Функция PropVariantToBooleanVector (propvarutil.h)
Извлекает логический вектор из структуры PROPVARIANT .
Синтаксис
PSSTDAPI PropVariantToBooleanVector(
[in] REFPROPVARIANT propvar,
[out] BOOL *prgf,
[in] ULONG crgf,
[out] ULONG *pcElem
);
Параметры
[in] propvar
Тип: REFPROPVARIANT
Ссылка на исходную структуру PROPVARIANT .
[out] prgf
Тип: BOOL*
Указывает на буфер, содержащий значения BOOL crgf. При возврате этой функции буфер инициализирован с помощью логических элементов pcElem , извлеченных из исходной структуры PROPVARIANT .
[in] crgf
Тип: ULONG
Количество элементов в буфере, на которые указывает prgf.
[out] pcElem
Тип: ULONG*
При возврате этой функции содержит количество логических элементов, извлеченных из исходной структуры PROPVARIANT .
Возвращаемое значение
Тип: HRESULT
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае. |
|
Исходный PROPVARIANT содержал больше значений crgf . Буфер, на который указывает prgf. |
|
PROPVARIANT не был соответствующего типа. |
Комментарии
Эта вспомоганная функция используется, когда вызывающее приложение ожидает , что PROPVARIANT будет содержать логическое векторное значение с фиксированным числом элементов.
Если исходный PROPVARIANT имеет тип VT_VECTOR | VT_BOOL или VT_ARRAY | VT_BOOL эта вспомогательская функция извлекает логические значения crgf и помещает их в буфер, на который указывает prgf. Если PROPVARIANT содержит больше элементов, чем помещается в буфер prgf , эта функция возвращает ошибку и устанавливает для pcElem значение 0.
Примеры
В следующем примере, который будет включен в более крупную программу, показано, как использовать PropVariantToBooleanVector для доступа к логическому вектору, хранящейся в PROPVARIANT.
// PROPVARIANT propvar;
// Assume the variable propvar is initialized and valid.
// The application is expecting the propvar variable to hold 4 Booleans
// in a vector.
BOOL rgFlags[4];
ULONG cFlags;
HRESULT hr = PropVariantToBooleanVector(propvar, rgFlags, ARRAYSIZE(rgFlags), &cFlags);
if (SUCCEEDED(hr))
{
if (cFlags == ARRAYSIZE(rgFlags))
{
// The application received 4 flags which are now stored in rgFlags.
}
else
{
// The application received cFlags flags which are now stored in the
// first cFlags elements of rgFlags.
}
}
Требования
Минимальная версия клиента | 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 |