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 可再发行组件,则此接口在以下平台上可用:

  • 具有 Service Pack 2 的 Windows XP (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