PMP 미디어 세션
애플리케이션은 PMP(보호된 미디어 경로) 프로세스라는 별도의 프로세스에서 미디어 세션을 만들 수 있습니다. PMP 프로세스의 기본 목적은 DRM(디지털 권한 관리)을 사용하여 보호된 콘텐츠를 재생하도록 설정하는 것입니다. 기본적으로 PMP 프로세스는 PE(보호된 환경) 내에 만들어집니다. 신뢰할 수 있는 서명된 구성 요소만 PE 내부에 로드할 수 있습니다. PMP 프로세스의 보조 이점은 애플리케이션 프로세스를 미디어 파이프라인에서 격리한다는 것입니다. PMP 프로세스에 대한 자세한 내용은 보호된 미디어 경로를 참조하세요.
PMP 프로세스 내에서 미디어 세션을 만들려면 MFCreatePMPMediaSession 함수를 호출합니다 . 필요에 따라 MFPMPSESSION_UNPROTECTED_PROCESS 플래그를 전달할 수 있습니다. 이 플래그가 설정된 경우 PMP 프로세스는 PE 프로세스가 아닌 보호되지 않는 프로세스 내에 만들어집니다. 보호되지 않는 프로세스는 DRM 재생에 사용할 수 없지만 프로세스 격리의 이점을 제공합니다.
MFCreatePMPMediaSession 함수는 미디어 세션의 프록시 개체에 대한 포인터를 반환합니다. 애플리케이션은 프록시를 통해 미디어 세션과 통신합니다.
기본적으로 애플리케이션이 토폴로지를 만들 때 미디어 원본은 애플리케이션 프로세스 내에 만들어집니다. 미디어 원본에 대한 프록시는 PMP 프로세스 내에 만들어집니다. 미디어 원본은 IMFPMPHost 인터페이스를 사용하여 PMP 프로세스 내에 개체를 만들 수 있습니다. 예를 들어 DRM을 지원하기 위해 미디어 원본은 ITA( 입력 신뢰 기관 )라는 개체를 만듭니다. ITA는 PMP 프로세스 내에서 만들어야 합니다. (ITA에 대한 자세한 내용은 보호된 미디어 경로를 참조하세요.) IMFPMPHost 인터페이스를 사용하려면 다음을 수행합니다.
- 미디어 원본은 IMFPMPClient 인터페이스를 구현해야 합니다.
- 토폴로지 확인 중에 미디어 세션 프록시는 미디어 원본에서 IMFPMPClient::SetPMPHost 메서드를 호출합니다.
- 미디어 소스는 IMFPMPHost::CreateObjectByCLSID 를 호출하여 PMP 프로세스 내에서 개체를 만듭니다. 개체에 등록된 CLSID가 있어야 합니다. 또한 PE 내부에 로드하려면 개체를 신뢰할 수 있고 디지털 서명해야 합니다. 보호된 미디어 구성 요소에 대한 코드 서명에 대한 자세한 내용은 Windows Vista의 보호된 미디어 구성 요소에 대한 백서 코드 서명을 참조하세요.
다음 그림에서는 애플리케이션 프로세스에서 만든 미디어 원본을 보여 줍니다.
또 다른 대안은 PMP 세션 내에서 미디어 원본을 만드는 것입니다.
미디어 세션을 만들 때 MF_SESSION_REMOTE_SOURCE_MODE 특성을 설정합니다. 구성 특성은 MFCreatePMPMediaSession 함수의 pConfiguration 매개 변수에 지정됩니다.
미디어 세션에서 MFGetService 를 호출하여 IMFPMPHost 인터페이스에 대한 포인터를 가져옵니다. 서비스 식별자가 MF_PMP_SERVICE.
클래스 식별자 CLSID_MFSourceResolver사용하여 IMFPMPHost::CreateObjectByCLSID를 호출하여 PMP 프로세스 내에서 원본 확인자를 만듭니다. 메서드는 원본 확인자의 프록시에 대한 포인터를 반환합니다.
IMFSourceResolver::BeginCreateObjectFromURL 또는 IMFSourceResolver::BeginCreateObjectFromByteStream을 호출하여 미디어 원본을 만듭니다.
참고
이 경우 동기 버전은 원격으로 사용할 수 없으므로 이러한 메서드의 비동기 버전을 사용해야 합니다.
다음 그림에서는 PMP 프로세스에서 만든 미디어 원본을 보여 줍니다.
관련 항목