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

另请参阅

ID3D11VideoContext