Метод 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

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

[in] cbBufSize

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

[out] pcbBlobSize

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

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

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

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

Замечания

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

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

  • Windows XP с пакетом обновления 2 (SP2) и более поздними версиями.
  • Windows XP Media Center Edition 2005 с KB900325 (Windows XP Media Center Edition 2005) и KB925766 (накопительный пакет обновления windows XP Media Center Edition 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]
целевая платформа Виндоус
Header mfobjects.h (include Mfidl.h)
Library Mfuuid.lib

См. также

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

МВФAttributes

MF_ATTRIBUTE_TYPE