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