Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Abschnitt gilt nur für Windows 7 und höher und Windows Server 2008 R2 und höhere Versionen von Windows-Betriebssystem.
Der Inhaltsschutz-DDI ist eine Erweiterung von Direct3D, Version 9 DDI zum Schutz von Videos. Der Inhaltsschutz-DDI besteht aus den Einstiegspunkten, die in diesem Abschnitt beschrieben werden.
Erforderliche DDI-Funktionen für den Inhaltsschutz
Wenn der Inhaltsschutz im Anzeigetreiber für den Benutzermodus implementiert ist, muss der Treiber die folgenden DDI-Funktionen für den Inhaltsschutz unterstützen:
Die CreateAuthenticatedChannel-Funktion erstellt einen Kanal, den die Direct3D-Laufzeit und der Treiber zum Festlegen und Abfragen von Schutzmaßnahmen verwenden kann.
Die AuthenticatedChannelKeyExchange-Funktion handelt den Sitzungsschlüssel aus.
Die QueryAuthenticatedChannel-Funktion fragt einen authentifizierten Kanal nach Funktions- und Statusinformationen ab.
Die ConfigureAuthenticatedChannel-Funktion legt den Status innerhalb eines authentifizierten Kanals fest.
Die DestroyAuthenticatedChannel-Funktion gibt Ressourcen für einen authentifizierten Kanal frei.
Die CreateCryptoSession-Funktion erstellt eine Kryptositzung, die von der Direct3D-Laufzeit zum Verwalten eines Sitzungsschlüssels und zum Ausführen von Kryptovorgängen in und außerhalb des geschützten Speichers verwendet wird.
Die CryptoSessionKeyExchange-Funktion handelt den Sitzungsschlüssel aus.
Die DestroyCryptoSession-Funktion gibt Ressourcen für eine Verschlüsselungssitzung frei.
Funktionen zum Schutz von Inhalten
Der Anzeigetreiber für den Benutzermodus meldet nur Inhaltsschutzfunktionen, wenn er jede der vorherigen erforderlichen DDI-Funktionen für den Inhaltsschutz unterstützt. Die folgenden D3DDDICAPS_TYPE-Werte werden von der Direct3D-Laufzeitumgebung verwendet, um Informationen über die Inhaltsschutzfunktionen abzurufen, die der Anzeigetreiber im Benutzermodus unterstützt. Die Laufzeit legt diese D3DDDICAPS_TYPE Werte im Type-Element der D3DDDIARG_GETCAPS-Struktur fest, auf die der pData-Parameter der GetCaps-Funktion des Treibers verweist, wenn die Laufzeit GetCaps aufruft.
D3DDDICAPS_GETCONTENTPROTECTIONCAPS
Die Laufzeit stellt einen Zeiger auf eine DDICONTENTPROTECTIONCAPS-Struktur für die spezifische Verschlüsselungs- und Decodierungskombination bereit, die der Treiber verwenden soll. Der Treiber gibt einen Zeiger auf eine aufgefüllte D3DCONTENTPROTECTIONCAPS Struktur zurück, die die Inhaltsschutzfunktionen des Treibers für die Verschlüsselungs- und Decodierungskombination beschreibt. Weitere Informationen zu D3DCONTENTPROTECTIONCAPS finden Sie in der DirectX SDK-Dokumentation.
D3DDDICAPS_GETCERTIFICATESIZE
Der Treiber stellt einen Zeiger auf eine Zahl bereit, die die Größe des Treiberzertifikats in Byte angibt, das für einen Kanal oder Kryptotyp verwendet wird. Die Direct3D-Laufzeit verwendet dann diese Größe, um einen Puffer für die Zertifikatinformationen zuzuweisen, die die Laufzeit empfängt, wenn die Laufzeit GetCaps mit D3DDDICAPS_GETCERTIFICATE aufruft.
D3DDDICAPS_GETCERTIFICATE
Die Laufzeit stellt einen Zeiger auf eine DDICERTIFICATEINFO-Struktur bereit, die das Zertifikat beschreibt, das der Treiber abrufen soll.
Für einen authentifizierten Kanal verwendet der Treiber das vorhandene OPM-Zertifikat , bei dem es sich um ein X.509-Zertifikat handelt, das von Microsoft signiert ist.
Eine Anwendung kann das Zertifikat des Treibers abfragen, um die folgenden Informationen zu ermitteln:
Gibt an, ob der Treiber vertrauenswürdig ist.
Gibt an, ob der Treiber widerrufen wird.
Der öffentliche Schlüssel des Treibers. Die Anwendung verwendet den öffentlichen Schlüssel des Treibers, um einen Sitzungsschlüssel für einen authentifizierten Kanal einzurichten, der für die Authentifizierung verwendet wird.
Ein Aufruf von GetCaps mit D3DDDICAPS_GETCERTIFICATE Set schlägt fehl, wenn für den authentifizierten Direct3D 9-Kanal aufgerufen wird, da dieser Kanal kein Zertifikat oder eine Authentifizierung unterstützt.
Bei einer Kryptositzung gibt der Treiber sein Zertifikat für den gegebenen Kryptotyp zurück. Abhängig vom Kryptotyp und dem verwendeten Schlüsselaustausch kann ein Zertifikat verwendet oder nicht verwendet werden. Es ist auch möglich, dass verschiedene Kryptotypen unterschiedliche Zertifikate verwenden können.
Optionale DDI-Funktionen für den Inhaltsschutz
Der Treiber kann optional die folgenden DDI-Funktionen für den Inhaltsschutz unterstützen:
Die EncryptionBlt-Funktion liest verschlüsselte Daten aus einer geschützten Oberfläche vor.
Die GetPitch-Funktion ruft den Neigungswinkel einer geschützten Oberfläche ab.
Die StartSessionKeyRefresh-Funktion gibt eine Zufallszahl zurück, die der Decoder/die Anwendung und die Treiber/Hardware anschließend verwenden können, um einen exklusiven OR-Vorgang (XOR) mit dem Sitzungsschlüssel auszuführen.
Die Funktion FinishSessionKeyRefresh gibt an, dass alle Puffer aus diesem Zeitpunkt den aktualisierten Sitzungsschlüsselwert verwenden.
Die GetEncryptionBltKey-Funktion gibt den Schlüssel zurück, der zum Entschlüsseln der Daten verwendet wird, die von der EncryptionBlt-Funktion des Treibers zurückgegeben werden.
Die DecryptionBlt-Funktion schreibt Daten auf eine geschützte Oberfläche.
Inhaltsgeschützte Ressourcen
Die folgenden D3DDDI_RESOURCEFLAGS Flags werden von der Direct3D-Laufzeit für geschützte Inhalte verwendet. Die Laufzeit legt diese D3DDDI_RESOURCEFLAGS-Flags im Flags-Mitglied der D3DDDIARG_CREATERESOURCE-Struktur fest, auf die der pResource-Parameter der CreateResource-Funktion des Treibers verweist, wenn die Laufzeit CreateResource aufruft.
RestrictedContent
Die Ressource kann geschützte Inhalte enthalten. Eine Anwendung könnte oder könnte auch nicht explizit den Inhaltsschutz aktiviert haben, bevor sie eine Ressource erstellt. Der Treiber sollte sicherstellen, dass die Laufzeit die Zuordnung für die Ressource in einem Speicherpool platziert, der geschützt werden kann. Der Treiber sollte die Erstellung von sperrbaren geschützten Ressourcen ermöglichen. Der Treiber sollte jedoch explizit die Aufrufe der Lock-Funktion fehlschlagen, um diese Oberflächen zu sperren, während der Inhaltsschutz aktiviert ist.
RestrictSharedAccess
Nur bestimmte Prozesse sollten auf die freigegebene Ressource zugreifen dürfen.
Der Treiber sollte den geteilten Zugriff auf diese Ressource einschränken. Die Laufzeit kann nur die OpenResource-Funktion des Treibers aufrufen, um diese Ressource mit Anzeigegeräten (hDevice) innerhalb des Prozesses zu öffnen, in dem die Ressource erstellt wurde, oder von geräten, die explizit zugriff über den authentifizierten Kanal gewährt wurden.