Compartilhar via


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)

Confira também

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS