PFND3DDDI_ENCRYPTIONBLT funzione di callback (d3dumddi.h)
La funzione EncryptionBlt legge i dati crittografati da una superficie protetta.
Sintassi
PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;
HRESULT Pfnd3dddiEncryptionblt(
HANDLE hDevice,
const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}
Parametri
hDevice
Handle per il dispositivo di visualizzazione (contesto grafico).
unnamedParam2
pData [in]
Puntatore a una struttura D3DDDIARG_ENCRYPTIONBLT che descrive i parametri dell'operazione di trasferimento a blocchi bit crittografati (bitblt).
Valore restituito
EncryptionBlt restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | L'operazione bitblt crittografata viene eseguita correttamente. |
E_OUTOFMEMORY | CrittografiaBlt non è stato in grado di allocare la memoria necessaria per il completamento. |
D3DDDIERR_NOTAVAILABLE | Il driver non supporta la funzione EncryptionBlt. |
Commenti
I driver e l'hardware possono supportare facoltativamente EncryptionBlt. Alcuni hardware potrebbero anche richiedere l'uso di una chiave separata per decrittografare i dati letti di nuovo. Il driver restituisce questa chiave in un blocco di memoria a cui punta il membro pIV di D3DDDIARG_ENCRYPTIONBLT .
Se il driver e l'hardware usano una chiave separata per il bitblt di crittografia, l'applicazione deve riconoscere questo fatto e usare la chiave.
Se il tipo di crittografia è D3DCRYPTOTYPE_AES128_CTR, pIV punta a una struttura D3DAES_CTR_IV allocata dall'applicazione. Tuttavia, il contenuto effettivo della struttura D3DAES_CTR_IV viene compilato dal driver e dall'hardware. Quando il driver e l'hardware generano il primo vettore di inizializzazione, devono inizializzare il membro IV della struttura D3DAES_CTR_IV a un numero casuale ,ovvero non troppo grande. Ogni vettore di inizializzazione successiva deve semplicemente aumentare il membro IV , che garantisce che il IV aumenti sempre di valore. Questo fatto consente all'applicazione di verificare che lo stesso IV non venga mai usato più volte con la stessa coppia di chiavi.
EncryptionBlt non può leggere i sotto rettangoli. EncryptionBlt non può anche leggere i buffer parzialmente crittografati perché molte delle soluzioni basate su hardware non consentono letture non crittografate dalla memoria protetta.
Il runtime Direct3D verifica che la superficie di destinazione specificata dal membro DstSubResourceIndex di D3DDDIARG_ENCRYPTIONBLT sia in memoria di sistema e che non venga eseguita alcuna conversione dello spazio dei colori e così via. Un'applicazione deve assicurarsi che il buffer di memoria di sistema sia allineato correttamente e che le dimensioni del buffer corrispondano alla superficie di origine. Il driver deve verificare l'allineamento della memoria e le dimensioni del buffer (membro DstResourceSize di D3DDDIARG_ENCRYPTIONBLT) e non riuscire se queste condizioni non sono corrette.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | EncryptionBlt è supportato a partire dal sistema operativo Windows 7. |
Piattaforma di destinazione | Desktop |
Intestazione | d3dumddi.h (include D3dumddi.h) |