擷取與索引鍵相關聯的位元組陣列。 這個方法會將數位複製到呼叫端配置的緩衝區。
語法
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 |
|---|---|
|
此方法已成功。 |
|
緩衝區對陣列來說不夠大。 |
|
但未找到指定的金鑰。 |
|
屬性值不是位元組陣列。 |
備註
你也可以使用 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 |