Сеанс мультимедиа PMP
Приложение может создать сеанс мультимедиа в отдельном процессе, который называется процессом защищенного пути к мультимедиа (PMP). Main целью процесса PMP является включение воспроизведения защищенного содержимого с помощью управления цифровыми правами (DRM). По умолчанию процесс PMP создается в защищенной среде (PE). В pe можно загружать только доверенные подписанные компоненты. Дополнительное преимущество процесса PMP заключается в том, что он изолирует процесс приложения от конвейера мультимедиа. Дополнительные сведения о процессе PMP см. в разделе Защищенный путь к носителю.
Чтобы создать сеанс мультимедиа в процессе PMP, вызовите функцию MFCreatePMPMediaSession . При необходимости можно передать флаг MFPMPSESSION_UNPROTECTED_PROCESS . Если этот флаг установлен, процесс PMP создается внутри незащищенного процесса, а не процесса PE. Незащищенный процесс нельзя использовать для воспроизведения DRM, но он дает преимущества изоляции процесса.
Функция MFCreatePMPMediaSession возвращает указатель на прокси-объект для сеанса мультимедиа. Приложение взаимодействует с сеансом мультимедиа через прокси-сервер.
По умолчанию, когда приложение создает топологию, источник мультимедиа создается внутри процесса приложения. В процессе PMP создается прокси-сервер для источника мультимедиа. Источник мультимедиа может создавать объекты внутри процесса PMP с помощью интерфейса IMFPMPHost . Например, для поддержки DRM источник мультимедиа создает объект, называемый центром доверия входных данных (ITA). ITA необходимо создать внутри процесса PMP. (Дополнительные сведения об ITA см. в разделе Защищенный путь к носителю.) Чтобы использовать интерфейс IMFPMPHost , сделайте следующее:
- Источник мультимедиа должен реализовывать интерфейс IMFPMPClient .
- Во время разрешения топологии прокси-сервер сеанса мультимедиа вызывает метод IMFPMPClient::SetPMPHost в источнике мультимедиа.
- Источник мультимедиа вызывает IMFPMPHost::CreateObjectByCLSID для создания объекта внутри процесса PMP. Объект должен иметь зарегистрированный ИДЕНТИФИКАТОР CLSID. Кроме того, для загрузки внутри среды предустановки объект должен быть доверенным и иметь цифровую подпись. Сведения о компонентах защищенного мультимедиа для подписывания кода см. в техническом документе Подписывание кода для компонентов защищенного носителя в Windows Vista.
На следующем рисунке показан источник мультимедиа, созданный в процессе приложения.
Другой альтернативой является создание источника мультимедиа в сеансе PMP.
Задайте атрибут MF_SESSION_REMOTE_SOURCE_MODE при создании сеанса мультимедиа. Атрибуты конфигурации указываются в параметре pConfiguration функции MFCreatePMPMediaSession .
Вызовите MFGetService в сеансе мультимедиа, чтобы получить указатель на интерфейс IMFPMPHost . Идентификатор службы — MF_PMP_SERVICE.
Вызовите IMFPMPHost::CreateObjectByCLSID с идентификатором класса CLSID_MFSourceResolver , чтобы создать сопоставитель источника в процессе PMP. Метод возвращает указатель на прокси-сервер для сопоставителя источника.
Вызовите IMFSourceResolver::BeginCreateObjectFromURL или IMFSourceResolver::BeginCreateObjectFromByteStream , чтобы создать источник мультимедиа.
Примечание
В этом случае необходимо использовать асинхронные версии этих методов, так как синхронные версии не могут быть удалены.
На следующем рисунке показан источник мультимедиа, созданный в процессе PMP.
Связанные темы