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