Condividi tramite


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)

Vedi anche

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS