PFND3DDDI_DECRYPTIONBLT funzione di callback (d3dumddi.h)

La funzione DecryptionBlt scrive i dati in una superficie protetta.

Sintassi

PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;

HRESULT Pfnd3dddiDecryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_DECRYPTIONBLT *unnamedParam2
)
{...}

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDIARG_DECRYPTIONBLT che descrive i parametri dell'operazione di trasferimento bit a blocchi di bit decrittografato (bitblt).

Valore restituito

DecryptionBlt restituisce uno dei valori seguenti:

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

Osservazioni

Hardware e driver possono facoltativamente supportare DecryptionBlt per alcuni tipi di crittografia.

Se l'applicazione chiamante richiede l'uso di una chiave simmetrica, l'applicazione usa la chiave simmetrica per crittografare i dati e la chiave di sessione per crittografare la chiave simmetrica prima di passare la chiave simmetrica nel blocco di memoria a cui punta il pContentKey membro di D3DDDIARG_DECRYPTIONBLT. Se pContentKey è NULL, indica che l'applicazione ha usato la chiave di sessione per crittografare i dati.

Se la funzione di CreateCryptoSession del driver ha creato in precedenza la sessione di crittografia con il membro CryptoType della struttura D3DDDIARG_CREATECRYPTOSESSION impostata su D3DCRYPTOTYPE_AES128_CTR, il pIV membro di D3DDDIARG_DECRYPTIONBLT punta alla struttura DXVADDI_PVP_HW_IV e contiene il vettore di inizializzazione usato dall'applicazione per crittografare il buffer. Il driver DecryptionBlt funzione deve avere esito negativo se determina che il vettore di inizializzazione è stato usato in precedenza per la stessa chiave simmetrica (o la chiave di sessione se la chiave simmetrica non viene usata). L'applicazione deve incrementare il IV membro della struttura DXVADDI_PVP_HW_IV per ogni buffer crittografato dall'applicazione. Pertanto, la funzione di DecryptionBlt del driverBlt può non riuscire se il membro IV è minore o uguale al valore IV precedente passato a DecryptionBlt.

Se il driver e l'hardware supportano buffer parzialmente crittografati, il pEncryptedBlockInfo membro di D3DDDIARG_DECRYPTIONBLT indica le parti del buffer crittografate e le parti non crittografate. Se l'intero buffer è crittografato, pEncryptedBlockInfo deve essere NULL.

DecryptionBlt non può scrivere rettangoli secondari.

Il runtime Direct3D verifica che la superficie di origine specificata dal SrcSubResourceIndex membro della struttura D3DDDIARG_DECRYPTIONBLT 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 destinazione. Il driver deve verificare l'allineamento della memoria e le dimensioni del buffer (SrcResourceSize membro di D3DDDIARG_DECRYPTIONBLT) e non riuscire se queste condizioni non sono corrette.

Fabbisogno

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

Vedere anche

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS