PFND3DDDI_ENCRYPTIONBLT função de retorno de chamada (d3dumddi.h)
A função EncryptionBlt lê dados criptografados de uma superfície protegida.
Sintaxe
PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;
HRESULT Pfnd3dddiEncryptionblt(
HANDLE hDevice,
const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}
Parâmetros
hDevice
Um identificador para o dispositivo de exibição (contexto gráfico).
unnamedParam2
pData [in]
Um ponteiro para uma estrutura D3DDDIARG_ENCRYPTIONBLT que descreve os parâmetros da operação de transferência de bloco de bits criptografada (bitblt).
Retornar valor
EncryptionBlt retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
S_OK | A operação bitblt criptografada é executada com êxito. |
E_OUTOFMEMORY | EncryptionBlt 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 EncryptionBlt. |
Comentários
Os drivers e hardware podem, opcionalmente, dar suporte a EncryptionBlt. Alguns hardwares também podem exigir o uso de uma chave separada para descriptografar os dados que são lidos novamente. O driver retorna essa chave em um bloco de memória para o qual o membro pIV de D3DDDIARG_ENCRYPTIONBLT aponta.
Se o driver e o hardware usarem uma chave separada para o bitblt de criptografia, o aplicativo deverá reconhecer esse fato e usar a chave.
Se o tipo de criptografia for D3DCRYPTOTYPE_AES128_CTR, pIV apontará para uma estrutura D3DAES_CTR_IV alocada pelo aplicativo. No entanto, o conteúdo real da estrutura D3DAES_CTR_IV é preenchido pelo driver e pelo hardware. Quando o driver e o hardware geram o primeiro vetor de inicialização, eles devem inicializar o membro IV da estrutura D3DAES_CTR_IV para um número aleatório (que não é muito grande). Cada vetor de inicialização subsequente deve simplesmente incrementar o membro IV , o que garante que o IV sempre aumente de valor. Esse fato permite que o aplicativo valide se o mesmo IV nunca é usado várias vezes com o mesmo par de chaves.
EncryptionBlt não pode ler sub-retângulos de volta. EncryptionBlt também não pode ler buffers parcialmente criptografados porque muitas das soluções baseadas em hardware não permitem leituras não criptografadas da memória protegida.
O runtime do Direct3D verifica se a superfície de destino especificada pelo membro DstSubResourceIndex do D3DDDIARG_ENCRYPTIONBLT 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 origem. O driver deve verificar o alinhamento da memória e o tamanho do buffer (membro DstResourceSize de D3DDDIARG_ENCRYPTIONBLT) e falhar se essas condições não estiverem corretas.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | O EncryptionBlt tem suporte a partir do sistema operacional Windows 7. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |