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 结构的指针。
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。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 |
支持的最低服务器 | Windows Server 2012 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |