Aktivierungsobjekte
Ein Aktivierungsobjekt ist ein Hilfsobjekt, das zum Erstellen eines anderen Objekts verwendet wird, das einer Klassenfactory ähnlich ist. Aktivierungsobjekte machen die IMFActivate Schnittstelle verfügbar.
Mit einem Aktivierungsobjekt können Sie die Erstellung des Zielobjekts zurückstellen, da Sie ein IMFActivate Zeiger speichern können, ohne das Zielobjekt zu erstellen. Aktivierungsobjekte können auch serialisiert werden und somit zum Erstellen des Zielobjekts in einem anderen Prozess verwendet werden. Beispielsweise werden Aktivierungsobjekte verwendet, um Pipelinekomponenten aus dem Anwendungsprozess an den geschützten Medienpfad (PMP)-Prozess zu marshallen. Aktivierungsobjekte werden auch von bestimmten Enumerationsfunktionen verwendet, die eine Liste IMFActivate Zeiger zurückgeben. Bevor die Anwendung das Zielobjekt erstellt, kann sie Informationen über das Objekt abrufen, indem Attribute für das Aktivierungsobjekt untersucht werden.
Rufen Sie zum Erstellen des Zielobjekts aus einem Aktivierungsobjekt die IMFActivate::ActivateObject-Methode auf. Der Aufrufer muss IMFActivate::ShutdownObject aufrufen, wenn er mit dem erstellten Objekt fertig ist. Häufig erstellt die Anwendung das Aktivierungsobjekt, und die Mediensitzung ruft ActivateObjectauf. In diesem Fall muss die Mediensitzung, nicht die Anwendung, ShutdownObjectaufrufen. In anderen Situationen empfängt die Anwendung einen IMFActivate Zeiger aus der Mediensitzung, und die Anwendung ruft ActivateObject und ShutdownObjectauf. (Weitere Informationen finden Sie beispielsweise unter Wiedergeben geschützter Mediendateien.)
Aktivierungsobjekte können Attribute aufweisen, und die IMFActivate Schnittstelle erbt die IMFAttributes- Schnittstelle. Einige Aktivierungsobjekte verwenden Attribute zum Konfigurieren des erstellten Objekts. Die spezifischen Attribute, die von den einzelnen Objekten unterstützt werden, werden in der Referenz für die Erstellungsfunktion des Aktivierungsobjekts dokumentiert. Legen Sie die Attribute mithilfe des IMFActivate Zeiger fest, den Sie von der Funktion erhalten.
Für die geschützte Wiedergabe werden Aktivierungsobjekte an den PMP-Prozess gemarstet. Zur Unterstützung des Marshallings 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 nicht geschützten Prozess geladen wird.
Um ein benutzerdefiniertes Pipelineobjekt (z. B. eine Medienspüle) 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 IPersistStream::Save und IPersistStream::Load Methoden implementieren, um alle Daten zu marshallen, die Sie zum Konfigurieren des Aktivierungsobjekts benötigen.
Wenn die Mediensitzung die Topologie innerhalb des PMP-Prozesses lädt, ruft sie CoCreateInstance- auf, um eine neue Instanz Ihres Aktivierungsobjekts zu erstellen. Anschließend wird IMFActivate::ActivateObject aufgerufen, um das Pipelineobjekt zu erstellen.
Verwandte Themen