Objets d’activation

Un objet d’activation est un objet d’assistance utilisé pour créer un autre objet, un peu similaire à une fabrique de classes. Les objets d’activation exposent l’interface IMFActivate .

Un objet d’activation vous permet de différer la création de l’objet cible, car vous pouvez conserver un pointeur IMFActivate sans créer l’objet cible. Les objets d’activation peuvent également être sérialisés et donc utilisés pour créer l’objet cible dans un autre processus. Par exemple, les objets d’activation sont utilisés pour marshaler les composants de pipeline du processus d’application vers le processus PMP (Protected Media Path). Les objets d’activation sont également utilisés par certaines fonctions d’énumération qui retournent une liste de pointeurs IMFActivate . Avant que l’application ne crée l’objet cible, elle peut obtenir des informations sur l’objet en examinant les attributs de l’objet d’activation.

Pour créer l’objet cible à partir d’un objet d’activation, appelez la méthode IMFActivate::ActivateObject . L’appelant doit appeler IMFActivate::ShutdownObject lorsqu’il utilise l’objet créé. Souvent, l’application crée l’objet d’activation et la session multimédia appelle ActivateObject. Dans ce cas, la session multimédia, et non l’application, doit appeler ShutdownObject. Dans d’autres situations, l’application reçoit un pointeur IMFActivate de la session multimédia et l’application appelle ActivateObject et ShutdownObject. (Par exemple, consultez Guide pratique pour lire des fichiers multimédias protégés.)

Les objets d’activation peuvent avoir des attributs, et l’interface IMFActivate hérite de l’interface IMFAttributes . Certains objets d’activation utilisent des attributs pour configurer l’objet créé. Les attributs spécifiques pris en charge par chaque objet sont documentés dans la référence pour la fonction de création de cet objet d’activation. Définissez les attributs à l’aide du pointeur IMFActivate que vous recevez de la fonction.

Pour la lecture protégée, les objets d’activation sont marshalés sur le processus PMP. Pour prendre en charge le marshaling, un objet d’activation doit exposer l’interface IPersistStream . En outre, l’objet d’activation et l’objet créé doivent être des composants approuvés si le PMP s’exécute dans un processus protégé. Il ne s’agit pas d’une exigence lorsque le PMP est chargé dans un processus non protégé.

Pour utiliser un objet pipeline personnalisé (tel qu’un récepteur multimédia) à l’intérieur du processus PMP, vous devez implémenter un objet d’activation pour votre objet pipeline :

  • L’objet d’activation doit exposer IMFActivate et IPersistStream.
  • La méthode IPersist::GetClassID de l’objet d’activation doit retourner le CLSID de l’objet d’activation.
  • Si vous le souhaitez, vous pouvez implémenter les méthodes IPersistStream::Save et IPersistStream::Load pour marshaler toutes les données dont vous avez besoin pour configurer votre objet d’activation.

Lorsque la session multimédia charge la topologie à l’intérieur du processus PMP, elle appelle CoCreateInstance pour créer une instance de votre objet d’activation. Ensuite, il appelle IMFActivate::ActivateObject pour créer l’objet de pipeline.

API de plateforme Media Foundation

FMIActiver