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