Поделиться через


Метод 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 , который выделяет буфер для хранения строки.

Этот интерфейс доступен на следующих платформах, если установлены распространяемые компоненты пакета SDK формата 11 для Windows Media:

  • Windows XP с пакетом обновления 2 (SP2) и более поздних версий.
  • Windows XP Media Center Edition 2005 с установленным KB900325 (Windows XP Media Center Edition 2005) и KB925766 (накопительный пакет обновления для Windows XP Media Center Edition за октябрь 2006 г.).

Примеры

В следующем примере кода показано, как получить атрибут, значение которого является строкой.

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
Header mfobjects.h (включая Mfidl.h)
Библиотека Mfuuid.lib

См. также раздел

Атрибуты и свойства

IMFAttributes

MF_ATTRIBUTE_TYPE