디스플레이 모드 반환: 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 플래그가 DEVMODEW의 dmFields 멤버에 설정되지 않은 경우 시스템은 방향 및 고정 출력 모드를 선택해야 합니다. 이 경우 시스템은 현재 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를 선택합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기