COPP 概述

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

下面是应用程序使用认证输出保护协议 (COPP) 时必须执行的基本步骤。

获取驱动程序的证书链

  1. 生成 DirectShow 播放图,使用视频混合呈现器 (VMR-7 或 VMR-9) 或 增强的视频呈现器 筛选器 (EVR) 来呈现视频。
  2. 查询 VMR 以获取 IAMCertifiedOutputProtection 接口。
  3. 调用 IAMCertifiedOutputProtection::KeyExchange。 此方法从驱动程序返回 128 位随机数,以及包含驱动程序的 2048 位 RSA 公钥的证书链。

验证证书链

  1. 验证证书链。 如果证书链无效,请停止。
  2. (CRL) 检查证书吊销列表。 如果证书链中的任何证书出现在吊销列表中,请停止。
  3. 从证书链中获取 RSA 公钥。

初始化 COPP 会话

  1. 生成 128 位 AES 会话密钥。 此密钥用于对数据进行签名,并验证签名的数据是否未被篡改。
  2. 生成两个加密安全的 32 位随机数。 第一个是状态序列号,第二个是命令序列号。 应用程序每次发送命令或状态请求时,都会递增相应的序列号,并将此编号包含在 COPP 命令或请求数据中。
  3. 连接图形驱动程序中的 128 位随机数、AES 会话键、状态序列号和命令序列号。 使用驱动程序的公钥加密此字节数组,并将结果传递给 IAMCertifiedOutputProtection::SessionSequenceStart

发送 COPP 命令和状态请求

  1. 通过调用 IAMCertifiedOutputProtection::P rotectionStatus 来查询可用的保护类型和其他信息。
  2. 通过调用 IAMCertifiedOutputProtection::P rotectionCommand 来设置所需的保护级别。
  3. 定期查询当前本地保护级别。 如果本地保护级别发生意外更改或检测到问题,请停止播放。

使用认证输出保护协议 (COPP)