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


Функция 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
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае.
TYPE_E_BUFFERTOOSMALL
Исходный PROPVARIANT содержал больше значений crgf . Буфер, на который указывает prgf.
E_INVALIDARG
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