Выполнение индивидуализации DRM
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Индивидуализация — это процесс обновления компонента DRM на клиентском компьютере, его шифрования и создания уникальности. При индивидуализации компьютера компонент DRM привязывается к компьютеру и не сможет декодировать содержимое на любом другом компьютере. Расширенные API клиента DRM Windows Media обеспечивают поддержку индивидуализации компонента DRM на клиентских компьютерах.
Индивидуализация выполняется путем вызова метода IWMDRMSecurity::P erformSecurityUpdate . Вы можете вызвать PerformSecurityUpdate , чтобы он был индивидуализироваться только в том случае, если версия на сервере новее, чем версия, установленная на клиентском компьютере, или можно принудительно выполнить индивидуализацию без учета относительных версий безопасности. Флаг для индивидуализации по мере необходимости WMDRM_SECURITY_PERFORM_INDIV. Флаг принудительной индивидуализации WMDRM_SECURITY_PERFORM_FORCE_INDIV.
PerformSecurityUpdate является асинхронным вызовом. Он быстро возвращается, а затем создает события для предоставления сведений о состоянии процесса индивидуализации. Большинство создаваемых событий будут быть событиями MEWMDRMIndividualizationProgress , и каждое из них имеет связанный интерфейс IWMDRMIndividualizationStatus . Чтобы получить интерфейс состояния, необходимо вызвать IMFMediaEvent::GetValue , чтобы получить указатель IUnknown , который находится на том же объекте, а затем запросить у него IWMDRMIndividualizationStatus.
Данные для структуры WM_INDIVIDUALIZE_STATUS можно получить, вызвав IWMDRMIndividualizeStatus::GetStatus. Каждое создаваемое событие имеет свой собственный объект с состоянием, поэтому необходимо каждый раз проходить процесс получения значения события и запрашивать интерфейс состояния.
В зависимости от размера загрузки могут существовать десятки или сотни событий MEWMDRMIndividualizationProgress . После завершения процесса индивидуализации создается событие MEWMDRMIndividualizationCompleted .
После завершения индивидуализации единственными существующими объектами, которые будут отражать новое индивидуализированное состояние, являются объекты, наследуемые от IWMDRMSecurity. Все остальные существующие объекты не обновляются. Необходимо освободить и повторно создать все другие объекты, чтобы они отражали новое индивидуализированное состояние.
Связанные темы