다음을 통해 공유


IMFMediaSession::SetTopology 메서드(mfidl.h)

미디어 세션에서 토폴로지를 설정합니다.

구문

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

매개 변수

[in] dwSetTopologyFlags

MFSESSION_SETTOPOLOGY_FLAGS 열거형에서 0개 이상의 플래그의 비트 OR입니다.

[in] pTopology

토폴로지 개체의 IMFTopology 인터페이스에 대한 포인터입니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
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 플래그를 설정합니다. 그렇지 않으면 토폴로지는 부분 토폴로지로 간주됩니다. 미디어 세션은 토폴로지 로더를 사용하여 부분 토폴로지를 전체 토폴로지로 resolve.

미디어 세션이 현재 일시 중지되거나 중지된 경우 SetTopology 메서드는 IMFMediaSession::Start에 대한 다음 호출까지 적용되지 않습니다.

미디어 세션이 현재 실행 중이거나 Start에 대한 다음 호출에서 SetTopology 메서드는 다음을 수행합니다.

  • MFSESSION_SETTOPOLOGY_IMMEDIATE 플래그가 dwSetTopologyFlags로 설정된 경우 미디어 세션은 현재 프레젠테이션을 즉시 종료하고, 보류 중인 모든 토폴로지를 지우고, pTopology를 사용하여 새 프레젠테이션을 시작합니다.
  • 그렇지 않으면 미디어 세션은 pTopology 를 큐에 대기하고 현재 프레젠테이션이 완료되면 새 프레젠테이션을 시작합니다. 현재 프레젠테이션이 없으면 새 프레젠테이션이 즉시 시작됩니다.
  • Windows 7부터 MFSESSION_SETTOPOLOGY_CLEAR_CURRENT 플래그를 지정하여 현재 토폴로지를 지우지만 큐에 보류 중인 다른 토폴로지를 그대로 둘 수도 있습니다.
이 메서드는 비동기적이며, 메서드가 S_OK 반환하면 작업이 완료되면 Media Session 에서 MESessionTopologySet 이벤트를 보냅니다. 미디어 세션이 현재 중지되도록 일시 중지된 경우 미디어 세션은 IMFMediaSession::Start에 대한 다음 호출까지 MESessionTopologySet 이벤트를 보내지 않습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 mfidl.h
라이브러리 Mfuuid.lib

참고 항목

IMFMediaSession