Freigeben über


PFND3DDDI_ENCRYPTIONBLT Rückruffunktion (d3dumddi.h)

Die EncryptionBlt--Funktion liest verschlüsselte Daten aus einer geschützten Oberfläche vor.

Syntax

PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;

HRESULT Pfnd3dddiEncryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}

Parameter

hDevice

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

unnamedParam2

pData- [in]

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

Rückgabewert

EncryptionBlt gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der verschlüsselte Bitblt-Vorgang wird erfolgreich ausgeführt.
E_OUTOFMEMORY EncryptionBlt konnte den erforderlichen Arbeitsspeicher nicht zuordnen, damit dieser abgeschlossen werden kann.
D3DDDIERR_NOTAVAILABLE Der Treiber unterstützt die EncryptionBlt-Funktion nicht.

Bemerkungen

Hardware und Treiber können optional EncryptionBlt-unterstützen. Einige Hardware erfordert möglicherweise auch die Verwendung eines separaten Schlüssels zum Entschlüsseln der zurückgelesenen Daten. Der Treiber gibt diesen Schlüssel in einem Speicherblock zurück, auf den der pIV Member von D3DDDIARG_ENCRYPTIONBLT verweist.

Wenn der Treiber und die Hardware einen separaten Schlüssel für die Verschlüsselungsbitblt verwenden, muss die Anwendung diese Tatsache erkennen und den Schlüssel verwenden.

Wenn der Kryptotyp D3DCRYPTOTYPE_AES128_CTR ist, verweist pIV- auf eine D3DAES_CTR_IV Struktur, die die Anwendung zuweist. Der tatsächliche Inhalt der D3DAES_CTR_IV Struktur wird jedoch vom Treiber und der Hardware ausgefüllt. Wenn der Treiber und die Hardware den ersten Initialisierungsvektor generieren, sollten sie den IV- Member der D3DAES_CTR_IV Struktur auf eine Zufallszahl initialisieren (das ist nicht zu groß). Jeder nachfolgende Initialisierungsvektor sollte einfach den IV Member erhöhen, wodurch sichergestellt wird, dass die IV- immer in Wert steigt. Mit dieser Tatsache kann die Anwendung überprüfen, ob dieselbe IV- nie mehrmals mit demselben Schlüsselpaar verwendet wird.

EncryptionBlt- können keine Unterrechtecke zurücklesen. EncryptionBlt- können auch teilweise verschlüsselte Puffer nicht lesen, da viele der hardwarebasierten Lösungen keine nicht verschlüsselten Lesevorgänge aus geschütztem Speicher zulassen.

Die Direct3D-Laufzeit überprüft, ob sich die zieloberfläche, die durch den DstSubResourceIndex Member von D3DDDIARG_ENCRYPTIONBLT im Systemspeicher befindet und dass keine Dehnung, Farbraumkonvertierung usw. ausgeführt wird. Eine Anwendung sollte sicherstellen, dass der Systemspeicherpuffer ordnungsgemäß ausgerichtet ist und die Größe des Puffers der Quelloberfläche entspricht. Der Treiber sollte die Speicherausrichtung und die Puffergröße (DstResourceSize Member von D3DDDIARG_ENCRYPTIONBLT) überprüfen und fehlschlagen, wenn diese Bedingungen nicht korrekt sind.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- EncryptionBlt wird ab dem Windows 7-Betriebssystem unterstützt.
Zielplattform- Desktop
Header- d3dumddi.h (include D3dumddi.h)

Siehe auch

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS