PFND3DDDI_ENCRYPTIONBLT Rückruffunktion (d3dumddi.h)

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

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 wurde erfolgreich ausgeführt.
E_OUTOFMEMORY EncryptionBlt konnte den erforderlichen Arbeitsspeicher nicht zuordnen.
D3DDDIERR_NOTAVAILABLE Der Treiber unterstützt die EncryptionBlt-Funktion nicht.

Hinweise

Hardware und Treiber können optional EncryptionBlt unterstützen. Einige Hardwaregeräte erfordern möglicherweise auch einen separaten Schlüssel, um die zurückgelesenen Daten zu entschlüsseln. Der Treiber gibt diesen Schlüssel in einem Speicherblock zurück, auf den der pIV-Membervon D3DDDIARG_ENCRYPTIONBLT zeigt.

Wenn Treiber und 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 ordnet. 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 das IV-Element der D3DAES_CTR_IV Struktur in eine Zufallszahl initialisieren (die nicht zu groß ist). Jeder nachfolgende Initialisierungsvektor sollte einfach den IV-Member inkrementieren, wodurch sichergestellt wird, dass die IV immer den Wert erhöht. Dadurch kann die Anwendung überprüfen, ob derselbe IV nie mehrmals mit demselben Schlüsselpaar verwendet wird.

EncryptionBlt kann keine Untergeordneten Rechtecke zurücklesen. EncryptionBlt kann auch teilweise verschlüsselte Puffer nicht zurücklesen, da viele der hardwarebasierten Lösungen nicht verschlüsselte Lesevorgänge aus geschütztem Arbeitsspeicher zulassen.

Die Direct3D-Runtime überprüft, ob sich die vom DstSubResourceIndex-Member von D3DDDIARG_ENCRYPTIONBLT angegebene Zieloberfläche im Systemspeicher befindet und dass keine Dehnung, Farbraumkonvertierung usw. ausgeführt wird. Eine Anwendung sollte sicherstellen, dass der Systemspeicherpuffer ordnungsgemäß ausgerichtet ist und dass 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 stimmen.

Anforderungen

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

Weitere Informationen

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS