DirectShow 中的 DRM 支持

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

在 DirectShow 中读取和写入受 DRM 保护的文件的方式与直接使用 Windows Media Format SDK 的方式基本相同。 首先,需要从 Microsoft 单独获取的 wmstubdrm 静态库。 此外,必须实现 IKeyProvider 接口,使应用程序能够在启用 DRM 时访问 Windows Media Format SDK 运行时对象。

应用 DRM 版本 1 保护时,请使用 IWMHeaderInfo 接口,该接口按照 在 DirectShow 中读取 ASF 文件中所述获得。 应用 DRM 版本 7 保护时,通过在 WM ASF 编写器筛选器上调用 QueryService 来获取 IWMDRMWriter 接口,如本主题后面的代码片段所示。

所有其他特定于 DRM 的配置与 启用 DRM 支持中所述完全相同。 使用 QueryServiceWM ASF 读取器筛选器获取 IWMDRMReader 接口。

DirectX 9.0 包含一个示例 PlayWndASF,这是一个已启用 DRM 的 DirectShow 播放器应用程序,该应用程序演示了 DRM 版本 1 和版本 7 许可证获取。 此示例还包括 CKeyProvider 类的实现,该类支持 IKeyProvider 接口。