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


Метод IMFMediaSession::SetTopology (mfidl.h)

Задает топологию для сеанса мультимедиа.

Синтаксис

HRESULT SetTopology(
  [in] DWORD       dwSetTopologyFlags,
  [in] IMFTopology *pTopology
);

Параметры

[in] dwSetTopologyFlags

Побитовое ЗНАЧЕНИЕ ИЛИ , равное нулю или более флагам из перечисления MFSESSION_SETTOPOLOGY_FLAGS .

[in] pTopology

Указатель на интерфейс IMFTopology объекта топологии .

Возвращаемое значение

Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

Код возврата Описание
S_OK
Метод выполнен успешно.
MF_E_INVALIDREQUEST
Операция не может быть выполнена в текущем состоянии сеанса мультимедиа.
MF_E_SHUTDOWN
Сеанс мультимедиа завершен.
MF_E_TOPO_INVALID_TIME_ATTRIBUTES
Топология имеет недопустимые значения для одного или нескольких следующих атрибутов:
NS_E_DRM_DEBUGGING_NOT_ALLOWED
Во время отладки невозможно воспроизвести защищенное содержимое.

Комментарии

Если pTopology является полной топологией, установите флаг MFSESSION_SETTOPOLOGY_NORESOLUTION в параметре dwSetTopologyFlags . В противном случае предполагается, что топология является частичной. Сеанс мультимедиа использует загрузчик топологии для разрешения частичной топологии в полную топологию.

Если сеанс мультимедиа в настоящее время приостановлен или остановлен, метод SetTopology не вступит в силу до следующего вызова IMFMediaSession::Start.

Если сеанс мультимедиа выполняется в данный момент или при следующем вызове метода Start, метод SetTopology выполняет следующие действия:

  • Если флаг MFSESSION_SETTOPOLOGY_IMMEDIATE установлен в dwSetTopologyFlags, сеанс мультимедиа немедленно завершает текущую презентацию, очищает все ожидающие топологии и использует pTopology для запуска новой презентации.
  • В противном случае сеанс мультимедиа помещает в очередь pTopology и запускает новую презентацию после завершения текущей презентации. Если текущей презентации нет, новая презентация начинается немедленно.
  • Начиная с Windows 7, вы также можете указать флаг MFSESSION_SETTOPOLOGY_CLEAR_CURRENT , чтобы очистить текущую топологию, но оставить все другие ожидающие топологии в очереди.
Этот метод является асинхронным. Если метод возвращает S_OK, сеанс мультимедиа отправляет событие MESessionTopologySet после завершения операции. Если сеанс мультимедиа приостановлен до остановки, сеанс мультимедиа не отправляет событие MESessionTopologySet до следующего вызова IMFMediaSession::Start

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header mfidl.h
Библиотека Mfuuid.lib

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

IMFMediaSession