Delen via


Activeringsobjecten

Een activeringsobject is een helperobject dat wordt gebruikt om een ander object te maken, enigszins vergelijkbaar met een klassefactory. Activeringsobjecten maken de interface IMFActivate beschikbaar.

Met een activeringsobject kunt u het maken van het doelobject uitstellen, omdat u een IMFActivate aanwijzer kunt vasthouden zonder het doelobject te maken. Activeringsobjecten kunnen ook worden geserialiseerd en dus worden gebruikt om het doelobject in een ander proces te maken. Activeringsobjecten worden bijvoorbeeld gebruikt voor marshal pipeline-onderdelen van het toepassingsproces naar het PMP-proces (Protected Media Path). Activeringsobjecten worden ook gebruikt door bepaalde opsommingsfuncties die een lijst met IMFActivate pointers retourneren. Voordat de toepassing het doelobject maakt, kan het informatie over het object ophalen door kenmerken van het activeringsobject te onderzoeken.

Als u het doelobject wilt maken op basis van een activeringsobject, roept u de methode IMFActivate::ActivateObject aan. De beller moet IMFActivate::ShutdownObject aanroepen wanneer het object is gemaakt. Vaak maakt de toepassing het activeringsobject en roept de mediasessie aan ActivateObject. In dat geval moet de mediasessie, niet de toepassing, ShutdownObjectaanroepen. In andere situaties ontvangt de toepassing een IMFActivate pointer van de mediasessie en roept de toepassing ActivateObject en ShutdownObjectaan. (Zie bijvoorbeeld Beveiligde mediabestanden afspelen.)

Activeringsobjecten kunnen kenmerken hebben en de IMFActivate interface neemt de IMFAttributes interface over. Sommige activeringsobjecten gebruiken kenmerken om het gemaakte object te configureren. De specifieke kenmerken die door elk object worden ondersteund, worden beschreven in de verwijzing voor de aanmaakfunctie van dat activeringsobject. Stel de kenmerken in met behulp van de IMFActivate pointer die u van de functie ontvangt.

Voor beveiligd afspelen worden activeringsobjecten aan het PMP-proces gekoppeld. Ter ondersteuning van marshaling moet een activeringsobject de interface IPersistStream beschikbaar maken. Bovendien moeten zowel het activeringsobject als het gemaakte object vertrouwde onderdelen zijn als de PMP wordt uitgevoerd in een beveiligd proces. Dit is geen vereiste wanneer de PMP wordt geladen in een niet-beveiligd proces.

Als u een aangepast pijplijnobject (zoals een mediasink) in het PMP-proces wilt gebruiken, moet u een activeringsobject implementeren voor uw pijplijnobject:

  • Het activeringsobject moet IMFActivate en IPersistStreambeschikbaar maken.
  • De IPersist::GetClassID methode van het activeringsobject moet de CLSID van het activeringsobject retourneren.
  • U kunt desgewenst de IPersistStream::Save en IPersistStream::Load methods to marshal any data that you need to configure your activation object.

Wanneer de mediasessie de topologie in het PMP-proces laadt, wordt CoCreateInstance aangeroepen om een nieuw exemplaar van uw activeringsobject te maken. Vervolgens wordt IMFActivate::ActivateObject aangeroepen om het pijplijnobject te maken.

Media Foundation Platform-API's

IMFActivate