PMP 媒體會話

應用程式可以在稱為「受保護的媒體路徑」的個別進程中建立媒體會話, (PMP) 程式。 PMP 程式的主要目的是使用數位版權管理 (DRM) 來播放受保護的內容。 根據預設,PMP 程式會在受保護的環境內建立, (PE) 。 只有受信任的已簽署元件可以在 PE 內載入。 PMP 程式的次要優點是它會隔離應用程式進程與媒體管線。 如需 PMP 程式的詳細資訊,請參閱 受保護的媒體路徑

若要在 PMP 程式內建立媒體會話,請呼叫 MFCreatePMPMediaSession 函式 。 您可以選擇性地傳入 MFPMPSESSION_UNPROTECTED_PROCESS 旗標。 如果設定此旗標,則會在未受保護的進程內建立 PMP 進程,而不是 PE 進程。 未受保護的進程無法用於 DRM 播放,但會提供程式隔離的優點。

MFCreatePMPMediaSession 函式會傳回媒體會話 Proxy 物件的指標。 應用程式會透過 Proxy 與媒體會話通訊。

pmp 程式內媒體會話的圖例

根據預設,當應用程式建立拓撲時,會在應用程式進程內建立媒體來源。 媒體來源的 Proxy 會在 PMP 程式內建立。 媒體來源可以使用 IMFPMPHost 介面,在 PMP 程式中建立物件。 例如,為了支援 DRM,媒體來源會建立稱為 輸入信任授權單位 的物件, (ITA) 。 ITA 必須在 PMP 程式內建立。 (如需 ITA 的詳細資訊,請參閱 Protected Media Path.) 若要使用 IMFPMPHost 介面,請執行下列動作:

  1. 媒體來源必須實作 IMFPMPClient 介面。
  2. 在拓撲解析期間,媒體會話 Proxy 會在媒體來源上呼叫 IMFPMPClient::SetPMPHost 方法。
  3. 媒體來源會呼叫 IMFPMPHost::CreateObjectByCLSID ,以在 PMP 程式內建立物件。 物件必須具有已註冊的 CLSID。 此外,若要在 PE 內載入,物件必須受到信任並經過數位簽署。 如需程式碼簽署受保護媒體元件的相關資訊,請參閱Windows Vista 中受保護媒體元件的程式碼簽署白皮書

下圖顯示應用程式進程中建立的媒體來源。

應用程式進程中媒體來源的圖例。

另一個替代方法是在 PMP 會話內建立媒體來源。

  1. 當您建立媒體會話時,請設定 MF_SESSION_REMOTE_SOURCE_MODE 屬性。 組態屬性是在MFCreatePMPMediaSession函式的pConfiguration參數中指定。

  2. 在媒體會話上呼叫 MFGetService ,以取得 IMFPMPHost 介面的指標。 服務識別碼 MF_PMP_SERVICE

  3. 使用類別識別碼CLSID_MFSourceResolver呼叫IMFPMPHost::CreateObjectByCLSID,以在 PMP 程式內建立來源解析程式。 方法會傳回來源解析程式的 Proxy 指標。

  4. 呼叫 IMFSourceResolver::BeginCreateObjectFromURLIMFSourceResolver::BeginCreateObjectFromByteStream 以建立媒體來源。

    注意

    在此情況下,您必須使用這些方法的非同步版本,因為同步版本無法遠端。

     

下圖顯示 PMP 程式中建立的媒體來源。

pmp 程式中媒體來源的圖例。

如何播放受保護的媒體檔案

媒體會話

受保護的媒體路徑