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