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.
In caso contrario, i dati vengono crittografati dal chiamante usando la chiave di sessione e NULL vengono passati come chiave simmetrica.

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

Vedi anche

ID3D11VideoContext