PFND3DDDI_DECRYPTIONBLT Rückruffunktion (d3dumddi.h)

Die DecryptionBlt-Funktion schreibt Daten auf eine geschützte Oberfläche.

Syntax

PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;

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

Parameter

hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in]

Ein Zeiger auf eine D3DDDIARG_DECRYPTIONBLT-Struktur , die die Parameter des entschlüsselten Bitblockübertragungsvorgangs (Bitblt) beschreibt.

Rückgabewert

DecryptionBlt gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der entschlüsselte Bitblt-Vorgang wurde erfolgreich ausgeführt.
E_OUTOFMEMORY DecryptionBlt konnte nicht den erforderlichen Arbeitsspeicher zuordnen, um ihn abzuschließen.
D3DDDIERR_NOTAVAILABLE Der Treiber unterstützt die DecryptionBlt-Funktion nicht.

Hinweise

Hardware und Treiber können optional DecryptionBlt für einige Kryptotypen unterstützen.

Wenn die aufrufende Anwendung die Verwendung eines Inhaltsschlüssels erfordert, verwendet die Anwendung den Inhaltsschlüssel zum Verschlüsseln der Daten und den Sitzungsschlüssel, um den Inhaltsschlüssel zu verschlüsseln, bevor der Inhaltsschlüssel im Speicherblock übergeben wird, auf den das pContentKey-Elementvon D3DDDIARG_DECRYPTIONBLT zeigt. Wenn pContentKeyNULL ist, gibt dies an, dass die Anwendung den Sitzungsschlüssel verwendet hat, um die Daten zu verschlüsseln.

Wenn die CreateCryptoSession-Funktion des Treibers zuvor die Verschlüsselungssitzung mit dem CryptoType-Member der D3DDDIARG_CREATECRYPTOSESSION-Struktur erstellt hat, der auf D3DCRYPTOTYPE_AES128_CTR festgelegt ist, verweist der pIV-Member von D3DDDIARG_DECRYPTIONBLT auf die DXVADDI_PVP_HW_IV-Struktur und enthält den Initialisierungsvektor, den die Anwendung zum Verschlüsseln des Puffers verwendet hat. Die DecryptionBlt-Funktion des Treibers sollte fehlschlagen, wenn ermittelt wird, dass der Initialisierungsvektor zuvor für denselben Inhaltsschlüssel (oder Sitzungsschlüssel, wenn der Inhaltsschlüssel nicht verwendet wird) verwendet wurde. Die Anwendung sollte den IV-Member der DXVADDI_PVP_HW_IV-Struktur für jeden Puffer erhöhen, den die Anwendung verschlüsselt. Daher kann die DecryptionBlt-Funktion des Treibers fehlschlagen, wenn der IV-Member kleiner oder gleich dem vorherigen IV-Wert ist, der an DecryptionBlt übergeben wurde.

Wenn der Treiber und die Hardware teilweise verschlüsselte Puffer unterstützen, gibt das pEncryptedBlockInfo-Element von D3DDDIARG_DECRYPTIONBLT die verschlüsselten Teile des Puffers und die Teile an, die nicht verschlüsselt sind. Wenn der gesamte Puffer verschlüsselt ist, sollte pEncryptedBlockInfoNULL sein.

DecryptionBlt kann keine Untergeordneten Rechtecke schreiben.

Die Direct3D-Runtime überprüft, ob sich die vom SrcSubResourceIndex-Member der D3DDDIARG_DECRYPTIONBLT-Struktur angegebene Quelloberfläche im Systemspeicher befindet und dass keine Dehnung, Keine Farbraumkonvertierung usw. ausgeführt wird. Eine Anwendung sollte sicherstellen, dass der Systemspeicherpuffer ordnungsgemäß ausgerichtet ist und dass die Größe des Puffers mit der Zieloberfläche übereinstimmt. Der Treiber sollte die Speicherausrichtung und die Puffergröße (SrcResourceSize-Member von D3DDDIARG_DECRYPTIONBLT) überprüfen und fehlschlagen, wenn diese Bedingungen nicht korrekt sind.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) DecryptionBlt wird ab dem Windows 7-Betriebssystem unterstützt.
Zielplattform Desktop
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS