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 pour le périphérique 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 retournée

EncryptionBlt retourne l’une des valeurs suivantes :

Code de retour Description
S_OK L’opération bitblt chiffrée est effectuée avec succès.
E_OUTOFMEMORY EncryptionBlt n’a pas pu allouer la mémoire nécessaire pour qu’il 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 membre pIV 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 en un nombre aléatoire (qui n’est pas trop grand). Chaque vecteur d’initialisation suivant doit simplement incrémenter le membre IV , ce qui garantit que la valeur de l’IV augmente toujours. 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 non plus 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 la surface de destination spécifiée par le membre DstSubResourceIndex de D3DDDIARG_ENCRYPTIONBLT se trouve dans la mémoire système et qu’aucun étirement, conversion d’espace de couleur, etc. n’est effectué. 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 (membre DstResourceSize de D3DDDIARG_ENCRYPTIONBLT) et échouer si ces conditions ne sont pas correctes.

Configuration requise

Condition requise Valeur
Client minimal pris en charge EncryptionBlt est pris en charge à partir du système d’exploitation Windows 7.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS