Работа с уровнями защиты выходных данных

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Лицензии, созданные с помощью пакета SDK 10 для Windows Media Rights Manager, могут указывать ограничения действий с помощью уровней защиты выходных данных (OPL). Списки opls позволяют создателю лицензий разрешать некоторые действия только на устройствах с определенными технологиями. Преимущества использования opl заключаются в том, что вы получаете большую гибкость при создании ограничений лицензий, чем в предыдущих версиях. Кроме того, списки opl можно расширить для использования будущих технологий. Такие лицензии можно поддерживать в приложениях с помощью методов интерфейса IWMDRMReader2 .

Чтобы считывать файлы, защищенные лицензией, указывающей списки opl, необходимо проверка opl для нужного действия. Технология вывода, используемая приложением, должна быть разрешена OPL в лицензии. Например, для некоторых лицензий на защищенный звук может потребоваться использовать безопасный звуковой путь для воспроизведения.

Настройка средства чтения для оценки уровней защиты выходных данных

Прежде чем проверка opls для файлов, загруженных в средство чтения, необходимо вызвать метод IWMDRMReader2::SetEvaluateOutputLevelLicenses, передав значение TRUE для параметра fEvaluate. Если этот метод не вызывается, лицензии, требующие opl, не видны приложению.

Оценка уровней защиты выходных данных копирования

Чтобы получить уровни защиты выходных данных для действия копирования, вызовите метод IWMDRMReader2::GetCopyOutputLevels . Данные, полученные в результате вызова, хранятся в DRM_COPY_OPL структуре. Структура содержит базовый уровень защиты выходных данных, который задает минимальный уровень выходных данных для действия копирования в лицензии. Однако структура DRM_COPY_OPL также содержит два списка идентификаторов технологий: один для разрешенных технологий с более низкой оценкой OPL, чем базовый, и один для технологий, рейтинг которых равен или выше базового OPL, но ограничен лицензией. Необходимо проверка включения и исключения, чтобы гарантировать, что технология, используемая приложением, разрешена лицензией.

Оценка уровней защиты выходных данных воспроизведения

Чтобы получить уровни защиты выходных данных для действия воспроизведения, вызовите метод IWMDRMReader2::GetPlayOutputLevels . Данные, полученные в результате вызова, хранятся в DRM_PLAY_OPL структуре. Структура содержит несколько других структур. Базовые уровни защиты выходных данных для действия воспроизведения хранятся в структуре DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS ( члене minOPLDRM_PLAY_OPL), которая определяет минимальный уровень OPL, необходимый для воспроизведения содержимого в различных форматах. Необходимо проверка член для типа форматов вывода, предоставляемых приложением.

Структура DRM_PLAY_OPL определяет два типа ограничений: обязательная выборка с пониженной выборкой и разрешенные идентификаторы защиты вывода видео.

Требуемая пониженная выборка определяется как список идентификаторов технологии вывода (элемент oplIdDownsampleDRM_PLAY_OPL), которые при использовании могут получать содержимое для воспроизведения только в том случае, если содержимое сначала выполняется с пониженной скоростью.

Допустимые идентификаторы защиты вывода видео определяются как список технологий вывода видео с информацией о конфигурации для каждого из них.

Обработка нескольких лицензий

Некоторые файлы могут иметь несколько связанных с ними лицензий в локальном хранилище лицензий. При оценке opls для считываемого файла можно проверка дополнительные лицензии, вызвав метод IWMDRMReader2::TryNextLicense. Вы должны продолжать пробовать лицензии, пока не найдете одну, которая позволяет выполнить действие, или пока TryNextLicense не вернет DRM_S_FALSE, что означает, что лицензий больше нет.

В некоторых случаях файл может иметь связанную лицензию, требующую OPL, которую приложение не поддерживает. В этом случае важно проверка дополнительных лицензий, так как может существовать лицензия, не указывающая списки OPL.

Примечание DRM не поддерживается в 64-разрядной версии этого пакета SDK.

Включение поддержки DRM

Интерфейс IWMDRMReader2