Freigeben über


IDirect3DCryptoSession9::EncryptionBlt-Methode (d3d9.h)

Liest verschlüsselte Daten von einer geschützten Oberfläche.

Syntax

HRESULT EncryptionBlt(
  IDirect3DSurface9 *pSrcSurface,
  IDirect3DSurface9 *pDstSurface,
  UINT              DstSurfaceSize,
  VOID              *pIV
);

Parameter

pSrcSurface

Zeiger auf die geschützte Oberfläche.

pDstSurface

Zeiger auf eine Oberfläche, die die verschlüsselten Daten empfängt.

DstSurfaceSize

Die Größe des Oberflächenspeichers, auf den pDstSurface in Bytes verweist. Die Größe muss am Wert von BlockAlignmentSize in der Struktur der Treiberfunktionen ausgerichtet werden. siehe Hinweise.

pIV

Zeiger auf einen Puffer, der den Initialisierungsvektor (IV) empfängt. Der Aufrufer ordnet diesen Puffer zu, aber der Treiber generiert den IV.

Wenn der Verschlüsselungstyp D3DCRYPTOTYPE_AES128_CTR (128-Bit-AES-CTR) ist, verweist pIV auf eine D3DAES_CTR_IV-Struktur . Wenn der Treiber den ersten IV generiert, initialisiert er die Struktur in einer Zufallszahl. Für jeden nachfolgenden IV erhöht der Fahrer einfach den IV-Member der Struktur, um sicherzustellen, dass der Wert immer steigt. Mit diesem Verfahren kann die Anwendung überprüfen, ob dieselbe IV nie mehr als einmal mit demselben Schlüsselpaar verwendet wird.

Für andere Verschlüsselungstypen kann eine andere Struktur verwendet werden, oder die Verschlüsselung verwendet möglicherweise keinen IV.

Rückgabewert

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Wenn der Treiber diese Methode unterstützt, wird das D3DCPCAPS_ENCRYPTEDREADBACK-Flag in der Funktionsstruktur festgelegt, die von der IDirect3DDevice9Video::GetContentProtectionCaps-Methode zurückgegeben wird.

Wenn der Treiber das D3DCPCAPS_ENCRYPTEDREADBACKKEY-Funktionsflag festlegt, bedeutet dies, dass der Treiber einen separaten Schlüssel zum Verschlüsseln der Daten verwendet. Rufen Sie zum Abrufen dieses Schlüssels die IDirect3DCryptoSession9::GetEncryptionBltKey-Methode auf. Andernfalls verwendet der Treiber den Sitzungsschlüssel, um die Daten zu verschlüsseln.

Ordnen Sie die Zieloberfläche (pDstSurface) wie folgt zu:

  1. Rufen Sie IDirect3DCryptoSession9::GetSurfacePitch auf, um den Schritt der geschützten Oberfläche zu erhalten.
  2. Rufen Sie die GetContentProtectionCaps-Methode auf, um den Wert der BufferAlignmentStart - und BlockAlignmentSize-Member in der D3DCONTENTPROTECTIONCAPS-Struktur abzurufen.
  3. Berechnen Sie die Mindestgröße des Oberflächenspeichers als SysMemSize = geschützte Oberflächenschritte × geschützte Oberflächenhöhe.
  4. Fügen Sie eine Auffüllung hinzu, um die Werte von BufferAlignmentStart und BlockAlignmentSize zu berücksichtigen.
  5. Weisen Sie einen Puffer im Systemspeicher zu, wobei die Größe sysMemSize (einschließlich Auffüllung) entspricht.
  6. Wenn die Adresse des Systemspeicherpuffers nicht am Wert von BufferAlignmentStart ausgerichtet ist, berechnen Sie einen speicherorientierten Zeiger, der ein Offset vom Anfang des Puffers ist.
  7. Rufen Sie IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx auf, um die Zieloberfläche zu erstellen. Übergeben Sie den speicherorientierten Zeiger als Handle für freigegebene Ressourcen (pSharedHandle).
Für diese Methode gelten die folgenden Einschränkungen:
  • Die -Methode kann keine subrectangles oder teilweise verschlüsselten Oberflächen zurücklesen.
  • Die geschützte Oberfläche muss entweder eine Offscreen-Oberfläche oder ein Renderziel sein.
  • Die Zieloberfläche muss eine Systemspeicheroberfläche sein, die wie zuvor beschrieben mit der richtigen Ausrichtung erstellt wurde.
  • Die geschützte Oberfläche kann nicht mehrfach gesampt werden.
  • Die -Methode unterstützt keine Dehnung oder Farbraumkonvertierung.
Wenn Sie die Zieloberfläche sperren, stimmt die in der D3DLOCKED_RECT-Struktur gemeldete Schritt möglicherweise nicht mit dem Schritt der geschützten Oberfläche überein. Wenn Sie die Daten interpretieren, verwenden Sie jedoch immer den Stride der geschützten Oberfläche.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile d3d9.h

Weitere Informationen

GPU-basierter Inhaltsschutz

IDirect3DCryptoSession9