Objetos de activación
Un objeto de activación es un objeto auxiliar que se usa para crear otro objeto, algo similar a un generador de clases. Los objetos de activación exponen la interfazIMFActivate.
Un objeto de activación le permite aplazar la creación del objeto de destino, ya que se puede mantener en un IMFActivate puntero sin crear el objeto de destino. Los objetos de activación también se pueden serializar y, por tanto, usarse para crear el objeto de destino en otro proceso. Por ejemplo, los objetos de activación se usan para serializar los componentes de canalización del proceso de aplicación al proceso de ruta de acceso multimedia protegida (PMP). Los objetos de activación también se usan en determinadas funciones de enumeración que devuelven una lista de IMFActivate punteros. Antes de que la aplicación cree el objeto de destino, puede obtener información sobre el objeto examinando los atributos del objeto de activación.
Para crear el objeto de destino a partir de un objeto de activación, llame al método IMFActivate::ActivateObject. El autor de la llamada debe llamar a IMFActivate::ShutdownObject cuando haya terminado de usar el objeto creado. A menudo, la aplicación crea el objeto de activación y la sesión multimedia llama a ActivateObject. En ese caso, la sesión multimedia, no la aplicación, debe llamar a ShutdownObject. En otras situaciones, la aplicación recibe un punteroIMFActivate desde la sesión multimedia y la aplicación llama a ActivateObject y ShutdownObject. (Por ejemplo, vea Cómo reproducir archivos multimedia protegidos).
Los objetos de activación pueden tener atributos y la interfaz IMFActivate hereda la interfaz IMFAttributes. Algunos objetos de activación usan atributos para configurar el objeto creado. Los atributos específicos admitidos por cada objeto se documentan en la referencia de esa función de creación del objeto de activación. Establezca los atributos mediante el IMFActivate puntero que recibe de la función.
Para la reproducción protegida, los objetos de activación se serializarán en el proceso PMP. Para admitir la serialización, un objeto de activación debe exponer la interfaz IPersistStream. Además, tanto el objeto de activación como el objeto creado deben ser componentes de confianza si el PMP se ejecuta en un proceso protegido. Esto no es un requisito cuando el PMP se carga en un proceso desprotegido.
Para usar un objeto de canalización personalizado (como un receptor multimedia) dentro del proceso PMP, debe implementar un objeto de activación para el objeto de canalización:
- El objeto de activación debe exponer IMFActivate y IPersistStream.
- El método IPersist::GetClassID del objeto de activación debe devolver el CLSID del objeto de activación.
- Opcionalmente, puede implementar los métodos IPersistStream::Save y IPersistStream::Load para serializar los datos que necesite para configurar el objeto de activación.
Cuando la sesión multimedia carga la topología dentro del proceso PMP, llama a CoCreateInstance para crear una nueva instancia del objeto de activación. A continuación, llama a IMFActivate::ActivateObject para crear el objeto de canalización.
Temas relacionados