内容保护 DDI

本部分仅适用于 Windows 7 及更高版本以及 Windows Server 2008 R2 及更高版本的 Windows 操作系统。

内容保护 DDI 是 Direct3D 版本 9 DDI 的扩展,用于保护视频。 内容保护 DDI 包含本节中所述的入口点。

所需的内容保护 DDI 函数

如果在用户模式显示驱动程序中实现内容保护,则驱动程序必须支持以下内容保护 DDI 函数:

内容保护功能

如果用户模式显示驱动程序支持上述每个必需的内容保护 DDI 函数,则仅报告内容保护功能。 Direct3D 运行时使用以下 D3DDDICAPS_TYPE 值来检索有关用户模式显示驱动程序支持的内容保护功能的信息。 当运行时调用 GetCaps 时,运行时在驱动程序的 GetCaps 函数的 pData 参数指向的 D3DDDIARG_GETCAPS 结构的 Type 成员中设置这些D3DDDICAPS_TYPE值。

D3DDDICAPS_GETCONTENTPROTECTIONCAPS
运行时为驱动程序应使用的特定加密和解码组合提供指向 DDICONTENTPROTECTIONCAPS 结构的指针。 驱动程序返回指向填充的 D3DCONTENTPROTECTIONCAPS 结构的指针,该结构描述驱动程序用于加密和解码组合的内容保护功能。 有关 D3DCONTENTPROTECTIONCAPS 的详细信息,请参阅 DirectX SDK 文档。

D3DDDICAPS_GETCERTIFICATESIZE
驱动程序提供指向数字的指针,该数字指定用于通道或加密类型的驱动程序证书的大小(以字节为单位)。 然后,Direct3D 运行时使用此大小分配缓冲区,以保存运行时使用 D3DDDICAPS_GETCERTIFICATE 调用 GetCaps 时运行时收到的证书信息。

D3DDDICAPS_GETCERTIFICATE
运行时提供指向 DDICERTIFICATEINFO 结构的指针,该结构描述驱动程序应检索的证书。

对于经过身份验证的通道,驱动程序使用现有的 OPM 证书,该证书是由 Microsoft 签名的 X.509 证书。

应用程序可以查询驱动程序的证书以确定以下信息:

  • 驱动程序是否受信任。

  • 是否撤销了驱动程序。

  • 驱动程序的公钥。 应用程序使用驱动程序的公钥为用于身份验证的经过身份验证的通道建立会话密钥。

如果为经过 Direct3D 9 身份验证的通道调用,则调用具有 D3DDDICAPS_GETCERTIFICATE 集的 GetCaps 会失败,因为此通道不支持证书或身份验证。

对于加密会话,驱动程序返回给定加密类型的证书。 根据所使用的加密类型和密钥交换,证书可能使用,也可能不使用证书。 不同的加密类型也可能使用不同的证书。

可选内容保护 DDI 函数

驱动程序可以选择性地支持以下内容保护 DDI 函数:

  • EncryptionBlt 函数从受保护的图面读取加密数据。

  • GetPitch 函数检索受保护图面的间距。

  • StartSessionKeyRefresh 函数返回一个随机数,解码器/应用程序和驱动程序/硬件随后可以使用该随机数执行独占 OR 操作, (XOR) 会话密钥。

  • FinishSessionKeyRefresh 函数指示来自该时间点的所有缓冲区都将使用更新的会话键值。

  • GetEncryptionBltKey 函数返回用于解密驱动程序的 EncryptionBlt 函数返回的数据的密钥。

  • DecryptionBlt 函数将数据写入受保护的图面。

内容保护的资源

以下 D3DDDI_RESOURCEFLAGS 标志由 Direct3D 运行时用于受保护内容。 运行时在D3DDDIARG_CREATERESOURCE结构的Flags 成员中设置这些 D3DDDI_RESOURCEFLAGS标志,当运行时调用 CreateResource 时,驱动程序的 CreateResource 函数的 pResource 参数指向这些标志。

RestrictedContent
资源可能包含受保护的内容。 在应用程序创建资源之前,应用程序可能已显式启用内容保护,也可能未显式启用内容保护。 驱动程序应确保运行时将资源的分配置于可以保护的内存池中。 驱动程序应允许创建可锁定的受保护资源。 但是,在启用内容保护时,驱动程序应显式失败对其 Lock 函数的调用以锁定这些图面。

RestrictSharedAccess
应仅允许特定进程访问共享资源。

驱动程序应限制对此资源的共享访问。 运行时只能调用驱动程序的 OpenResource 函数,以使用创建资源的进程中的显示设备 (hDevice) 打开此资源,或者由那些通过经过身份验证的通道显式授予访问权限的设备打开此资源。