Condividi tramite


Metodo IMFAttributes::GetBlob (mfobjects.h)

Recupera una matrice di byte associata a una chiave. Questo metodo copia la matrice in un buffer allocato dal chiamante.

Sintassi

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

Parametri

[in] guidKey

GUID che identifica il valore da recuperare. Il tipo di attributo deve essere MF_ATTRIBUTE_BLOB.

[out] pBuf

Puntatore a un buffer allocato dal chiamante. Se la chiave viene trovata e il valore è una matrice di byte, il metodo copia la matrice in questo buffer. Per trovare le dimensioni necessarie del buffer, chiamare IMFAttributes::GetBlobSize.

[in] cbBufSize

Dimensioni del buffer pBuf , in byte.

[out] pcbBlobSize

Riceve le dimensioni della matrice di byte. Questo parametro può essere NULL.

Valore restituito

Il metodo restituisce un valore HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
E_NOT_SUFFICIENT_BUFFER
Il buffer non è sufficientemente grande per la matrice.
MF_E_ATTRIBUTENOTFOUND
La chiave specificata non è stata trovata.
MF_E_INVALIDTYPE
Il valore dell'attributo non è una matrice di byte.

Commenti

È anche possibile usare il metodo IMFAttributes::GetAllocatedBlob , che alloca il buffer per contenere la matrice di byte.

Questa interfaccia è disponibile nelle piattaforme seguenti se vengono installati i componenti ridistribuibili di Windows Media Format 11 SDK:

  • Windows XP con Service Pack 2 (SP2) e versioni successive.
  • Windows XP Media Center Edition 2005 con KB900325 (Windows XP Media Center Edition 2005) e KB925766 (aggiornamento cumulativo di ottobre 2006 per Windows XP Media Center Edition) installato.

Esempio

Nell'esempio di codice seguente viene illustrato come ottenere un attributo il cui valore è una matrice di byte.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mfobjects.h (include Mfidl.h)
Libreria Mfuuid.lib

Vedi anche

Attributi e proprietà

IMFAttributes

MF_ATTRIBUTE_TYPE