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 bit-blocco crittografato (bitblt).

Valore restituito

EncryptionBlt restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK L'operazione bitblt crittografata viene eseguita correttamente.
E_OUTOFMEMORY EncryptionBlt non è riuscito ad allocare la memoria necessaria per il completamento.
D3DDDIERR_NOTAVAILABLE Il driver non supporta la funzione EncryptionBlt.

Osservazioni

L'hardware e i driver possono facoltativamente supportare 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 IV membro della struttura D3DAES_CTR_IV in un numero casuale (che non è troppo grande). Ogni vettore di inizializzazione successivo deve semplicemente incrementare il membro IV, che garantisce che il IV sempre aumenta 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 è in grado di leggere i rettangoli secondari. encryptionBlt anche non è in grado di leggere 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 DstSubResourceIndex membro di D3DDDIARG_ENCRYPTIONBLT sia in memoria di sistema e che non venga eseguita alcuna estensione, 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 (DstResourceSize membro di D3DDDIARG_ENCRYPTIONBLT) e non riuscire se queste condizioni non sono corrette.

Fabbisogno

Requisito Valore
client minimo supportato EncryptionBlt è supportato a partire dal sistema operativo Windows 7.
piattaforma di destinazione Desktop
intestazione d3dumddi.h (include D3dumddi.h)

Vedere anche

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS