Freigeben über


PMP-Mediensitzung

Eine Anwendung kann die Mediensitzung in einem separaten Prozess erstellen, der als geschützter Medienpfad (PMP) bezeichnet wird. Der Standard Zweck des PMP-Prozesses besteht darin, die Wiedergabe geschützter Inhalte mithilfe von Digital Rights Management (DRM) 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 er den Anwendungsprozess von der Medienpipeline isoliert. Weitere Informationen zum PMP-Prozess finden Sie unter Pfad zu geschützten Medien.

Um die Mediensitzung innerhalb des PMP-Prozesses zu erstellen, rufen Sie die MfCreatePMPMediaSession-Funktion auf. Optional können Sie das flag MFPMPSESSION_UNPROTECTED_PROCESS übergeben. Wenn dieses Flag festgelegt ist, wird der PMP-Prozess in einem nicht geschützten Prozess und nicht in einem PE-Prozess erstellt. Der nicht geschü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.

Abbildung der Mediensitzung innerhalb des pmp-Prozesses

Wenn die Anwendung eine Topologie erstellt, wird die Medienquelle standardmäßig innerhalb des Anwendungsprozesses erstellt. Ein Proxy für die Medienquelle wird innerhalb des PMP-Prozesses 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 Eingabevertrauensautorität (Input Trust Authority , ITA) bezeichnet wird. Der ITA muss innerhalb des PMP-Prozesses erstellt werden. (Weitere Informationen zu ITAs finden Sie unter Pfad für geschützte Medien.) Gehen Sie wie folgt vor, um die IMFPMPHost-Schnittstelle zu verwenden:

  1. Die Medienquelle muss die IMFPMPClient-Schnittstelle implementieren.
  2. Während der Topologieauflösung ruft der Mediensitzungsproxy die IMFPMPClient::SetPMPHost-Methode für die Medienquelle auf.
  3. Die Medienquelle ruft IMFPMPHost::CreateObjectByCLSID auf, um das Objekt innerhalb des PMP-Prozesses zu erstellen. Das Objekt muss über eine registrierte CLSID verfügen. Außerdem muss das Objekt vertrauenswürdig und digital signiert sein, um es innerhalb des PE zu laden. Informationen zu geschützten Medienkomponenten für die Codesignatur finden Sie im Whitepaper Codesignatur für geschützte Medienkomponenten in Windows Vista.

Die folgende Abbildung zeigt die Medienquelle, die im Anwendungsprozess erstellt wurde.

Eine Abbildung einer Medienquelle im Anwendungsprozess.

Eine weitere Alternative besteht darin, die Medienquelle innerhalb der PMP-Sitzung zu erstellen.

  1. Legen Sie das attribut MF_SESSION_REMOTE_SOURCE_MODE fest, wenn Sie die Mediensitzung erstellen. Konfigurationsattribute werden im pConfiguration-Parameter der MFCreatePMPMediaSession-Funktion angegeben.

  2. Rufen Sie MFGetService in der Mediensitzung auf, um einen Zeiger auf die IMFPMPHost-Schnittstelle zu erhalten. Der Dienstbezeichner ist MF_PMP_SERVICE.

  3. 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.

  4. Rufen Sie IMFSourceResolver::BeginCreateObjectFromURL oder IMFSourceResolver::BeginCreateObjectFromByteStream auf, um die Medienquelle zu erstellen.

    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.

Eine Abbildung einer Medienquelle im pmp-Prozess.

Wiedergeben geschützter Mediendateien

Mediensitzung

Pfad für geschützte Medien