PMP-Mediensitzung
Eine Anwendung kann die Mediensitzung in einem separaten Prozess erstellen, der als PMP-Prozess (Protected Media Path) bezeichnet wird. Der Hauptzweck des PMP-Prozesses besteht darin, die Wiedergabe geschützter Inhalte mithilfe von DRM (Digital Rights Management) zu ermöglichen. Standardmäßig wird der PMP-Prozess in einer geschützten Umgebung (Protected Environment, PE) erstellt. Nur vertrauenswürdige, signierte Komponenten können innerhalb eines PE geladen werden. Ein sekundärer Vorteil des PMP-Prozesses besteht darin, dass der Anwendungsprozess von der Medienpipeline isoliert wird. Weitere Informationen zum PMP-Prozess finden Sie unter Protected Media Path.
Um die Mediensitzung innerhalb des PMP-Prozesses zu erstellen, rufen Sie die MFCreatePMPMediaSession-Funktion auf. Optional können Sie das MFPMPSESSION _ UNPROTECTED _ PROCESS-Flag übergeben. Wenn dieses Flag festgelegt ist, wird der PMP-Prozess in einem nicht geschützten Prozess und nicht in einem PE-Prozess erstellt. Der ungeschützte Prozess kann nicht für die DRM-Wiedergabe verwendet werden, bietet ihnen jedoch die Vorteile der Prozessisolation.
Die MFCreatePMPMediaSession-Funktion gibt einen Zeiger auf ein Proxyobjekt für die Mediensitzung zurück. Die Anwendung kommuniziert über den Proxy mit der Mediensitzung.

Wenn die Anwendung eine Topologie erstellt, wird standardmäßig die Medienquelle im Anwendungsprozess erstellt. Im PMP-Prozess wird ein Proxy für die Medienquelle erstellt. Die Medienquelle kann Objekte innerhalb des PMP-Prozesses mithilfe der IMFPMPHost-Schnittstelle erstellen. Um beispielsweise DRM zu unterstützen, erstellt eine Medienquelle ein Objekt, das als Eingabevertrauensstellungsstelle (Input Trust Authority, ITA) bezeichnet wird. Der ITA muss innerhalb des PMP-Prozesses erstellt werden. (Weitere Informationen zu ITAs finden Sie unter Pfad zu geschützten Medien.) Gehen Sie wie folgt vor, um die IMFPMPHost-Schnittstelle zu verwenden:
- Die Medienquelle muss die IMFPMPClient-Schnittstelle implementieren.
- Während der Topologieauflösung ruft der Mediensitzungsproxy die IMFPMPClient::SetPMPHost-Methode für die Medienquelle auf.
- Die Medienquelle ruft IMFPMPHost::CreateObjectByCLSID auf, um das Objekt innerhalb des PMP-Prozesses zu erstellen. Das -Objekt muss über eine registrierte CLSID verfügen. Darüber hinaus muss das Objekt vertrauenswürdig und digital signiert sein, um es innerhalb des PE zu laden. Informationen zum Signieren geschützter Medienkomponenten finden Sie im Whitepaper Codesignierung für Komponenten geschützter Medien in Windows Vista.
Die folgende Abbildung zeigt die im Anwendungsprozess erstellte Medienquelle.

Eine weitere Alternative besteht darin, die Medienquelle innerhalb der PMP-Sitzung zu erstellen.
- Legen Sie das MF SESSION REMOTE SOURCE _ _ _ _ MODE-Attribut fest, wenn Sie die Mediensitzung erstellen. Konfigurationsattribute werden im pConfiguration-Parameter der MFCreatePMPMediaSession-Funktion angegeben.
- Rufen Sie MFGetService in der Mediensitzung auf, um einen Zeiger auf die IMFPMPHost-Schnittstelle abzurufen. Der Dienstbezeichner ist MF _ PMP _ SERVICE.
- Rufen Sie IMFPMPHost::CreateObjectByCLSID mit dem Klassenbezeichner CLSID _ MFSourceResolver auf, um den Quellresolver innerhalb des PMP-Prozesses zu erstellen. Die -Methode gibt einen Zeiger auf einen Proxy für den Quell resolver zurück.
- Rufen Sie ZUM Erstellen der Medienquelle DIE DATEI ÜBERSOURCEResolver::BeginCreateObjectFromURL oder EINENSOURCEResolver::BeginCreateObjectFromByteStream auf.
Hinweis
In diesem Fall müssen Sie die asynchronen Versionen dieser Methoden verwenden, da die synchronen Versionen nicht remotable sind.
Die folgende Abbildung zeigt die im PMP-Prozess erstellte Medienquelle.
