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


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

Извлекает данные из структуры PROPVARIANT в вектор ULONGLONG .

Синтаксис

PSSTDAPI PropVariantToUInt64Vector(
  [in]  REFPROPVARIANT propvar,
  [out] ULONGLONG      *prgn,
  [in]  ULONG          crgn,
  [out] ULONG          *pcElem
);

Параметры

[in] propvar

Тип: REFPROPVARIANT

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

[out] prgn

Тип: ULONGLONG*

Указывает на буфер, содержащий значения CRGNULONGLONG . При возврате этой функции буфер инициализирован с помощью элементов pcElemULONGLONG, извлеченных из исходного PROPVARIANT.

[in] crgn

Тип: ULONG

Размер буфера, на который указывает prgn, в элементах.

[out] pcElem

Тип: ULONG*

При возврате этой функцией содержит количество значений ULONGLONG , извлеченных из исходной структуры PROPVARIANT .

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

Тип: HRESULT

Эта функция может возвращать одно из этих значений.

Код возврата Описание
S_OK
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае.
TYPE_E_BUFFERTOOSMALL
Исходный PROPVARIANT содержит больше значений crgn . Буфер, на который указывает prgn.
E_INVALIDARG
PROPVARIANT не был соответствующего типа.

Комментарии

Эта вспомоганная функция используется в тех местах, где вызывающее приложение ожидает PROPVARIANT для хранения вектора значений ULONGLONG с фиксированным количеством элементов.

Если исходный PROPVARIANT имеет тип VT_VECTOR | VT_UI8 или VT_ARRAY | VT_UI8, эта вспомогательская функция извлекает значения ULONGLONG до crgn и помещает их в буфер, на который указывает prgn. Если PROPVARIANT содержит больше элементов, чем помещается в буфер prgn , эта функция возвращает ошибку и устанавливает для pcElem значение 0.

Примеры

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

// PROPVARIANT propvar;
// Assume the variable propvar is initialized and valid
ULONGLONG rgLongs[4]; // The application is expecting propvar to hold 4 ULONGLONGs in a vector
ULONG cElems;
HRESULT hr = PropVariantToUInt64Vector(propvar, rgLongs, ARRAYSIZE(rgLongs), &cElems);
if (SUCCEEDED(hr))
{
     if (cElems == ARRAYSIZE(rgLongs))
     {
         // The application got 4 ULONGLONGs which are now stored in rgLongs
     }
     else
     {
         // The application got cElems which are stored in the first cElems elements of rgLongs
     }
}

Требования

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

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

InitPropVariantFromUInt64Vector

PropVariantGetUInt64Elem

PropVariantToUInt64

PropVariantToUInt64VectorAlloc

VariantToUInt64Array