Compartilhar via


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)

Confira também

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS