ID3D11VideoContext::EncryptionBlt 方法 (d3d11.h)
从受保护的图面读取加密数据。
语法
void EncryptionBlt(
[in] ID3D11CryptoSession *pCryptoSession,
[in] ID3D11Texture2D *pSrcSurface,
[in] ID3D11Texture2D *pDstSurface,
[in] UINT IVSize,
[in] void *pIV
);
参数
[in] pCryptoSession
指向加密会话的 ID3D11CryptoSession 接口的指针。
[in] pSrcSurface
指向受保护图面的 ID3D11Texture2D 接口的指针。
[in] pDstSurface
指向接收加密数据的图面的 ID3D11Texture2D 接口的指针。
[in] IVSize
pIV 缓冲区的大小(以字节为单位)。
[in] pIV
指向接收初始化向量 (IV) 的缓冲区的指针。 调用方分配此缓冲区,但驱动程序会生成 IV。
对于 128 位 AES-CTR 加密, pIV 指向 D3D11_AES_CTR_IV 结构。 当驱动程序生成第一个 IV 时,它会将结构初始化为随机数。 对于每个后续 IV,驱动程序只需递增结构的 IV 成员,确保值始终增加。 应用程序可以验证同一个 IV 永远不会多次使用相同的密钥对。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
并非所有驱动程序都支持此方法。 若要查询驱动程序功能,请调用 ID3D11VideoDevice::GetContentProtectionCaps,并在 D3D11_VIDEO_CONTENT_PROTECTION_CAPS 结构的 Caps 成员中为 D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK 标志检查。
某些驱动程序可能需要单独的密钥来解密读回的数据。 若要检查此要求,请调用 GetContentProtectionCaps,并为D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY标志调用检查。 如果存在此标志,请调用 ID3D11VideoContext::GetEncryptionBltKey 以获取解密密钥。
此方法具有以下限制:
- 不支持读回子矩形。
- 不支持读回部分加密的图面。
- 受保护的表面必须是屏幕外普通表面或呈现目标。
- 目标图面必须是 D3D11_USAGE_STAGING 资源。
- 受保护的图面不能进行多重采样。
- 不支持拉伸和颜色空间转换。
此函数不接受可能已设置的 D3D11 谓词。
如果应用程序使用 D3D11 查询,则使用低于 11 的功能级别时,可能无法考虑 此 函数D3D11_QUERY_EVENT和 D3D11_QUERY_TIMESTAMP 。 对于任何功能级别,D3D11_QUERY_PIPELINE_STATISTICS不包括此函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11.h |