Share via


ID3D11VideoContext::D ecryptionBlt-Methode (d3d11.h)

Schreibt verschlüsselte Daten auf eine geschützte Oberfläche.

Syntax

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
);

Parameter

[in] pCryptoSession

Ein Zeiger auf die ID3D11CryptoSession-Schnittstelle .

[in] pSrcSurface

Ein Zeiger auf die Oberfläche, die die Quelldaten enthält.

[in] pDstSurface

Ein Zeiger auf die geschützte Oberfläche, in die die verschlüsselten Daten geschrieben werden.

[in] pEncryptedBlockInfo

Ein Zeiger auf eine D3D11_ENCRYPTED_BLOCK_INFO-Struktur oder NULL.

Wenn der Treiber teilweise verschlüsselte Puffer unterstützt, gibt pEncryptedBlockInfo an, welche Teile des Puffers verschlüsselt sind. Wenn die gesamte Oberfläche verschlüsselt ist, legen Sie diesen Parameter auf NULL fest.

Um zu überprüfen, ob der Treiber teilweise verschlüsselte Puffer unterstützt, rufen Sie ID3D11VideoDevice::GetContentProtectionCaps auf, und suchen Sie nach dem Flag D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION Capabilities. Wenn der Treiber teilweise verschlüsselte Puffer nicht unterstützt, legen Sie diesen Parameter auf NULL fest.

[in] ContentKeySize

Die Größe des verschlüsselten Inhaltsschlüssels in Bytes.

[in] pContentKey

Ein Zeiger auf einen Puffer, der einen Inhaltsverschlüsselungsschlüssel oder NULL enthält. Rufen Sie ID3D11VideoDevice::GetContentProtectionCaps auf, um abzufragen, ob der Treiber D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY die Verwendung von Inhaltsschlüsseln unterstützt.

Wenn der Treiber Inhaltsschlüssel unterstützt, verwenden Sie den Inhaltsschlüssel, um die Oberfläche zu verschlüsseln. Verschlüsseln Sie den Inhaltsschlüssel mithilfe des Sitzungsschlüssels, und platzieren Sie den resultierenden Verschlüsselungstext in pContentKey. Wenn der Treiber keine Inhaltsschlüssel unterstützt, verwenden Sie den Sitzungsschlüssel, um die Oberfläche zu verschlüsseln, und legen Sie pContentKey auf NULL fest.

[in] IVSize

Die Größe des pIV-Puffers in Bytes.

[in] pIV

Ein Zeiger auf einen Puffer, der den Initialisierungsvektor (IV) enthält.

Bei der 128-Bit-AES-CTR-Verschlüsselung verweist pIV auf eine D3D11_AES_CTR_IV-Struktur . Der Aufrufer ordnet die -Struktur zu und generiert den IV. Wenn Sie den ersten IV generieren, initialisieren Sie die Struktur in einer Zufallszahl. Erhöhen Sie für jeden nachfolgenden IV einfach den IV-Member der Struktur, um sicherzustellen, dass der Wert immer steigt. Mit diesem Verfahren kann der Treiber überprüfen, ob derselbe IV nie mehr als einmal mit demselben Schlüsselpaar verwendet wird.

Für andere Verschlüsselungstypen kann eine andere Struktur verwendet werden, oder die Verschlüsselung verwendet möglicherweise keinen IV.

Rückgabewert

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Nicht alle Hardware oder Treiber unterstützen diese Funktionalität für alle kryptografischen Typen. Diese Funktion kann nur aufgerufen werden, wenn die D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT-Obergrenze gemeldet wird.

Diese Methode unterstützt das Schreiben in Untergeordnete Rechtecke der Oberfläche nicht.

Wenn die Hardware und der Treiber einen Inhaltsschlüssel unterstützen:

  • Die Daten werden vom Aufrufer mit dem Inhaltsschlüssel verschlüsselt.
  • Der Inhaltsschlüssel wird vom Aufrufer mit dem Sitzungsschlüssel verschlüsselt.
  • Der verschlüsselte Inhaltsschlüssel wird an den Treiber übergeben.
Andernfalls werden die Daten vom Aufrufer mit dem Sitzungsschlüssel verschlüsselt, und NULL wird als Inhaltsschlüssel übergeben.

Wenn der Treiber und die Hardware teilweise verschlüsselte Puffer unterstützen, gibt pEncryptedBlockInfo an, welche Teile des Puffers verschlüsselt sind und welche nicht. Wenn der gesamte Puffer verschlüsselt ist, sollte pEncryptedBlockinfoNULL sein.

Mit der D3D11_ENCRYPTED_BLOCK_INFO kann die Anwendung angeben, welche Bytes im Puffer verschlüsselt sind. Dies wird in Bytes angegeben, sodass die Anwendung sicherstellen muss, dass die verschlüsselten Blöcke der Kryptoblockausrichtung der GPU entsprechen.

Diese Funktion berücksichtigt kein D3D11-Prädikat, das möglicherweise festgelegt wurde.

Wenn die Anwendung D3D11-Abfragen verwendet, wird diese Funktion möglicherweise nicht mit D3D11_QUERY_EVENT und D3D11_QUERY_TIMESTAMP bei Verwendung von Featureebenen unter 11 berücksichtigt. D3D11_QUERY_PIPELINE_STATISTICS enthält diese Funktion für keine Featureebene.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d3d11.h

Weitere Informationen

ID3D11VideoContext