Método ID3D11VideoContext::D ecryptionBlt (d3d11.h)
Grava dados criptografados em uma superfície protegida.
Sintaxe
void DecryptionBlt(
[in] ID3D11CryptoSession *pCryptoSession,
[in] ID3D11Texture2D *pSrcSurface,
[in] ID3D11Texture2D *pDstSurface,
[in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
[in] UINT ContentKeySize,
[in] const void *pContentKey,
[in] UINT IVSize,
[in] void *pIV
);
Parâmetros
[in] pCryptoSession
Um ponteiro para a interface ID3D11CryptoSession .
[in] pSrcSurface
Um ponteiro para a superfície que contém os dados de origem.
[in] pDstSurface
Um ponteiro para a superfície protegida em que os dados criptografados são gravados.
[in] pEncryptedBlockInfo
Um ponteiro para uma estrutura D3D11_ENCRYPTED_BLOCK_INFO ou NULL.
Se o driver der suporte a buffers parcialmente criptografados, pEncryptedBlockInfo indicará quais partes do buffer serão criptografadas. Se toda a superfície for criptografada, defina esse parâmetro como NULL.
Para marcar se o driver dá suporte a buffers parcialmente criptografados, chame ID3D11VideoDevice::GetContentProtectionCaps e marcar para o sinalizador de recursos D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION. Se o driver não der suporte a buffers parcialmente criptografados, defina esse parâmetro como NULL.
[in] ContentKeySize
O tamanho da chave de conteúdo criptografada, em bytes.
[in] pContentKey
Um ponteiro para um buffer que contém uma chave de criptografia de conteúdo ou NULL. Para consultar se o driver dá suporte ao uso de chaves de conteúdo, chame ID3D11VideoDevice::GetContentProtectionCaps e marcar para o sinalizador de recursos D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY.
Se o driver der suporte a chaves de conteúdo, use a chave de conteúdo para criptografar a superfície. Criptografe a chave de conteúdo usando a chave de sessão e coloque o texto de codificação resultante em pContentKey. Se o driver não der suporte a chaves de conteúdo, use a chave de sessão para criptografar a superfície e defina pContentKey como NULL.
[in] IVSize
O tamanho do buffer pIV , em bytes.
[in] pIV
Um ponteiro para um buffer que contém o IV (vetor de inicialização).
Para criptografia AES-CTR de 128 bits, o pIV aponta para uma estrutura de D3D11_AES_CTR_IV . O chamador aloca a estrutura e gera o IV. Ao gerar o primeiro IV, inicialize a estrutura para um número aleatório. Para cada IV subsequente, basta incrementar o membro IV da estrutura, garantindo que o valor sempre aumente. Esse procedimento permite que o driver valide se o mesmo IV nunca é usado mais de uma vez com o mesmo par de chaves.
Para outros tipos de criptografia, uma estrutura diferente pode ser usada ou a criptografia pode não usar um IV.
Retornar valor
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Nem todos os drivers ou hardware dão suporte a essa funcionalidade para todos os tipos criptográficos. Essa função só pode ser chamada quando o limite de D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT é relatado.
Esse método não dá suporte à gravação em sub-retângulos da superfície.
Se o hardware e o driver derem suporte a uma chave de conteúdo:
- Os dados são criptografados pelo chamador usando a chave de conteúdo.
- A chave de conteúdo é criptografada pelo chamador usando a chave de sessão.
- A chave de conteúdo criptografada é passada para o driver.
Se o driver e o hardware derem suporte a buffers parcialmente criptografados, pEncryptedBlockInfo indicará quais partes do buffer são criptografadas e quais não são. Se todo o buffer for criptografado, pEncryptedBlockinfo deverá ser NULL.
O D3D11_ENCRYPTED_BLOCK_INFO permite que o aplicativo indique quais bytes no buffer são criptografados. Isso é especificado em bytes, portanto, o aplicativo deve garantir que os blocos criptografados correspondam ao alinhamento do bloco de criptografia da GPU.
Essa função não respeita um predicado D3D11 que pode ter sido definido.
Se o aplicativo usar consultas D3D11, essa função poderá não ser contabilizado com D3D11_QUERY_EVENT e D3D11_QUERY_TIMESTAMP ao usar níveis de recursos inferiores a 11. D3D11_QUERY_PIPELINE_STATISTICS não incluirá essa função para nenhum nível de recurso.
Requisitos
Cliente mínimo com suporte | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | d3d11.h |