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) |