Функция 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