共用方式為


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 的詳細資訊,請參閱 受保護的媒體路徑。若要使用 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 程式中媒體來源的圖例。

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

媒體會話

受保護的媒體路徑