Método IMFAttributes::GetBlob (mfobjects.h)

Recupera uma matriz de bytes associada a uma chave. Esse método copia a matriz em um buffer alocado pelo chamador.

Sintaxe

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

Parâmetros

[in] guidKey

GUID que identifica qual valor recuperar. O tipo de atributo deve ser MF_ATTRIBUTE_BLOB.

[out] pBuf

Ponteiro para um buffer alocado pelo chamador. Se a chave for encontrada e o valor for uma matriz de bytes, o método copiará a matriz para esse buffer. Para localizar o tamanho necessário do buffer, chame IMFAttributes::GetBlobSize.

[in] cbBufSize

O tamanho do buffer pBuf , em bytes.

[out] pcbBlobSize

Recebe o tamanho da matriz de bytes. Este parâmetro pode ser NULL.

Retornar valor

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
E_NOT_SUFFICIENT_BUFFER
O buffer não é grande o suficiente para a matriz.
MF_E_ATTRIBUTENOTFOUND
A chave especificada não foi encontrada.
MF_E_INVALIDTYPE
O valor do atributo não é uma matriz de bytes.

Comentários

Você também pode usar o método IMFAttributes::GetAllocatedBlob , que aloca o buffer para manter a matriz de bytes.

Essa interface estará disponível nas seguintes plataformas se os componentes redistribuíveis do SDK do Windows Media Format 11 estiverem instalados:

  • Windows XP com Service Pack 2 (SP2) e posterior.
  • Windows XP Media Center Edition 2005 com KB900325 (Windows XP Media Center Edition 2005) e KB925766 (pacote cumulativo de atualizações de outubro de 2006 para Windows XP Media Center Edition) instalados.

Exemplos

O exemplo de código a seguir mostra como obter um atributo cujo valor é uma matriz de bytes.

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;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfobjects.h (inclua Mfidl.h)
Biblioteca Mfuuid.lib

Confira também

Atributos e propriedades

IMFAttributes

MF_ATTRIBUTE_TYPE