Aktivierungsobjekte

Ein Aktivierungsobjekt ist ein Hilfsobjekt, das verwendet wird, um ein anderes Objekt zu erstellen, das einer Klassenfactory ähnlich ist. Aktivierungsobjekte machen die IMFActivate-Schnittstelle verfügbar.

Mit einem Aktivierungsobjekt können Sie die Erstellung des Zielobjekts verzögern, da Sie einen IMFActivate-Zeiger halten können, ohne das Zielobjekt zu erstellen. Aktivierungsobjekte können auch serialisiert und somit zum Erstellen des Zielobjekts in einem anderen Prozess verwendet werden. Beispielsweise werden Aktivierungsobjekte verwendet, um Pipelinekomponenten aus dem Anwendungsprozess in den PMP-Prozess (Protected Media Path) zu marshallen. Aktivierungsobjekte werden auch von bestimmten Enumerationsfunktionen verwendet, die eine Liste von IMFActivate-Zeigern zurückgeben. Bevor die Anwendung das Zielobjekt erstellt, kann sie Informationen über das Objekt abrufen, indem sie Attribute für das Aktivierungsobjekt untersucht.

Um das Zielobjekt aus einem Aktivierungsobjekt zu erstellen, rufen Sie die IMFActivate::ActivateObject-Methode auf. Der Aufrufer muss IMFActivate::ShutdownObject aufrufen, wenn dies mit dem erstellten Objekt erfolgt. Häufig erstellt die Anwendung das Aktivierungsobjekt, und die Mediensitzung ruft ActivateObject auf. In diesem Fall muss die Mediensitzung, nicht die Anwendung, ShutdownObject aufrufen. In anderen Situationen empfängt die Anwendung einen IMFActivate-Zeiger aus der Mediensitzung, und die Anwendung ruft ActivateObject und ShutdownObject auf. (Weitere Informationen finden Sie z. B . unter Wiedergeben geschützter Mediendateien.)

Aktivierungsobjekte können Attribute aufweisen, und die IMFActivate-Schnittstelle erbt die IMFAttributes-Schnittstelle . Einige Aktivierungsobjekte verwenden Attribute, um das erstellte Objekt zu konfigurieren. Die spezifischen Attribute, die von jedem Objekt unterstützt werden, sind in der Referenz für die Erstellungsfunktion dieses Aktivierungsobjekts dokumentiert. Legen Sie die Attribute mithilfe des IMFActivate-Zeigers fest, den Sie von der Funktion erhalten.

Für die geschützte Wiedergabe werden Aktivierungsobjekte an den PMP-Prozess gemarst. Um das Marshallen zu unterstützen, muss ein Aktivierungsobjekt die IPersistStream-Schnittstelle verfügbar machen. Darüber hinaus müssen sowohl das Aktivierungsobjekt als auch das erstellte Objekt vertrauenswürdige Komponenten sein, wenn der PMP in einem geschützten Prozess ausgeführt wird. Dies ist keine Anforderung, wenn der PMP in einem ungeschützten Prozess geladen wird.

Um ein benutzerdefiniertes Pipelineobjekt (z. B. eine Mediensenke) innerhalb des PMP-Prozesses zu verwenden, müssen Sie ein Aktivierungsobjekt für Ihr Pipelineobjekt implementieren:

  • Das Aktivierungsobjekt muss IMFActivate und IPersistStream verfügbar machen.
  • Die IPersist::GetClassID-Methode des Aktivierungsobjekts muss die CLSID des Aktivierungsobjekts zurückgeben.
  • Optional können Sie die Methoden IPersistStream::Save und IPersistStream::Load implementieren, um alle Daten zu marshallen, die Sie zum Konfigurieren Ihres Aktivierungsobjekts benötigen.

Wenn die Mediensitzung die Topologie innerhalb des PMP-Prozesses lädt, ruft sie CoCreateInstance auf, um eine neue instance Ihres Aktivierungsobjekts zu erstellen. Anschließend wird IMFActivate::ActivateObject aufgerufen, um das Pipelineobjekt zu erstellen.

Media Foundation Platform-APIs

IMFActivate