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

Recupera una matriz de bytes asociada a una clave. Este método copia la matriz en un búfer asignado por el autor de la llamada.

Sintaxis

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

Parámetros

[in] guidKey

GUID que identifica qué valor se va a recuperar. El tipo de atributo debe ser MF_ATTRIBUTE_BLOB.

[out] pBuf

Puntero a un búfer asignado por el autor de la llamada. Si se encuentra la clave y el valor es una matriz de bytes, el método copia la matriz en este búfer. Para buscar el tamaño necesario del búfer, llame a IMFAttributes::GetBlobSize.

[in] cbBufSize

Tamaño del búfer de pBuf , en bytes.

[out] pcbBlobSize

Recibe el tamaño de la matriz de bytes. Este parámetro puede ser NULL.

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
E_NOT_SUFFICIENT_BUFFER
El búfer no es lo suficientemente grande como para la matriz.
MF_E_ATTRIBUTENOTFOUND
No se encontró la clave especificada.
MF_E_INVALIDTYPE
El valor del atributo no es una matriz de bytes.

Comentarios

También puede usar el método IMFAttributes::GetAllocatedBlob , que asigna el búfer para contener la matriz de bytes.

Esta interfaz está disponible en las siguientes plataformas si se instalan los componentes redistribuibles del SDK de Windows Media Format 11:

  • Windows XP con Service Pack 2 (SP2) y versiones posteriores.
  • Windows XP Media Center Edition 2005 con KB900325 (Windows XP Media Center Edition 2005) y KB925766 (paquete acumulativo de actualizaciones de octubre de 2006 para Windows XP Media Center Edition) instalados.

Ejemplos

En el ejemplo de código siguiente se muestra cómo obtener un atributo cuyo valor es una 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 Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfobjects.h (include Mfidl.h)
Library Mfuuid.lib

Consulte también

Atributos y propiedades

IMFAttributes

MF_ATTRIBUTE_TYPE