PFND3DDDI_DECRYPTIONBLT função de retorno de chamada (d3dumddi.h)
A função DecryptionBlt grava dados em uma superfície protegida.
Sintaxe
PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;
HRESULT Pfnd3dddiDecryptionblt(
HANDLE hDevice,
const D3DDDIARG_DECRYPTIONBLT *unnamedParam2
)
{...}
Parâmetros
hDevice
Um identificador para o dispositivo de exibição (contexto gráfico).
unnamedParam2
pData [in]
Um ponteiro para uma estrutura D3DDDIARG_DECRYPTIONBLT que descreve os parâmetros da operação de transferência de bloco de bits descriptografada (bitblt).
Retornar valor
DecryptionBlt retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
S_OK | A operação bitblt descriptografada é executada com êxito. |
E_OUTOFMEMORY | DecryptionBlt não pôde alocar a memória necessária para que ela fosse concluída. |
D3DDDIERR_NOTAVAILABLE | O driver não dá suporte à função DecryptionBlt. |
Comentários
O hardware e os drivers podem, opcionalmente, dar suporte a DecryptionBlt para alguns tipos de criptografia.
Se o aplicativo de chamada exigir o uso de uma chave de conteúdo, o aplicativo usará a chave de conteúdo para criptografar os dados e a chave de sessão para criptografar a chave de conteúdo antes de passar a chave de conteúdo no bloco de memória para o qual o membro pContentKey do D3DDDIARG_DECRYPTIONBLT aponta. Se pContentKey for NULL, isso indicará que o aplicativo usou a chave de sessão para criptografar os dados.
Se a função CreateCryptoSession do driver criou anteriormente a sessão de criptografia com o membro CryptoType da estrutura D3DDDIARG_CREATECRYPTOSESSION definida como D3DCRYPTOTYPE_AES128_CTR, o membro pIV do D3DDDIARG_DECRYPTIONBLT aponta para a estrutura DXVADDI_PVP_HW_IV e contém o vetor de inicialização que o aplicativo usou para criptografar o buffer. A função DecryptionBlt do driver deverá falhar se determinar que o vetor de inicialização foi usado anteriormente para a mesma chave de conteúdo (ou chave de sessão, se a chave de conteúdo não for usada). O aplicativo deve incrementar o membro IV da estrutura DXVADDI_PVP_HW_IV para cada buffer criptografado pelo aplicativo. Portanto, a função DecryptionBlt do driver poderá falhar se o membro IV for menor ou igual ao valor IV anterior que foi passado para DecryptionBlt.
Se o driver e o hardware derem suporte a buffers parcialmente criptografados, o membro pEncryptedBlockInfo do D3DDDIARG_DECRYPTIONBLT indicará as partes do buffer criptografadas e as partes que não estão criptografadas. Se todo o buffer for criptografado, pEncryptedBlockInfo deverá ser NULL.
DecryptionBlt não pode gravar sub-retângulos.
O runtime do Direct3D verifica se a superfície de origem especificada pelo membro SrcSubResourceIndex da estrutura D3DDDIARG_DECRYPTIONBLT está na memória do sistema e que nenhum alongamento, conversão de espaço de cor e assim por diante é executado. Um aplicativo deve garantir que o buffer de memória do sistema esteja alinhado corretamente e que o tamanho do buffer corresponda à superfície de destino. O driver deve verificar o alinhamento da memória e o tamanho do buffer (membro SrcResourceSize de D3DDDIARG_DECRYPTIONBLT) e falhar se essas condições não estiverem corretas.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Há suporte para DecryptionBlt a partir do sistema operacional Windows 7. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |