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


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

Извлекает вектор двойного значения из структуры PROPVARIANT .

Синтаксис

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

Параметры

[in] propvar

Тип: REFPROPVARIANT

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

[out] prgn

Тип: DOUBLE*

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

[in] crgn

Тип: ULONG

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

[out] pcElem

Тип: ULONG*

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

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

Тип: HRESULT

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

Комментарии

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

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

Примеры

// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_GPS_DestLongitude, &propvar);
if (SUCCEEDED(hr))
{
         // PKEY_GPS_DestLongitude is expected to produce a VT_VECTOR | VT_R8 with three values, or VT_EMPTY
         // PropVariantToDoubleVector will return an error for VT_EMPTY
         DOUBLE rgLongitude[3];
         ULONG cElem;
         hr = PropVariantToDoubleVector(propvar, &rgLongitude, ARRAYSIZE(rgLongitude), &cElem);
         if (SUCCEEDED(hr))
         {
                 if (cElem == ARRAYSIZE(rgLongitude))
                 {
                          // rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
                 }
                 else
                 {
                          // The first cElem doubles from propvar are stored in the first 3 elements of rgLongitude
         }
         else
         {
                 // propvar either is VT_EMPTY, or contains something other than a vector of 3 doubles
         }
         PropVariantClear(&propvar);
}

Требования

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

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

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVectorAlloc

VariantToDoubleArray