PFND3DDDI_DECRYPTIONBLT回调函数 (d3dumddi.h)

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

语法

PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;

HRESULT Pfnd3dddiDecryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_DECRYPTIONBLT *unnamedParam2
)
{...}

参数

hDevice

显示设备的句柄(图形上下文)。

unnamedParam2

pData [in]

指向描述解密位块传输(bitblt)作参数的 D3DDDIARG_DECRYPTIONBLT 结构的指针。

返回值

DecryptionBlt 返回以下值之一:

返回代码 描述
S_OK 已成功执行解密的 bitblt作。
E_OUTOFMEMORY DecryptionBlt 无法为其分配完成所需的内存。
D3DDDIERR_NOTAVAILABLE 驱动程序不支持 DecryptionBlt 函数。

言论

硬件和驱动程序可以选择支持某些加密类型的 DecryptionBlt

如果调用应用程序需要使用内容密钥,则应用程序使用内容密钥来加密数据,会话密钥在 pContentKeyD3DDDIARG_DECRYPTIONBLT 指向的内存块中传递内容密钥之前加密内容密钥。 如果 pContentKeyNULL,则表示应用程序使用会话密钥加密数据。

如果驱动程序的 CreateCryptoSession 函数之前创建了加密会话,D3DDDIARG_CREATECRYPTOSESSION 结构的 cryptoType 成员设置为D3DCRYPTOTYPE_AES128_CTR,则 D3DDDIARG_DECRYPTIONBLTpIV 成员指向 DXVADDI_PVP_HW_IV 结构,并包含应用程序用于加密缓冲区的初始化向量。 驱动程序的 DecryptionBlt 函数确定初始化向量以前用于同一内容密钥(如果未使用内容密钥,则会话密钥)应失败。 应用程序应递增应用程序加密的每个缓冲区DXVADDI_PVP_HW_IV结构的 IV 成员。 因此,如果 IV 成员小于或等于传递给 DecryptionBlt的上一个 IV 值,则驱动程序的 DecryptionBlt 函数可能会失败。

如果驱动程序和硬件支持部分加密缓冲区,pEncryptedBlockInfoD3DDDIARG_DECRYPTIONBLT 的成员表示已加密的缓冲区部分以及未加密的部分。 如果加密了整个缓冲区,pEncryptedBlockInfoNULL

DecryptionBlt 无法写入子矩形。

Direct3D 运行时验证由 SrcSubResourceIndexD3DDDIARG_DECRYPTIONBLT 成员指定的源图面是否位于系统内存中,并且不会执行拉伸、颜色空间转换等。 应用程序应确保系统内存缓冲区正确对齐,并且缓冲区的大小与目标图面匹配。 驱动程序应验证内存对齐方式和缓冲区大小(SrcResourceSize D3DDDIARG_DECRYPTIONBLT 成员),如果这些条件不正确,则失败。

要求

要求 价值
最低支持的客户端 从 Windows 7作系统开始,支持 DecryptionBlt。
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS