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 メソッドを使用することもできます。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。

  • Windows XP Service Pack 2 (SP2) 以降。
  • Windows XP Media Center Edition 2005 KB900325 (Windows XP Media Center Edition 2005) とKB925766 (2006 年 10 月 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
ヘッダー mfobjects.h (Mfidl.h を含む)
Library Mfuuid.lib

こちらもご覧ください

属性とプロパティ

IMFAttributes

MF_ATTRIBUTE_TYPE