D3DCONTENTPROTECTIONCAPS 结构 (d3d9caps.h)

介绍显示驱动程序的内容保护功能。 若要获取这些功能,请调用 IDirect3DDevice9Video::GetContentProtectionCaps

语法

typedef struct _D3DCONTENTPROTECTIONCAPS {
  DWORD     Caps;
  GUID      KeyExchangeType;
  UINT      BufferAlignmentStart;
  UINT      BlockAlignmentSize;
  ULONGLONG ProtectedMemorySize;
} D3DCONTENTPROTECTIONCAPS;

成员

Caps

零个或多个标志的按位 OR

Value 含义
D3DCPCAPS_SOFTWARE
0x00000001
加密由驱动程序在软件中实现。
D3DCPCAPS_HARDWARE
0x00000002
加密由 GPU 在硬件中实现。
D3DCPCAPS_PROTECTIONALWAYSON
0x00000004
无论应用程序是否显式启用内容保护,内容保护始终应用于受保护的 Direct3D 图面。
D3DCPCAPS_PARTIALDECRYPTION
0x00000008
驱动程序可以使用部分加密的缓冲区。 如果此功能不存在,则整个缓冲区必须经过加密或清除。
D3DCPCAPS_CONTENTKEY
0x00000010
驱动程序可以使用使用会话密钥加密的单独内容密钥来加密数据。 有关详细信息,请参阅 IDirect3DCryptoSession9::D ecryptionBlt
D3DCPCAPS_FRESHENSESSIONKEY
0x00000020
驱动程序可以刷新会话密钥,而无需重新协商密钥。 若要刷新会话密钥,请调用 IDirect3DCryptoSession9::StartSessionKeyRefresh
D3DCPCAPS_ENCRYPTEDREADBACK
0x00000040
驱动程序可以使用 IDirect3DCryptoSession9::EncryptionBlt 方法从受保护的图面读取加密数据。
D3DCPCAPS_ENCRYPTEDREADBACKKEY
0x00000080
驱动程序需要单独的密钥才能从受保护的图面读取加密数据。 若要获取此第二个密钥,请调用 IDirect3DCryptoSession9::GetEncryptionBltKey
D3DCPCAPS_SEQUENTIAL_CTR_IV
0x00000100
如果加密类型为 D3DCRYPTOTYPE_AES128_CTR,则应用程序必须在 DXVA2_AES_CTR_IV 结构中使用顺序计数。 有关详细信息,请参阅 DXVA2_AES_CTR_IV的备注。

KeyExchangeType

指定协商会话密钥所需的密钥交换类型。 定义了以下 GUID。

Value 含义
D3DKEYEXCHANGE_RSAES_OAEP
解码器使用 RSA 加密方案加密会话密钥 - 最佳非对称加密填充 (RSAES-OAEP) 。
D3DKEYEXCHANGE_DXVA
使用为 DirectX 视频加速 2 定义的密钥交换机制 (DXVA-2) 。

BufferAlignmentStart

GPU 加密引擎使用的缓冲区所需的内存对齐方式。 如果应用程序使用系统内存缓冲区将加密内容传递到 GPU,或从 GPU 中读回加密内容,则缓冲区的起始地址必须是此值的倍数。

BlockAlignmentSize

GPU 加密引擎所需的块对齐方式。 要加密的数据大小必须是此值的倍数。

ProtectedMemorySize

可用于保存受保护表面的内存总量。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 d3d9caps.h (包括 D3d9.h)

请参阅

Direct3D 视频结构

IDirect3DDevice9Video::GetContentProtectionCaps