IMFMediaSession::SetTopology メソッド (mfidl.h)

メディア セッションのトポロジを設定します。

構文

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

パラメーター

[in] dwSetTopologyFlags

MFSESSION_SETTOPOLOGY_FLAGS列挙からの 0 個以上のフラグのビットごとの OR

[in] pTopology

トポロジ オブジェクトの IMFTopology インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
MF_E_INVALIDREQUEST
メディア セッションの現在の状態では操作を実行できません。
MF_E_SHUTDOWN
メディア セッションがシャットダウンされました。
MF_E_TOPO_INVALID_TIME_ATTRIBUTES
トポロジには、次の属性の 1 つ以上の無効な値があります。
NS_E_DRM_DEBUGGING_NOT_ALLOWED
デバッグ中は、保護されたコンテンツを再生できません。

解説

pTopology が完全なトポロジの場合は、dwSetTopologyFlags パラメーターに MFSESSION_SETTOPOLOGY_NORESOLUTION フラグを設定します。 それ以外の場合、トポロジは部分トポロジであると見なされます。 メディア セッションでは、トポロジ ローダーを使用して、部分的なトポロジを完全なトポロジに解決します。

メディア セッションが現在一時停止または停止されている場合、 SetTopology メソッドは、 次に IMFMediaSession::Start を呼び出すまで有効になりません。

メディア セッションが現在実行中の場合、または次に Start を呼び出した場合、 SetTopology メソッドは次の処理を行います。

  • dwSetTopologyFlagsMFSESSION_SETTOPOLOGY_IMMEDIATE フラグが設定されている場合、メディア セッションは現在のプレゼンテーションを直ちに終了し、保留中のすべてのトポロジをクリアし、pTopology を使用して新しいプレゼンテーションを開始します。
  • それ以外の場合、メディア セッションは pTopology をキューに入れ、現在のプレゼンテーションが完了すると新しいプレゼンテーションを開始します。 現在のプレゼンテーションがない場合は、新しいプレゼンテーションがすぐに開始されます。
  • Windows 7 以降では、 MFSESSION_SETTOPOLOGY_CLEAR_CURRENT フラグを指定して現在のトポロジをクリアし、他の保留中のトポロジはキューに残すこともできます。
このメソッドは非同期です。 メソッドがS_OKを返す場合、メディア セッションは操作の完了時 に MESessionTopologySet イベントを送信します。 メディア セッションが停止するまで現在一時停止されている場合、メディア セッションは次の IMFMediaSession::Start 呼び出しまで MESessionTopologySet イベントを送信しません。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mfidl.h
Library Mfuuid.lib

関連項目

IMFMediaSession