PFND3DDDI_ENCRYPTIONBLT función de devolución de llamada (d3dumddi.h)

La función EncryptionBlt lee los datos cifrados de una superficie protegida.

Sintaxis

PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;

HRESULT Pfnd3dddiEncryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura de D3DDDIARG_ENCRYPTIONBLT que describe los parámetros de la operación cifrada de transferencia de bloques de bits (bitblt).

Valor devuelto

EncryptionBlt devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK La operación bitblt cifrada se realiza correctamente.
E_OUTOFMEMORY EncryptionBlt no pudo asignar la memoria necesaria para que se complete.
D3DDDIERR_NOTAVAILABLE El controlador no admite la función EncryptionBlt.

Comentarios

El hardware y los controladores pueden admitir opcionalmente EncryptionBlt. Es posible que algunos hardware también necesiten usar una clave independiente para descifrar los datos que se leen. El controlador devuelve esta clave en un bloque de memoria al que apunta el miembro pIV de D3DDDIARG_ENCRYPTIONBLT .

Si el controlador y el hardware usan una clave independiente para el bitblt de cifrado, la aplicación debe reconocer este hecho y usar la clave.

Si el tipo criptográfico es D3DCRYPTOTYPE_AES128_CTR, pIV apunta a una estructura de D3DAES_CTR_IV que asigna la aplicación. Sin embargo, el controlador y el hardware rellenan el contenido real de la estructura de D3DAES_CTR_IV. Cuando el controlador y el hardware generan el primer vector de inicialización, deben inicializar el miembro IV de la estructura D3DAES_CTR_IV en un número aleatorio (que no es demasiado grande). Cada vector de inicialización posterior simplemente debe incrementar el miembro IV , lo que garantiza que el IV siempre aumente en el valor. Este hecho permite a la aplicación validar que el mismo IV nunca se usa varias veces con el mismo par de claves.

EncryptionBlt no puede leer subrectángulos. EncryptionBlt tampoco puede leer búferes parcialmente cifrados porque muchas de las soluciones basadas en hardware no permiten lecturas no cifradas de la memoria protegida.

El tiempo de ejecución de Direct3D comprueba que la superficie de destino especificada por el miembro DstSubResourceIndex de D3DDDIARG_ENCRYPTIONBLT está en la memoria del sistema y que no se realiza ninguna conversión de espacio de colores, etc. Una aplicación debe asegurarse de que el búfer de memoria del sistema está correctamente alineado y que el tamaño del búfer coincide con la superficie de origen. El controlador debe comprobar la alineación de la memoria y el tamaño del búfer (miembro DstResourceSize de D3DDDIARG_ENCRYPTIONBLT) y producir un error si estas condiciones no son correctas.

Requisitos

Requisito Value
Cliente mínimo compatible EncryptionBlt se admite a partir del sistema operativo Windows 7.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS