다음을 통해 공유


디스플레이 모드 반환: DrvGetModes

디스플레이 드라이버도 DrvGetModes를 지원해야 합니다. 이 함수는 GDI에 DEVMODEW 구조체 배열에 대한 포인터를 제공합니다. 구조체는 차원(픽셀 및 밀리미터 모두), 평면 수, 평면당 비트, 색 정보 등을 포함하여 지원하는 다양한 모드에 대한 디스플레이의 특성을 정의합니다.

드라이버가 DrvGetModes 함수를 호출할 때 사용 가능한 디스플레이 모드를 메모리에 쓰는 순서는 Windows에서 선택하는 최종 디스플레이 모드에 영향을 줄 수 있습니다. 일반적으로 애플리케이션에서 기본 모드를 지정하지 않으면 시스템에서 드라이버에서 제공하는 목록에서 첫 번째 일치 모드를 선택합니다.

예를 들어 현재 표시 모드가

800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER

및 드라이버는 다음과 같이 사용 가능한 표시 모드 목록을 지정합니다.

Mode 모드 세부 정보
A 600x800x32bpp@60Hz DMDO_270 DMDFO_STRETCH
B 600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH
C 600x800x32bpp@60Hz DMDO_90 DMDFO_CENTER
D 600x800x32bpp@60Hz DMDO_270 DMDFO_CENTER
  • 케이스 1

    애플리케이션이 모니터를 600x800x32bpp@60Hz 설정하려고 하지만 DM_DISPLAYORIENTATION 및 DM_DISPLAYFIXEDOUTPUT 플래그가 DEVMODEWdmFields 멤버에 설정되지 않은 경우 시스템은 방향 및 고정 출력 모드를 선택해야 합니다. 이 경우 시스템은 현재 DMDFO_CENTER 설정과 일치하는 첫 번째 나열 모드이므로 표시 모드 C 를 선택합니다.

  • 케이스 2

    애플리케이션이 모니터를 600x800x32bpp@60Hz DMDFO_STRETCH 설정하려고 하면 시스템에서 디스플레이 모드 A를 선택합니다.

  • 사례 3

    애플리케이션이 모니터를 600x800x32bpp@60Hz DMDO_270 설정하려고 하면 시스템에서 디스플레이 모드 D를 선택합니다.

  • 사례 4

    애플리케이션이 모니터를 600x800x32bpp@60Hz DMDO_DEFAULT 설정하려고 하면 시스템에서 허용 가능한 일치 항목을 찾지 못합니다.

이러한 규칙에는 한 가지 예외가 적용됩니다. 시스템이 디스플레이 방향에 대한 일치를 찾고 방향을 지정하지 않고 현재 모드를 일치시킬 수 없는 경우 시스템은 다른 디스플레이 방향보다 DMDO_DEFAULT 우선 순위를 부여합니다.

예를 들어 현재 표시 모드가

600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH

및 드라이버는 다음과 같이 사용 가능한 표시 모드 목록을 지정합니다.

Mode 모드 세부 정보
A 800x600x32bpp@60Hz DMDO_180 DMDFO_CENTER
B 800x600x32bpp@60Hz DMDO_180 DMDFO_STRETCH
C 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER
D 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_STRETCH

이 경우 애플리케이션이 모니터를 800x600x32bpp@60Hz 설정하려고 하면 시스템에서 디스플레이 모드 D를 선택합니다.