使用 OPM DDI

Microsoft DirectX 圖形核心子系統 (Dxgkrnl.sys) 會使用 OPM DDI 來建立 OPM 受保護的輸出、終結 OPM 保護的輸出、取得憑證、設定受保護的輸出、取得受保護輸出的相關信息,以及取得圖形適配卡的相關信息。 DirectX 圖形核心子系統會在呼叫 display miniport 驅動程式的 DxgkDdiQueryInterface 函式時,取得 OPM DDI 函式的指標,以查詢GUID_DEVINTERFACE_OPM和DXGK_OPM_INTERFACE_VERSION_1所識別的介面。 下列順序描述 OPM DDI 通常如何用來建立、操作和終結 OPM 受保護的輸出:

  1. DirectX 圖形核心子系統會呼叫 DxgkDdiOPMCreateProtectedOutput 函式,以建立 OPM 保護的輸出。 OPM 保護的輸出一律對應至一個實體視訊輸出。 DxgkDdiOPMCreateProtectedOutput 會傳回新建立輸出的句柄。

  2. DirectX 圖形核心子系統會呼叫 DxgkDdiOPMGetCertificateSizeDxgkDdiOPMGetCertificate 函式,以取得顯示迷你埠驅動程式的 OPM 憑證或 COPP 憑證及其大小。

    注意

    DxgkDdiOPMCreateProtectedOutputDxgkDdiOPMGetCertificateSizeDxgkDdiOPMGetCertificate 是唯一的 OPM DDI 函式,DirectX 圖形核心子系統不會傳遞受保護的輸出句柄。

  3. DirectX 圖形核心子系統會呼叫 DxgkDdiOPMGetRandomNumber 函式,以取得受保護輸出的隨機數。

  4. DirectX 圖形核心子系統會在對 DxgkDdiOPMSetSigningKeyAndSequenceNumbers 函式的呼叫中傳遞 256 位元組的緩衝區。 緩衝區包含使用其中一個顯示迷你埠驅動程序公鑰加密的數據。 如需公鑰的詳細資訊,請從 輸出內容保護和 Windows Vista 網站下載輸出內容保護檔。 使用的公鑰取決於受保護輸出的語意。 如果受保護的輸出具有 OPM 語意,則會使用顯示迷你埠驅動程式 OPM 憑證中的公鑰。 如果受保護的輸出具有 COPP 語意,則會使用顯示迷你埠驅動程式 COPP 憑證中的公鑰。 用來加密數據的加密配置也取決於受保護輸出的語意。 如果受保護的輸出具有 COPP 語意,並使用 RSAES-OAEP 加密配置,則會使用標準 RSA 演算法來加密數據,如果受保護的輸出具有 OPM 語意。 如需 RSA、AES 和 RSAES-OAEP 的相關信息,請參閱 RSA 實驗室 網站。 顯示迷你埠驅動程式會使用適當的私鑰和解密方法來解密數據。 隨機數、兩個隨機序號和128位 AES 金鑰位於解密的數據中。 顯示迷你埠磁碟驅動器可確保隨機數符合驅動程式在呼叫 DxgkDdiOPMGetRandomNumber 函式時所傳回的隨機數。 驅動程式接著會儲存兩個序號和128位 AES 金鑰。

  5. DirectX 圖形核心子系統現在可以呼叫 DxgkDdiOPMGetInformation 或 DxgkDdiOPMGetCOPPCompatibleInformation 函式,以從受保護的輸出取得資訊。 DirectX 圖形核心子系統也可以呼叫 DxgkDdiOPMConfigureProtectedOutput 來設定受保護的輸出。 只有當輸出具有 OPM 語意且只有在輸出具有 COPP 語意時,才能呼叫 DxgkDdiOPMGetCOPPCompatibleInformation 時呼叫 DxgkDdiOPMGetInformation。 一般而言,DirectX 圖形核心子系統會呼叫 DxgkDdiOPMGetInformation 或 DxgkDdiOPMGetCOPPCompatibleInformation 以取得輸出的相關信息,然後呼叫 DxgkDdiOPMConfigureProtectedOutput 一或多次來設定輸出。 然後,DirectX 圖形核心子系統會再次呼叫 DxgkDdiOPMGetInformationDxgkDdiOPMGetCOPPCompatibleInformation 。 DirectX 圖形核心子系統可以呼叫 DxgkDdiOPMGetInformation 或 DxgkDdiOPMGetCOPPCompatibleInformation 來取得下列類型的資訊:

    • 輸出的連接器類型。
    • 輸出支援的內容保護類型。 輸出目前可支援:
    • 輸出的特定保護類型的目前虛擬保護層級。
    • 特定保護類型的實體輸出實際保護層級。
    • 輸出目前使用的 HDCP 系統更新性訊息 (SRM) 版本。 如需 HDCP SRM 的詳細資訊,請參閱 HDCP 規格修訂 1.1。 只有 DxgkDdiOPMGetInformation 可以取得此資訊。
    • 連接的 HDCP 裝置金鑰選取向量 (KSV) 以及 HDCP 裝置是否為重複項。 只有 DxgkDdiOPMGetCOPPCompatibleInformation 可以取得此資訊。 如需 HDCP 重複程式和 KSV 的詳細資訊,請參閱 HDCP 規格修訂 1.1
    • 圖形配接器所使用的擴充總線類型。 PCI 和 AGP 是擴充總線的範例。
    • 從實體連接器傳送到監視之受保護輸出的影像格式。
    • 受保護輸出支援的 CGMS-A 和 ACP 信號標準。 只有 DxgkDdiOPMGetCOPPCompatibleInformation 可以取得此資訊。
    • 輸出的識別碼。
    • 數位視訊介面 (DVI) 輸出連接器的電氣特性。

    DirectX 圖形核心子系統可以呼叫 DxgkDdiOPMConfigureProtectedOutput 來變更下列設定:

    • 其中一個輸出保護類型的目前保護層級。 例如, DxgkDdiOPMConfigureProtectedOutput 可以啟用或停用 HDCP,並可關閉 ACP 保護或變更目前的 ACP 保護層級。
    • 受保護輸出所使用的目前 HDCP SRM。
    • 受保護輸出所使用的目前訊號標準。 只有在輸出具有 COPP 語意時,才能進行這項變更。
  6. DirectX 圖形核心子系統會在使用受保護的輸出物件完成時呼叫 DxgkDdiOPMDestroyProtectedOutput