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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
缓冲区的大小不足以容纳数组。 |
|
找不到指定的键。 |
|
属性值不是字节数组。 |
注解
还可以使用 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 |