다음을 통해 공유


간접 디스플레이 드라이버 개요

IDD(간접 디스플레이 드라이버) 모델은 기존 GPU 디스플레이 출력에 연결되지 않은 모니터를 지원하는 간단한 사용자 모드 드라이버 모델을 제공합니다. 예를 들어 일반(VGA, DVI, HDMI, DP 등) 모니터가 연결된 USB를 통해 PC에 연결된 동글에는 IDD가 필요합니다.

IDD 구현

IDD는 디바이스에 대해 타사에서 제공하는 UMDF 드라이버입니다. IDD는 IddCx(간접 디스플레이 드라이버 클래스 eXtension)에서 노출하는 기능을 사용하여 다음과 같은 방법으로 Windows 그래픽 하위 시스템과 인터페이스하도록 개발됩니다.

  • 간접 디스플레이 디바이스를 나타내는 그래픽 어댑터 만들기
  • 시스템에서 연결되고 연결이 끊어진 보고서 모니터
  • 연결된 모니터에 대한 설명 제공
  • 사용 가능한 디스플레이 모드 제공
  • 하드웨어 마우스 커서, 감마, I2C 통신 및 보호된 콘텐츠와 같은 다른 디스플레이 기능 지원
  • 모니터에 표시할 데스크톱 이미지 처리

IDD는 UMDF 드라이버이므로 디바이스 통신, 전원 관리, 플러그 앤 플레이 등과 같은 모든 UMDF 기능을 구현해야 합니다.

IDD는 사용자 세션에서 실행되는 구성 요소 없이 세션 0 에서 실행되므로 드라이버 불안정성이 시스템 전체의 안정성에 영향을 주지 않습니다.

다음 다이어그램은 아키텍처 개요를 제공합니다.

UMDF 아키텍처 내의 간접 디스플레이 드라이버를 보여 주는 다이어그램

사용자 모드 모델

IDD는 커널 모드 구성 요소를 지원하지 않는 사용자 모드 전용 모델입니다. 따라서 드라이버는 데스크톱 이미지를 처리하기 위해 DirectX API를 사용할 수 있습니다. 실제로 IddCx는 DirectX 화면에서 인코딩할 데스크톱 이미지를 제공합니다.

참고

드라이버는 GDI, 창 API, OpenGL 또는 Vulkan과 같이 드라이버 사용에 적합하지 않은 사용자 모드 API를 호출해서는 안 됩니다.

IDD는 여러 Windows 플랫폼에서 사용할 수 있도록 유니버설 Windows 드라이버 로 빌드해야 합니다.

빌드 시:

  • UMDF IDD는 빌드된 IddCx 버전을 선언합니다.
  • OS는 드라이버가 로드될 때 올바른 버전의 IddCx가 로드되도록 합니다.

IddCx 콜백 및 함수 명명 규칙

접두사 형식 참고
EVT_IDD_CX_XXX IDD 콜백 함수 IDD는 EVT_IDD_CX_ADAPTER_COMMIT_MODES 같은 IddCx 관련 콜백과 EVT_WDF_DEVICE_D0_EXIT 같은 관련 WDF 콜백을 모두 구현합니다.
IddCxXxx 함수 IDD가 호출할 수 있는 시스템 제공 IddCx 클래스 확장 함수 예를 들어 IddCxAdapterInitAsync입니다.
PFN_IDDCX_XXX IddCx 함수에 대한 포인터 IDD는 이러한 포인터를 사용하지 않습니다. 대신 드라이버는 동등한 IddCxXxx 함수를 사용해야 합니다.

예제 코드

Microsoft는 Windows 드라이버 샘플 GitHub에서 샘플 IDD 구현을 제공합니다. 이 샘플에서는 모니터를 연결하는 방법, 모드 집합에 응답하는 방법 및 프레임을 받는 방법을 보여 줍니다.