다음을 통해 공유


OPM DDI 사용

Microsoft DirectX 그래픽 커널 하위 시스템(Dxgkrnl.sys)은 OPM DDI를 사용하여 OPM 보호 출력을 만들고, OPM으로 보호된 출력을 삭제하고, 인증서를 다운로드하고, 보호된 출력을 구성하고, 보호된 출력에 대한 정보를 얻고, 그래픽 어댑터에 대한 정보를 가져옵니다. DirectX 그래픽 커널 하위 시스템은 디스플레이 미니포트 드라이버의 DxgkDdiQueryInterface 함수를 호출하여 GUID_DEVINTERFACE_OPM 및 DXGK_OPM_INTERFACE_VERSION_1 식별되는 인터페이스를 쿼리할 때 OPM DDI 함수에 대한 포인터를 가져옵니다. 다음 시퀀스는 일반적으로 OPM DDI를 사용하여 OPM 보호 출력을 만들고 조작하고 삭제하는 방법을 설명합니다.

  1. DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMCreateProtectedOutput 함수를 호출하여 OPM 보호 출력을 만듭니다. OPM 보호 출력은 항상 정확히 하나의 실제 비디오 출력에 해당합니다. DxgkDdiOPMCreateProtectedOutput 은 새로 만든 출력에 대한 핸들을 반환합니다.

  2. DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMGetCertificateSize DxgkDdiOPMGetCertificate 함수를 호출하여 디스플레이 미니포트 드라이버의 OPM 인증서 또는 COPP 인증서 및 크기를 가져옵니다.

    참고 항목

    DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSizeDxgkDdiOPMGetCertificate 는 DirectX 그래픽 커널 하위 시스템이 보호된 출력 핸들을 전달하지 않는 유일한 OPM DDI 함수입니다.

  3. DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMGetRandomNumber 함수를 호출하여 보호된 출력의 난수를 가져옵니다.

  4. DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMSetSigningKeyAndSequenceNumbers 함수에 대한 호출에서 256바이트 버퍼를 전달합니다. 버퍼에는 디스플레이 미니포트 드라이버의 공개 키 중 하나로 암호화된 데이터가 포함됩니다. 공개 키에 대한 자세한 내용은 출력 콘텐츠 보호 및 Windows Vista 웹 사이트에서 출력 콘텐츠 보호 문서를 다운로드하세요. 사용되는 공개 키는 보호된 출력의 의미 체계에 따라 달라집니다. 보호된 출력에 OPM 의미 체계가 있는 경우 디스플레이 미니포트 드라이버의 OPM 인증서의 공개 키가 사용됩니다. 보호된 출력에 COPP 의미 체계가 있는 경우 디스플레이 미니포트 드라이버의 COPP 인증서의 공개 키가 사용됩니다. 데이터를 암호화하는 데 사용되는 암호화 체계도 보호된 출력의 의미 체계에 따라 달라집니다. 보호된 출력에 COPP 의미 체계가 있고 보호된 출력에 OPM 의미 체계가 있는 경우 RSAES-OAEP 암호화 체계를 사용하여 데이터가 표준 RSA 알고리즘으로 암호화됩니다. RSA, AES 및 RSAES-OAEP에 대한 자세한 내용은 RSA Labies 웹 사이트를 참조하세요. 디스플레이 미니포트 드라이버는 적절한 프라이빗 키 및 암호 해독 방법을 사용하여 데이터의 암호를 해독합니다. 난수, 두 개의 난수 시퀀스 번호 및 128비트 AES 키는 암호 해독된 데이터에 있습니다. 디스플레이 미니포트 드라이브는 DxgkDdiOPMGetRandomNumber 함수가 호출될 때 드라이버가 반환한 난수와 난수를 일치하도록 합니다. 그런 다음 드라이버는 두 시퀀스 번호와 128비트 AES 키를 저장합니다.

  5. 이제 DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMGetInformation 또는 DxgkDdiOPMGetCOPPCompatibleInformation 함수를 호출하여 보호된 출력에서 정보를 가져올 수 있습니다. DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMConfigureProtectedOutput을 호출하여 보호된 출력을 구성할 수도 있습니다. 출력에 OPM 의미 체계가 있고 출력에 COPP 의미 체계가 있는 경우에만 DxgkDdiOPMGetInformation을 호출할 수 있습니다. 일반적으로 DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMGetInformation 또는 DxgkDdiOPMGetCOPPCompatibleInformation을 호출하여 출력에 대한 정보를 얻고 DxgkDdiOPMConfigureProtectedOutput을 한 번 이상 호출하여 출력을 구성합니다. 그런 다음 DirectX 그래픽 커널 하위 시스템은 DxgkDdiOPMGetInformation 또는 DxgkDdiOPMGetCOPPCompatibleInformation을 다시 호출합니다. 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을 호출합니다.