ID3D11VideoContext::D ecryptionBlt 方法 (d3d11.h)
将加密数据写入受保护的图面。
语法
void DecryptionBlt(
[in] ID3D11CryptoSession *pCryptoSession,
[in] ID3D11Texture2D *pSrcSurface,
[in] ID3D11Texture2D *pDstSurface,
[in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
[in] UINT ContentKeySize,
[in] const void *pContentKey,
[in] UINT IVSize,
[in] void *pIV
);
参数
[in] pCryptoSession
指向 ID3D11CryptoSession 接口的 指针。
[in] pSrcSurface
指向包含源数据的图面的指针。
[in] pDstSurface
指向写入加密数据的受保护图面的指针。
[in] pEncryptedBlockInfo
指向 D3D11_ENCRYPTED_BLOCK_INFO 结构的指针,或 NULL。
如果驱动程序支持部分加密的缓冲区, pEncryptedBlockInfo 指示已加密缓冲区的哪些部分。 如果整个图面已加密,请将此参数设置为 NULL。
若要检查驱动程序是否支持部分加密的缓冲区,请调用 ID3D11VideoDevice::GetContentProtectionCaps 并为D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION功能标志检查。 如果驱动程序不支持部分加密的缓冲区,请将此参数设置为 NULL。
[in] ContentKeySize
加密内容密钥的大小(以字节为单位)。
[in] pContentKey
指向包含内容加密密钥的缓冲区的指针,或 NULL。 若要查询驱动程序是否支持使用内容密钥,请调用 ID3D11VideoDevice::GetContentProtectionCaps 并检查获取D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY功能标志。
如果驱动程序支持内容密钥,请使用内容密钥来加密图面。 使用会话密钥加密内容密钥,并将生成的密码文本放在 pContentKey 中。 如果驱动程序不支持内容密钥,请使用会话密钥加密图面,并将 pContentKey 设置为 NULL。
[in] IVSize
pIV 缓冲区的大小(以字节为单位)。
[in] pIV
指向包含初始化向量 (IV) 的缓冲区的指针。
对于 128 位 AES-CTR 加密, pIV 指向 D3D11_AES_CTR_IV 结构。 调用方分配结构并生成 IV。 生成第一个 IV 时,将结构初始化为随机数。 对于每个后续 IV,只需递增结构的 IV 成员,确保值始终增加。 此过程使驱动程序能够验证同一个 IV 永远不会使用同一密钥对多次。
对于其他加密类型,可能使用不同的结构,或者加密可能不使用 IV。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
备注
并非所有硬件或驱动程序都支持所有加密类型的此功能。 仅当报告 D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT 上限时,才能调用此函数。
此方法不支持写入图面的子矩形。
如果硬件和驱动程序支持内容密钥:
- 数据由调用方使用内容密钥进行加密。
- 内容密钥由调用方使用会话密钥进行加密。
- 加密的内容密钥将传递给驱动程序。
如果驱动程序和硬件支持部分加密的缓冲区, pEncryptedBlockInfo 会指示缓冲区的哪些部分已加密,哪些部分未加密。 如果整个缓冲区已加密, pEncryptedBlockinfo 应为 NULL。
D3D11_ENCRYPTED_BLOCK_INFO允许应用程序指示对缓冲区中的哪些字节进行了加密。 这是以字节为单位指定的,因此应用程序必须确保加密块与 GPU 的加密块对齐方式匹配。
此函数不接受可能已设置的 D3D11 谓词。
如果应用程序使用 D3D11 查询,则使用低于 11 的功能级别时,可能无法考虑 此 函数D3D11_QUERY_EVENT和 D3D11_QUERY_TIMESTAMP 。 对于任何功能级别,D3D11_QUERY_PIPELINE_STATISTICS不包括此函数。
要求
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11.h |