PFND3D11_1DDI_DECRYPTIONBLT回调函数 (d3d10umddi.h)

将加密数据写入受保护的图面。 仅当 在 D3D11_1DDI_VIDEO_CONTENT_PROTECTION_CAPS 结构的 Caps 成员中设置了 D3D11_1DDI_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT 时, 才会调用此函数。

语法

PFND3D11_1DDI_DECRYPTIONBLT Pfnd3d111DdiDecryptionblt;

void Pfnd3d111DdiDecryptionblt(
  D3D10DDI_HDEVICE hDevice,
  D3D11_1DDI_HCRYPTOSESSION hCryptoSession,
  D3D10DDI_HRESOURCE hSrcResource,
  D3D10DDI_HRESOURCE hDstResource,
  const D3D11_1DDI_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
  UINT ContentKeySize,
  const VOID *pContentKey,
  UINT IVSize,
  const VOID *pIV
)
{...}

参数

hDevice

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

hCryptoSession

加密会话的驱动程序专用数据的句柄。 此句柄由 Direct3D 运行时创建,并在调用 CreateCryptoSession 函数时传递给驱动程序。

hSrcResource

包含源数据的资源的句柄。

hDstResource

指向要在其中写入加密数据的资源的指针。

pEncryptedBlockInfo

指向 D3D11_1DDI_ENCRYPTED_BLOCK_INFO 结构的指针,该结构描述已加密的缓冲区部分。

注意 如果整个缓冲区已加密,则应将 pEncryptedBlockinfo 设置为 NULL。
 

ContentKeySize

内容密钥的大小(以字节为单位)。

pContentKey

指向内存块的指针,该内存块包含解密位块传输所需的内容密钥, (bitblt) 数据。

如果 pContentKey 未设置为 NULL,则使用指定的内容密钥加密缓冲区数据。 此密钥的数据使用会话密钥和 AES-ECB 算法进行加密。

如果 pContentKey 为 NULL,则图形适配器不需要单独的内容密钥来解密数据。 在这种情况下,会话密钥用于解密数据。

IVSize

初始化向量的大小(以字节为单位) (IV) 。

pIV

指向内存块的指针,该内存块包含解密 bitblt 数据所需的初始化向量。 有关详细信息,请参见“备注”部分。

注意  

如果 pIV 为 NULL,则图形适配器不需要单独的初始化向量来解密数据。 也就是说,会话密钥用于解密数据。

 

返回值

备注

对于 128 位 AES-CTR 加密, pIV 参数指向应用程序分配 的D3D11_1DDI_AES_CTR_IV 结构。 但是,此结构的实际内容由驱动程序或图形适配器填充。 生成第一个 IV 时,驱动程序或适配器将此结构的 IV 成员初始化为随机数。 对于每个后续 IV,调用方递增 IV 成员,确保值始终增加。 此过程使应用程序能够验证同一个 IV 永远不会使用同一密钥对多次。

对于其他加密类型,可能使用不同的结构,或者加密可能不使用 IV。

注意 此函数不接受可能已设置的 Direct3D 版本 11 谓词。
 

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 桌面
标头 d3d10umddi.h (包括 D3d10umddi.h)

另请参阅

D3D11_1DDI_AES_CTR_IV

D3D11_1DDI_ENCRYPTED_BLOCK_INFO

D3D11_1DDI_VIDEO_CONTENT_PROTECTION_CAPS