Verwenden der OPM-DDI

Das Microsoft DirectX-Grafik-Kernel-Subsystem (Dxgkrnl.sys) verwendet den OPM DDI, um OPM-geschützte Ausgaben zu erstellen, OPM-geschützte Ausgaben zu zerstören, Zertifikate abzurufen, geschützte Ausgaben zu konfigurieren, Informationen zu geschützten Ausgaben abzurufen und Informationen über den Grafikadapter abzurufen. Das DirectX-Grafikkernelsubsystem erhält Zeiger auf die OPM-DDI-Funktionen, wenn es die Funktion DxgkDdiQueryInterface des Anzeige-Miniporttreibers aufruft, um die Schnittstelle abzufragen, die durch GUID_DEVINTERFACE_OPM und DXGK_OPM_INTERFACE_VERSION_1 identifiziert wird. Die folgende Sequenz beschreibt, wie die OPM DDI in der Regel verwendet wird, um OPM-geschützte Ausgaben zu erstellen, zu bearbeiten und zu zerstören:

  1. Das DirectX-Grafik-Kernelsubsystem ruft die DxgkDdiOPMCreateProtectedOutput-Funktion auf, um eine OPM-geschützte Ausgabe zu erstellen. Eine OPM-geschützte Ausgabe entspricht immer genau einer physischen Videoausgabe. DxgkDdiOPMCreateProtectedOutput gibt ein Handle an die neu erstellte Ausgabe zurück.

  2. Das DirectX-Grafikkernelsubsystem ruft die Funktionen DxgkDdiOPMGetCertificateSize und DxgkDdiOPMGetCertificate auf, um das OPM-Zertifikat bzw. COPP-Zertifikat des Anzeige-Miniporttreibers und dessen Größe abzurufen.

    Hinweis

    DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSize und DxgkDdiOPMGetCertificate sind die einzigen OPM DDI-Funktionen, an die das DirectX-Grafik-Kernel-Subsystem kein geschütztes Ausgabehandle übergibt.

  3. Das DirectX-Grafik-Kernelsubsystem ruft die DxgkDdiOPMGetRandomNumber-Funktion auf, um die Zufallszahl der geschützten Ausgabe abzurufen.

  4. auf, um das OPM-Zertifikat bzw. COPP-Zertifikat des Anzeige-Miniporttreibers und dessen Größe abzurufen. DxgkDdiOPMSetSigningKeyAndSequenceNumbers-Funktion. Der Puffer enthält Daten, die mit einem der öffentlichen Schlüssel des Anzeigeminiporttreibers verschlüsselt sind. Weitere Informationen zu öffentlichen Schlüsseln finden Sie im Ausgabeinhaltsschutz-Dokument auf der Website Output Content Protection und Windows Vista. Der verwendete öffentliche Schlüssel hängt von der Semantik der geschützten Ausgabe ab. Der öffentliche Schlüssel im OPM-Zertifikat des Anzeigeminiporttreibers wird verwendet, wenn die geschützte Ausgabe OPM-Semantik aufweist. Der öffentliche Schlüssel im COPP-Zertifikat des Anzeigeminiporttreibers wird verwendet, wenn die geschützte Ausgabe COPP-Semantik aufweist. Das Verschlüsselungsschema, das zum Verschlüsseln der Daten verwendet wird, hängt auch von der Semantik der geschützten Ausgabe ab. Die Daten werden mit dem standardmäßigen RSA-Algorithmus verschlüsselt, wenn die geschützte Ausgabe über COPP-Semantik und mit dem RSAES-OAEP-Verschlüsselungsschema verfügt, wenn die geschützte Ausgabe OPM-Semantik aufweist. Informationen zu RSA, AES und RSAES-OAEP finden Sie auf der RSA Laboratories-Website . Der Anzeige-Miniporttreiber verwendet den entsprechenden privaten Schlüssel und die Entschlüsselungsmethode, um die Daten zu entschlüsseln. Eine Zufallszahl, zwei Zufallsreihenzahlen und ein 128-Bit-AES-Schlüssel befinden sich in den entschlüsselten Daten. Das Miniportlaufwerk für die Anzeige stellt sicher, dass die Zufallszahl mit der Zufallszahl übereinstimmt, die der Treiber zurückgegeben hat, als seine DxgkDdiOPMGetRandomNumber-Funktion aufgerufen wurde. Der Treiber speichert dann die beiden Sequenznummern und die 128-Bit-AES-Taste.

  5. Das DirectX-Grafik-Kernelsubsystem kann jetzt die DxgkDdiOPMGetInformation- oder DxgkDdiOPMGetCOPPCompatibleInformation-Funktion aufrufen, um Informationen aus einer geschützten Ausgabe abzurufen Das DirectX-Grafik-Kernelsubsystem kann auch DxgkDdiOPMConfigureProtectedOutput aufrufen, um eine geschützte Ausgabe zu konfigurieren. DxgkDdiOPMGetInformation kann nur aufgerufen werden, wenn die Ausgabe OPM-Semantik aufweist und DxgkDdiOPMGetCOPPCompatibleInformation kann nur aufgerufen werden, wenn die Ausgabe COPP aufweist. In der Regel ruft das DirectX-Grafik-Kernelsubsystem DxgkDdiOPMGetInformation oder DxgkDdiOPMGetCOPPCompatibleInformation auf, um Informationen über die Ausgabe abzurufen, und ruft dann DxgkDdiOPMConfigureProtectedOutput ein oder mehrere Male auf, um die Ausgabe zu konfigurieren. Anschließend ruft das DirectX-Kernelsubsystem DxgkDdiOPMGetInformation oder DxgkDdiOPMGetCOPPCompatibleInformation erneut auf. Das DirectX-Grafik-Kernelsubsystem kann die folgenden Informationstypen abrufen, indem DxgkDdiOPMGetInformation oder DxgkDdiOPMGetCOPPCompatibleInformation aufgerufen wird:

    • Der Connector-Typ der Ausgabe.
    • Die Typen des Inhaltsschutzes, die von der Ausgabe unterstützt werden. Ausgaben können zurzeit folgendes unterstützen:
    • Die aktuelle virtuelle Schutzebene der Ausgabe für einen bestimmten Schutztyp.
    • Die tatsächliche Schutzstufe der physischen Ausgabe für einen bestimmten Schutztyp.
    • Die Version der HDCP System Renewability Message (SRM), die die Ausgabe derzeit verwendet. Weitere Informationen zu HDCP SRM finden Sie in der HDCP Spezifikation Revision 1.1. Nur DxgkDdiOPMGetInformation kann diese Informationen abrufen.
    • Der verbundene HDCP-Geräteschlüsselauswahlvektor (Key Selection Vector, KSV) und ob es sich bei dem HDCP-Gerät um einen Repeater handelt. Nur DxgkDdiOPMGetCOPPCompatibleInformation kann diese Informationen abrufen. Weitere Informationen zu HDCP-Repeatern und KSVs finden Sie in der HDCP Spezifikation Revision 1.1.
    • Der Typ des Erweiterungsbus, den der Grafikadapter verwendet. PCI und AGP sind Beispiele für Erweiterungsbusse.
    • Das Format der Bilder, die vom physischen Verbinder gesendet werden, der der geschützten Ausgabe an einen Monitor zugeordnet ist.
    • Die CGMS-A- und ACP-Signalisierungsstandards, die von der geschützten Ausgabe unterstützt werden. Nur DxgkDdiOPMGetCOPPCompatibleInformation kann diese Informationen abrufen.
    • Der Bezeichner der Ausgabe.
    • Die elektrischen Eigenschaften eines DIGITAL Video Interface (DVI)-Ausgangsanschlusses.

    Das DirectX-Grafik-Kernelsubsystem kann die folgenden Einstellungen ändern, indem DxgkDdiOPMConfigureProtectedOutput aufgerufen wird:

    • Die aktuelle Schutzebene eines der Schutztypen der Ausgabe. Beispielsweise kann DxgkDdiOPMConfigureProtectedOutput HDCP aktivieren oder deaktivieren und den ACP-Schutz deaktivieren oder die aktuelle ACP-Schutzebene ändern.
    • Der aktuelle HDCP SRM, den die geschützte Ausgabe verwendet.
    • Der aktuelle Signalisierungsstandard, den die geschützte Ausgabe verwendet. Diese Änderung kann nur durchgeführt werden, wenn die Ausgabe ÜBER COPP-Semantik verfügt.
  6. Das DirectX-Grafik-Kernelsubsystem ruft DxgkDdiOPMDestroyProtectedOutput auf, wenn es mit der Verwendung des geschützten Ausgabeobjekts fertig ist.