IMFAttributes::GetString 方法 (mfobjects.h)

检索与键关联的宽字符字符串。

语法

HRESULT GetString(
  [in]  REFGUID guidKey,
  [out] LPWSTR  pwszValue,
  [in]  UINT32  cchBufSize,
  [out] UINT32  *pcchLength
);

参数

[in] guidKey

标识要检索的值的 GUID。 属性类型必须 MF_ATTRIBUTE_STRING

[out] pwszValue

指向调用方分配的宽字符数组的指针。 数组必须足够大才能保存字符串,包括终止 NULL 字符。 如果找到键并且值为字符串类型,该方法会将字符串复制到此缓冲区中。 若要查找字符串的长度,请调用 IMFAttributes::GetStringLength

[in] cchBufSize

pwszValue 数组的大小(以字符为单位)。 此值包括终止 NULL 字符。

[out] pcchLength

接收字符串中的字符数,不包括终止 NULL 字符。 此参数可以为 NULL。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_OUTOFMEMORY
字符串的长度太大,无法容纳在 UINT32 值中。
E_NOT_SUFFICIENT_BUFFER
缓冲区不够大,无法容纳字符串。
MF_E_ATTRIBUTENOTFOUND
找不到指定的键。
MF_E_INVALIDTYPE
属性值不是字符串。

注解

还可以使用 IMFAttributes::GetAllocatedString 方法,该方法分配缓冲区以保存字符串。

如果安装了 Windows Media Format 11 SDK 可再发行组件,则此接口在以下平台上可用:

  • Windows XP with Service Pack 2 (SP2) 及更高版本。
  • Windows XP Media Center Edition 2005 KB900325 (windows XP Media Center Edition 2005) 和KB925766 (2006 年 10 月 Windows XP Media Center Edition 更新汇总) 安装。

示例

下面的代码示例演示如何获取值为字符串的属性。

HRESULT AttributeGetString(IMFAttributes *pAttributes)
{
    HRESULT hr = S_OK;
    UINT32 cchLength = 0;
    WCHAR *pString = NULL;

    hr = pAttributes->GetStringLength(MY_ATTRIBUTE, &cchLength);
    
    if (SUCCEEDED(hr))
    {
        pString = new WCHAR[cchLength + 1];
        if (pString == NULL)
        {
            hr = E_OUTOFMEMORY;
        }
    }

    if (SUCCEEDED(hr))
    {
        hr = pAttributes->GetString(
            MY_ATTRIBUTE, pString, cchLength + 1, &cchLength);
    }

    if (pString)
    {
        delete [] pString;
    }
    return hr;
}

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 mfobjects.h (包括 Mfidl.h)
Library Mfuuid.lib

另请参阅

特性和属性

IMFAttributes

MF_ATTRIBUTE_TYPE