使用输出保护级别

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

使用 Windows Media Rights Manager 10 SDK 创建的许可证可以使用输出保护级别 (OPL) 指定操作限制。 OPL 允许许可证创建者仅在具有特定技术的设备上允许某些操作。 使用 OPL 的好处是,与以前版本相比,在创建许可证限制方面具有更大的灵活性。 此外,OPL 可扩展,以适应未来的技术。 可以使用 IWMDRMReader2 接口的方法在应用程序中支持此类许可证。

若要读取受指定 OPL 的许可证保护的文件,必须为所需操作检查 OPL。 许可证中的 OPL 必须允许应用程序使用的输出技术。 例如,某些受保护音频的许可证可能需要使用安全音频路径来播放它。

配置读取器以评估输出保护级别

必须先调用 IWMDRMReader2::SetEvaluateOutputLevelLicenses 方法,为 fEvaluate 参数传递 TRUE,然后才能为读取器中加载的文件检查 OPL。 如果不调用此方法,则要求 OPL 的许可证对应用程序不可见。

评估复制输出保护级别

若要获取复制操作的输出保护级别,请调用 IWMDRMReader2::GetCopyOutputLevels 方法。 从调用接收的数据存储在 DRM_COPY_OPL 结构中。 结构包含基本输出保护级别,该级别指定许可证中复制操作的最低输出级别。 但是,DRM_COPY_OPL结构还包含两个技术标识符列表:一个用于评级低于基本 OPL 的允许技术,另一个用于评级等于或高于基本 OPL 但受许可证限制的技术。 必须检查包含和排除项,以确保许可证允许应用程序使用的技术。

评估播放输出保护级别

若要获取播放操作的输出保护级别,请调用 IWMDRMReader2::GetPlayOutputLevels 方法。 从调用接收的数据存储在 DRM_PLAY_OPL 结构中。 结构包含多个其他结构。 播放操作的基本输出保护级别存储在DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS结构中, (DRM_PLAY_OPL) 的 minOPL 成员,该成员定义以各种格式播放内容所需的最低 OPL。 必须为应用程序提供的输出格式类型检查 成员。

DRM_PLAY_OPL结构定义了两种类型的限制:要求下采样和允许的视频输出保护标识符。

必需的向下采样定义为输出技术标识符列表, (DRM_PLAY_OPLoplIdDownsample 成员) ,如果使用,则仅当内容先向下采样到较低比特率时,才能接收要播放的内容。

允许的视频输出保护标识符定义为视频输出技术的列表,其中包含每个技术的配置信息。

处理多个许可证

某些文件在本地许可证存储中可能有多个与之关联的许可证。 评估正在读取的文件的 OPL 时,可以通过调用 IWMDRMReader2::TryNextLicense 方法检查获取其他许可证。 应继续尝试许可证,直到找到允许要执行的操作的许可证,或者直到 TryNextLicense 返回DRM_S_FALSE,这表示不再有许可证。

在某些情况下,文件可能具有关联的许可证,该许可证需要应用程序不支持的 OPL。 在这种情况下,必须检查附加许可证,因为可能存在未指定 OPL 的许可证。

注意 此 SDK 的基于 x64 的版本不支持 DRM。

启用 DRM 支持

IWMDRMReader2 接口