Share via


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。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 Description
S_OK
此方法已成功。
E_NOT_SUFFICIENT_BUFFER
緩衝區不夠大,無法用於數位。
MF_E_ATTRIBUTENOTFOUND
找不到指定的索引鍵。
MF_E_INVALIDTYPE
屬性值不是位元組陣列。

備註

您也可以使用 IMFAttributes::GetAllocatedBlob 方法,此方法會配置緩衝區來保存位元組陣列。

如果已安裝 Windows Media Format 11 SDK 可轉散發元件,此介面可在下列平臺上使用:

  • Windows XP with 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 2005。

範例

下列程式代碼範例示範如何取得其值為位元組數位列數位的屬性。

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)
程式庫 Mfuuid.lib

另請參閱

屬性和屬性

IMFAttributes

MF_ATTRIBUTE_TYPE