Сеанс мультимедиа PMP

Приложение может создать сеанс мультимедиа в отдельном процессе, который называется процессом защищенного пути к мультимедиа (PMP). Main целью процесса PMP является включение воспроизведения защищенного содержимого с помощью управления цифровыми правами (DRM). По умолчанию процесс PMP создается в защищенной среде (PE). В pe можно загружать только доверенные подписанные компоненты. Дополнительное преимущество процесса PMP заключается в том, что он изолирует процесс приложения от конвейера мультимедиа. Дополнительные сведения о процессе PMP см. в разделе Защищенный путь к носителю.

Чтобы создать сеанс мультимедиа в процессе PMP, вызовите функцию MFCreatePMPMediaSession . При необходимости можно передать флаг MFPMPSESSION_UNPROTECTED_PROCESS . Если этот флаг установлен, процесс PMP создается внутри незащищенного процесса, а не процесса PE. Незащищенный процесс нельзя использовать для воспроизведения DRM, но он дает преимущества изоляции процесса.

Функция MFCreatePMPMediaSession возвращает указатель на прокси-объект для сеанса мультимедиа. Приложение взаимодействует с сеансом мультимедиа через прокси-сервер.

Иллюстрация сеанса мультимедиа в процессе pmp

По умолчанию, когда приложение создает топологию, источник мультимедиа создается внутри процесса приложения. В процессе PMP создается прокси-сервер для источника мультимедиа. Источник мультимедиа может создавать объекты внутри процесса PMP с помощью интерфейса IMFPMPHost . Например, для поддержки DRM источник мультимедиа создает объект, называемый центром доверия входных данных (ITA). ITA необходимо создать внутри процесса PMP. (Дополнительные сведения об ITA см. в разделе Защищенный путь к носителю.) Чтобы использовать интерфейс IMFPMPHost , сделайте следующее:

  1. Источник мультимедиа должен реализовывать интерфейс IMFPMPClient .
  2. Во время разрешения топологии прокси-сервер сеанса мультимедиа вызывает метод IMFPMPClient::SetPMPHost в источнике мультимедиа.
  3. Источник мультимедиа вызывает IMFPMPHost::CreateObjectByCLSID для создания объекта внутри процесса PMP. Объект должен иметь зарегистрированный ИДЕНТИФИКАТОР CLSID. Кроме того, для загрузки внутри среды предустановки объект должен быть доверенным и иметь цифровую подпись. Сведения о компонентах защищенного мультимедиа для подписывания кода см. в техническом документе Подписывание кода для компонентов защищенного носителя в Windows Vista.

На следующем рисунке показан источник мультимедиа, созданный в процессе приложения.

иллюстрация источника мультимедиа в процессе приложения.

Другой альтернативой является создание источника мультимедиа в сеансе PMP.

  1. Задайте атрибут MF_SESSION_REMOTE_SOURCE_MODE при создании сеанса мультимедиа. Атрибуты конфигурации указываются в параметре pConfiguration функции MFCreatePMPMediaSession .

  2. Вызовите MFGetService в сеансе мультимедиа, чтобы получить указатель на интерфейс IMFPMPHost . Идентификатор службы — MF_PMP_SERVICE.

  3. Вызовите IMFPMPHost::CreateObjectByCLSID с идентификатором класса CLSID_MFSourceResolver , чтобы создать сопоставитель источника в процессе PMP. Метод возвращает указатель на прокси-сервер для сопоставителя источника.

  4. Вызовите IMFSourceResolver::BeginCreateObjectFromURL или IMFSourceResolver::BeginCreateObjectFromByteStream , чтобы создать источник мультимедиа.

    Примечание

    В этом случае необходимо использовать асинхронные версии этих методов, так как синхронные версии не могут быть удалены.

     

На следующем рисунке показан источник мультимедиа, созданный в процессе PMP.

Иллюстрация источника мультимедиа в процессе pmp.

Воспроизведение защищенных файлов мультимедиа

Сеанс мультимедиа

Путь к защищенному носителю