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


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

Извлекает содержимое буфера, хранящегося в структуре VARIANT типа VT_ARRRAY | VT_UI1.

Синтаксис

PSSTDAPI VariantToBuffer(
  [in]  REFVARIANT varIn,
  [out] void       *pv,
  [in]  UINT       cb
);

Параметры

[in] varIn

Тип: REFVARIANT

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

[out] pv

Тип: VOID*

Указатель на буфер длины cb байт. При возврате этой функцией содержит первые кб-байты извлеченного значения буфера.

[in] cb

Тип: UINT

Размер pv-буфера в байтах. Размер буфера должен быть таким же, как и извлекаемые данные, или быть меньше.

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

Тип: HRESULT

Возвращает одно из следующих значений:

Код возврата Описание
S_OK
Данные успешно извлечены.
E_INVALIDARG
Variant не был типом VT_ARRRAY | VT_UI1.
E_FAIL
Значение буфера VARIANT было меньше cb байт.

Комментарии

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

Если исходный variant имеет тип VT_ARRAY | VT_UI1 эта функция извлекает первые байты CB из структуры и помещает их в буфер, на который указывает pv.

Если хранимое значение меньше cb байт, variantToBuffer завершается ошибкой и буфер не изменяется.

Если значение превышает кб байт, VariantToBuffer завершается успешно и усекает значение.

Примеры

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

// VARIANT var;
// Assume variable var is initialized and valid. 
// The application expects var to hold a WIN32_FIND_DATAW structure 
// with sizeof(WIN32_FIND_DATAW) bytes.

HRESULT hr = E_UNEXPECTED;

// Verify that the value length is acceptable before you call VariantToBuffer.
if (VariantGetElementCount(var) == sizeof(WIN32_FIND_DATAW))
{
    WIN32_FIND_DATAW wfd;

    hr = VariantToBuffer(var, &wfd, sizeof(wfd));

    if (SUCCEEDED(hr))
    {
        // wfd is now initialized.
    }
}

Требования

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

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

InitVariantFromBuffer

PropVariantToBuffer