Partager via


PFND3DDDI_ENCRYPTIONBLT fonction de rappel (d3dumddi.h)

La fonction EncryptionBlt lit les données chiffrées à partir d’une surface protégée.

Syntaxe

PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;

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

Paramètres

hDevice

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure D3DDDIARG_ENCRYPTIONBLT qui décrit les paramètres de l’opération de transfert de bloc de bits (bitblt) chiffrée.

Valeur de retour

EncryptionBlt retourne l’une des valeurs suivantes :

Retourner le code Description
S_OK L’opération de bitblt chiffrée est effectuée avec succès.
E_OUTOFMEMORY EncryptionBlt n’a pas pu allouer la mémoire requise pour qu’elle se termine.
D3DDDIERR_NOTAVAILABLE Le pilote ne prend pas en charge la fonction EncryptionBlt.

Remarques

Le matériel et les pilotes peuvent éventuellement prendre en charge EncryptionBlt. Certains matériels peuvent également nécessiter l’utilisation d’une clé distincte pour déchiffrer les données lues. Le pilote retourne cette clé dans un bloc de mémoire vers lequel pointe le pIV membre de D3DDDIARG_ENCRYPTIONBLT.

Si le pilote et le matériel utilisent une clé distincte pour le bitblt de chiffrement, l’application doit reconnaître ce fait et utiliser la clé.

Si le type de chiffrement est D3DCRYPTOTYPE_AES128_CTR, pIV pointe vers une structure D3DAES_CTR_IV que l’application alloue. Toutefois, le contenu réel de la structure D3DAES_CTR_IV est rempli par le pilote et le matériel. Lorsque le pilote et le matériel génèrent le premier vecteur d’initialisation, ils doivent initialiser le membre IV de la structure D3DAES_CTR_IV sur un nombre aléatoire (ce n’est pas trop grand). Chaque vecteur d’initialisation suivant doit simplement incrémenter le membre IV, ce qui garantit que le IV augmente toujours la valeur. Ce fait permet à l’application de vérifier que le même IV n’est jamais utilisé plusieurs fois avec la même paire de clés.

EncryptionBlt ne peut pas lire les sous-rectangles. EncryptionBlt ne peut pas également lire les mémoires tampons partiellement chiffrées, car la plupart des solutions matérielles n’autorisent pas les lectures non chiffrées à partir de la mémoire protégée.

Le runtime Direct3D vérifie que l’aire de destination spécifiée par la DstSubResourceIndex membre de D3DDDIARG_ENCRYPTIONBLT est dans la mémoire système et qu’aucune extension, conversion d’espace de couleur, et ainsi de suite est effectuée. Une application doit s’assurer que la mémoire tampon système est correctement alignée et que la taille de la mémoire tampon correspond à la surface source. Le pilote doit vérifier l’alignement de la mémoire et la taille de la mémoire tampon (DstResourceSize membre de D3DDDIARG_ENCRYPTIONBLT) et échouer si ces conditions ne sont pas correctes.

Exigences

Exigence Valeur
client minimum pris en charge EncryptionBlt est pris en charge à partir du système d’exploitation Windows 7.
plateforme cible Bureau
d’en-tête d3dumddi.h (include D3dumddi.h)

Voir aussi

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS