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


Метод IMFAttributes::GetBlob (mfobjects.h)

Извлекает массив байтов, связанный с ключом. Этот метод копирует массив в буфер, выделенный вызывающим объектом.

Синтаксис

HRESULT GetBlob(
  [in]  REFGUID guidKey,
  [out] UINT8   *pBuf,
  [in]  UINT32  cbBufSize,
  [out] UINT32  *pcbBlobSize
);

Параметры

[in] guidKey

GUID, определяющий, какое значение следует извлечь. Тип атрибута должен быть MF_ATTRIBUTE_BLOB.

[out] pBuf

Указатель на буфер, выделенный вызывающим объектом. Если ключ найден, а значением является массив байтов, метод копирует массив в этот буфер. Чтобы найти требуемый размер буфера, вызовите imfAttributes::GetBlobSize.

[in] cbBufSize

Размер буфера pBuf в байтах.

[out] pcbBlobSize

Получает размер массива байтов. Этот параметр может принимать значение NULL.

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

Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

Код возврата Описание
S_OK
Метод выполнен успешно.
E_NOT_SUFFICIENT_BUFFER
Буфер недостаточно велик для массива.
MF_E_ATTRIBUTENOTFOUND
Указанный ключ не найден.
MF_E_INVALIDTYPE
Значение атрибута не является массивом байтов.

Комментарии

Можно также использовать метод IMFAttributes::GetAllocatedBlob , который выделяет буфер для хранения массива байтов.

Этот интерфейс доступен на следующих платформах, если установлены распространяемые компоненты пакета SDK для Windows Media Format 11:

  • Windows XP с пакетом обновления 2 (SP2) и более поздних версий.
  • Windows XP Media Center Edition 2005 с установленным KB900325 (Windows XP Media Center Edition 2005) и KB925766 (накопительный пакет обновления за октябрь 2006 г. для Windows XP Media Center Edition).

Примеры

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

HRESULT AttributeGetBlob(IMFAttributes *pAttributes)
{
    HRESULT hr = S_OK;
    UINT32 cbBlob = 0;
    BYTE *pBlob = NULL;

    hr = pAttributes->GetBlobSize(MY_ATTRIBUTE, &cbBlob);
    
    if (SUCCEEDED(hr))
    {
        pBlob = new BYTE[cbBlob];
        if (pBlob == NULL)
        {
            hr = E_OUTOFMEMORY;
        }
    }

    if (SUCCEEDED(hr))
    {
        hr = pAttributes->GetBlob(MY_ATTRIBUTE, pBlob, cbBlob, &cbBlob);
    }

    if (pBlob)
    {
        delete [] pBlob;
    }
    return hr;
}

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header mfobjects.h (включая Mfidl.h)
Библиотека Mfuuid.lib

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

Атрибуты и свойства

IMFAttributes

MF_ATTRIBUTE_TYPE