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

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

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