활성화 개체
활성화 개체는 클래스 팩터리와 유사하게 다른 개체를 만드는 데 사용되는 도우미 개체입니다. 활성화 개체는 IMFActivate 인터페이스를 노출합니다.
활성화 개체를 사용하면 대상 개체를 만들지 않고 IMFActivate 포인터를 유지할 수 있으므로 대상 개체 만들기를 연기할 수 있습니다. 활성화 개체를 직렬화하여 다른 프로세스에서 대상 개체를 만드는 데 사용할 수도 있습니다. 예를 들어 활성화 개체는 파이프라인 구성 요소를 애플리케이션 프로세스에서 PMP(보호된 미디어 경로) 프로세스로 마샬링하는 데 사용됩니다. 활성화 개체는 IMFActivate 포인터 목록을 반환하는 특정 열거형 함수에서도 사용됩니다. 애플리케이션에서 대상 개체를 만들기 전에 활성화 개체의 특성을 검사하여 개체에 대한 정보를 가져올 수 있습니다.
활성화 개체에서 대상 개체를 만들려면 IMFActivate::ActivateObject 메서드를 호출합니다. 생성된 개체를 사용하여 완료되면 호출자가 IMFActivate::ShutdownObject 를 호출해야 합니다. 애플리케이션이 활성화 개체를 만들고 미디어 세션에서 ActivateObject를 호출하는 경우가 많습니다. 이 경우 애플리케이션이 아닌 미디어 세션이 ShutdownObject를 호출해야 합니다. 다른 상황에서 애플리케이션은 미디어 세션에서 IMFActivate 포인터를 수신하고 애플리케이션은 ActivateObject 및 ShutdownObject를 호출합니다. (예를 들어 보호된 미디어 파일을 재생하는 방법을 참조하세요.)
활성화 개체에는 특성이 있을 수 있으며 IMFActivate 인터페이스는 IMFAttributes 인터페이스를 상속합니다. 일부 활성화 개체는 특성을 사용하여 만든 개체를 구성합니다. 각 개체에서 지원하는 특정 특성은 해당 활성화 개체의 생성 함수에 대한 참조에 설명되어 있습니다. 함수에서 수신하는 IMFActivate 포인터를 사용하여 특성을 설정합니다.
보호된 재생의 경우 활성화 개체는 PMP 프로세스에 마샬링됩니다. 마샬링을 지원하려면 활성화 개체가 IPersistStream 인터페이스를 노출해야 합니다. 또한 PMP가 보호된 프로세스에서 실행되는 경우 활성화 개체와 생성된 개체 모두 신뢰할 수 있는 구성 요소여야 합니다. 이는 PMP가 보호되지 않는 프로세스에 로드될 때 요구 사항이 아닙니다.
PMP 프로세스 내에서 사용자 지정 파이프라인 개체(예: 미디어 싱크)를 사용하려면 파이프라인 개체에 대한 활성화 개체를 구현해야 합니다.
- 활성화 개체는 IMFActivate 및 IPersistStream을 노출해야 합니다.
- 활성화 개체의 IPersist::GetClassID 메서드는 활성화 개체의 CLSID를 반환해야 합니다.
- 필요에 따라 IPersistStream::Save 및 IPersistStream::Load 메서드를 구현하여 활성화 개체를 구성하는 데 필요한 모든 데이터를 마샬링할 수 있습니다.
미디어 세션은 PMP 프로세스 내에서 토폴로지를 로드할 때 CoCreateInstance를 호출하여 활성화 개체의 새 instance 만듭니다. 그런 다음 IMFActivate::ActivateObject 를 호출하여 파이프라인 개체를 만듭니다.
관련 항목