Metodo ID3D11VideoContext::D ecryptionBlt (d3d11.h)
Scrive i dati crittografati in una superficie protetta.
Sintassi
void DecryptionBlt(
[in] ID3D11CryptoSession *pCryptoSession,
[in] ID3D11Texture2D *pSrcSurface,
[in] ID3D11Texture2D *pDstSurface,
[in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
[in] UINT ContentKeySize,
[in] const void *pContentKey,
[in] UINT IVSize,
[in] void *pIV
);
Parametri
[in] pCryptoSession
Puntatore all'interfaccia ID3D11CryptoSession .
[in] pSrcSurface
Puntatore alla superficie contenente i dati di origine.
[in] pDstSurface
Puntatore alla superficie protetta in cui vengono scritti i dati crittografati.
[in] pEncryptedBlockInfo
Puntatore a una struttura D3D11_ENCRYPTED_BLOCK_INFO o NULL.
Se il driver supporta buffer parzialmente crittografati, pEncryptedBlockInfo indica quali parti del buffer sono crittografate. Se l'intera superficie è crittografata, impostare questo parametro su NULL.
Per verificare se il driver supporta buffer parzialmente crittografati, chiamare ID3D11VideoDevice::GetContentProtectionCaps e verificare la presenza del flag delle funzionalità di D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION . Se il driver non supporta buffer parzialmente crittografati, impostare questo parametro su NULL.
[in] ContentKeySize
Dimensione in byte della chiave simmetrica crittografata.
[in] pContentKey
Puntatore a un buffer che contiene una chiave di crittografia del contenuto o NULL. Per verificare se il driver supporta l'uso delle chiavi simmetriche, chiamare ID3D11VideoDevice::GetContentProtectionCaps e verificare la presenza del flag delle funzionalità D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY .
Se il driver supporta le chiavi simmetrica, usare la chiave simmetrica per crittografare la superficie. Crittografare la chiave simmetrica usando la chiave di sessione e inserire il testo crittografato risultante in pContentKey. Se il driver non supporta le chiavi di contenuto, usare la chiave di sessione per crittografare la superficie e impostare pContentKey su NULL.
[in] IVSize
Dimensioni del buffer pIV , in byte.
[in] pIV
Puntatore a un buffer che contiene il vettore di inizializzazione (IV).
Per la crittografia AES-CTR a 128 bit, pIV punta a una struttura D3D11_AES_CTR_IV . Il chiamante alloca la struttura e genera l'IV. Quando si genera il primo IV, inizializzare la struttura in un numero casuale. Per ogni IV successivo, è sufficiente incrementare il membro IV della struttura, assicurandosi che il valore aumenti sempre. Questa procedura consente al driver di verificare che lo stesso IV non venga mai usato più volte con la stessa coppia di chiavi.
Per altri tipi di crittografia, potrebbe essere usata una struttura diversa o la crittografia potrebbe non usare un IV.
Valore restituito
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Non tutti i driver o hardware supportano questa funzionalità per tutti i tipi di crittografia. Questa funzione può essere chiamata solo quando viene segnalato il limite di D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT .
Questo metodo non supporta la scrittura in sotto rettangoli della superficie.
Se l'hardware e il driver supportano una chiave simmetrica:
- I dati vengono crittografati dal chiamante usando la chiave simmetrica.
- La chiave simmetrica viene crittografata dal chiamante usando la chiave di sessione.
- La chiave simmetrica crittografata viene passata al driver.
Se il driver e l'hardware supportano buffer parzialmente crittografati, pEncryptedBlockInfo indica quali parti del buffer vengono crittografate e quali non lo sono. Se l'intero buffer è crittografato, pEncryptedBlockinfo deve essere NULL.
Il D3D11_ENCRYPTED_BLOCK_INFO consente all'applicazione di indicare quali byte nel buffer sono crittografati. Questo valore viene specificato in byte, quindi l'applicazione deve garantire che i blocchi crittografati corrispondano all'allineamento del blocco di crittografia della GPU.
Questa funzione non rispetta un predicato D3D11 che potrebbe essere stato impostato.
Se l'applicazione usa query D3D11, questa funzione potrebbe non essere considerata con D3D11_QUERY_EVENT e D3D11_QUERY_TIMESTAMP quando si usano livelli di funzionalità inferiori a 11. D3D11_QUERY_PIPELINE_STATISTICS non includerà questa funzione per alcun livello di funzionalità.
Requisiti
Client minimo supportato | Windows 8 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | d3d11.h |