PMP-Mediensitzung
Eine Anwendung kann die Mediensitzung in einem separaten Prozess erstellen, der als Geschützter Medienpfad (PMP)-Prozess 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 in ein 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.
Rufen Sie zum Erstellen der Mediensitzung im PMP-Prozess die MFCreatePMediaSession--Funktion auf. Optional können Sie das MFPMPSESSION_UNPROTECTED_PROCESS Flag übergeben. Wenn dieses Kennzeichen festgelegt ist, wird der PMP-Prozess innerhalb eines ungeschützten Prozesses und nicht in einem PE-Prozess erstellt. Der nicht geschützte Prozess kann nicht für die DRM-Wiedergabe verwendet werden, bietet ihnen aber 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 innerhalb des Anwendungsprozesses erstellt. Innerhalb des PMP-Prozesses wird ein Proxy für die Medienquelle erstellt. Die Medienquelle kann Objekte innerhalb des PMP-Prozesses mithilfe der IMFPMPHost--Schnittstelle erstellen. Um z. B. DRM zu unterstützen, erstellt eine Medienquelle ein Objekt, das als Eingabevertrauensstellen (ITA) bezeichnet wird. Das ITA muss innerhalb des PMP-Prozesses erstellt werden. (Weitere Informationen zu ITAs finden Sie unter Geschützter Medienpfad.) 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. Um innerhalb des PE zu laden, muss das Objekt vertrauenswürdig und digital signiert sein. Informationen zur Codesignierung geschützter Medienkomponenten finden Sie im Whitepaper Codesignatur für geschützte Medienkomponenten 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 attribut MF_SESSION_REMOTE_SOURCE_MODE beim Erstellen der Mediensitzung fest. Konfigurationsattribute werden im pConfiguration Parameter der funktion MFCreatePMPMediaSession 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 Quelllöser innerhalb des PMP-Prozesses zu erstellen. Die Methode gibt einen Zeiger auf einen Proxy für den Quelllöser zurück.
Rufen Sie IMFSourceResolver::BeginCreateObjectFromURL oder IMFSourceResolver::BeginCreateObjectFromByteStream auf, um die Medienquelle zu erstellen.
Anmerkung
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.
Verwandte Themen