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


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

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

Синтаксис

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

Параметры

[in] propvar

Тип: REFPROPVARIANT

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

[out] prgn

Тип: USHORT*

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

[in] crgn

Тип: ULONG

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

[out] pcElem

Тип: ULONG*

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

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

Тип: HRESULT

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

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

Замечания

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

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

Примеры

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения]
целевая платформа Виндоус
заголовка propvarutil.h
библиотеки Propsys.lib
DLL Propsys.dll (версия 6.0 или более поздняя)
распространяемый Поиск компьютеров Windows (WDS) 3.0

См. также

InitPropVariantFromUInt16Vector

PropVariantGetUInt16Elem

PropVariantToUInt16

PropVariantToUInt16VectorAlloc

VariantToUInt16Array