执行 DRM 个性化

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

个性化是更新客户端计算机上的 DRM 组件、对其进行加密并使其唯一的过程。 将计算机个性化时,DRM 组件将绑定到计算机,并且无法解码任何其他计算机上的内容。 Windows Media DRM 客户端扩展 API 支持在客户端计算机上个性化 DRM 组件。

通过调用 IWMDRMSecurity::P erformSecurityUpdate 方法执行个性化。 可以调用 PerformSecurityUpdate ,以便仅当服务器上的版本比客户端计算机上安装的版本更新时,它才会个性化,或者可以强制进行个性化,而不考虑相对安全版本。 按需个性化化的标志WMDRM_SECURITY_PERFORM_INDIV。 强制个性化化的标志WMDRM_SECURITY_PERFORM_FORCE_INDIV。

PerformSecurityUpdate 是一个异步调用。 它将快速返回,然后生成事件来提供有关个性化过程的状态信息。 生成的大多数事件将是 MEWMDRMIndividualizationProgress 事件,并且每个事件都有一个关联的 IWMDRMIndividualizationStatus 接口。 若要获取状态接口,必须调用 IMFMediaEvent::GetValue 来检索同一对象上的 IUnknown 指针,然后查询该指针以获取 IWMDRMIndividualizationStatus

可以通过调用 IWMDRMIndividualizeStatus::GetStatus 获取WM_INDIVIDUALIZE_STATUS结构的数据。 生成的每个事件都有其自己的状态对象,因此每次都必须完成获取事件值和查询状态接口的过程。

根据下载的大小,可能有数十或数百个 MEWMDRMIndividualizationProgress 事件。 完成个性化过程后,将生成 MEWMDRMIndividualizationCompleted 事件。

完成个性化后,唯一将反映新个性化状态的现有对象是继承自 IWMDRMSecurity 的对象。 不会更新所有其他现有对象。 必须释放并重新创建任何其他对象,以便它们反映新的个性化状态。

DRM 个性化示例

编程指南

使用媒体基础事件模型

Windows Media DRM 个性化最佳做法