共用方式為


IMFMediaSession::SetTopology 方法 (mfidl.h)

在媒體會話上設定拓撲。

語法

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

參數

[in] dwSetTopologyFlags

MFSESSION_SETTOPOLOGY_FLAGS列舉中零個或多個旗標的位OR

[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是完整的拓撲,請在dwSetTopologyFlags參數中設定MFSESSION_SETTOPOLOGY_NORESOLUTION旗標。 否則,拓撲會假設為部分拓撲。 媒體會話會使用拓撲載入器,將部分拓撲解析為完整拓撲。

如果媒體會話目前已暫停或停止, 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
標頭 mfidl.h
程式庫 Mfuuid.lib

另請參閱

IMFMediaSession