共用方式為


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 服務包 2(SP2)及更新版本。
  • Windows XP 媒體中心版 2005,並安裝了 KB900325(Windows XP 媒體中心版 2005)和KB925766(2006 年 10 月更新整合版,適用於 Windows XP 媒體中心版)。

範例

以下程式碼範例說明如何取得一個值為位元組陣列的屬性。

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

需求

Requirement 價值觀
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
Header mfobjects.h(包含 Mfidl.h)
Library Mfuuid.lib

另請參閱

屬性與性質

IMFAttributes

MF_ATTRIBUTE_TYPE