检索与键关联的字节数组。 此方法将数组复制到调用方分配的缓冲区中。
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 |
|---|---|
|
方法成功。 |
|
缓冲区不够大,足以容纳数组。 |
|
找不到指定的键。 |
|
属性值不是字节数组。 |
注解
还可以使用 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 |