IMFAttributes::GetBlob 方法(mfobjects.h)

检索与键关联的字节数组。 此方法将数组复制到调用方分配的缓冲区中。

Syntax

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

  • 具有 Service Pack 2(SP2)及更高版本的 Windows XP。
  • 安装了 KB900325(Windows XP Media Center Edition 2005)和 KB925766 (Windows XP Media Center Edition 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;
}

要求

Requirement 价值
最低支持的客户端 Windows Vista [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header mfobjects.h (包括 Mfidl.h)
Library Mfuuid.lib

另请参阅

属性和属性

IMFAttributes

MF_ATTRIBUTE_TYPE