开发和调试 DRM 驱动程序

以下核对清单可能有助于驱动程序编写人员避开一些常见的陷阱:

  • 如果驱动程序在受 DRM 保护的内容播放时禁用波次输出捕获和 S/PDIF 输出,驱动程序应记得在受 DRM 保护的内容播放完毕(且 DRM 缓冲区已销毁)后再次启用它们。

  • 如果设备执行硬件混合,驱动程序应跟踪在将流添加到混合或从混合中移除时发生的复合使用权限的任何更改。 例如,每当混合包含一个或多个受复制保护的 DRM 流时,应将捕获设为静音。 如果在播放受保护的混合时启用捕获,它应保持静音。

  • 更改筛选器图或与流关联的属性设置后,驱动程序可能需要立即更新该流的复制保护和输出启用设置。 驱动程序应同步其操作,以防止受保护的内容复制到捕获缓冲区或数字输出。 例如,当捕获多路复用器的输入流发生更改时,驱动程序不应允许安全内容在开启和关闭静音所需的时间内变得易受攻击。

DRMK 系统驱动程序可防止内核调试器在播放受 DRM 保护的内容时进行连接。 反调试装甲是 DRMK 用于使受保护内容不透明的多项措施之一。 但是,驱动程序准备好进行测试后,你可以使用以下技术调试其符合 DRM 的功能:

使用此技术,可以播放不受保护的内容,就像它是受 DRM 保护的内容一样,但要避免禁用调试器。

例如,可以使用调试器来验证驱动程序是否可阻止记录内容。 通过更改 SndVol32 程序的音量和静音设置,尝试欺骗驱动程序通过捕获 MUX 启用波次输出流录制。 滑块应反映对其设置所做的更改,这些更改是永久性的,但捕获 MUX 应继续将波次输出流静音,直到“受保护的”内容完成播放为止。 只有到那时,新设置才会生效。