WDDM 1.2 이상에서 PnP(플러그 앤 플레이)
모든 WDDM(Windows 디스플레이 드라이버 모델) 1.2 이상 디스플레이 미니포트 드라이버는 플러그 앤 플레이(PnP) 인프라의 요청 시작 및 중지에 대한 응답으로 다음 동작을 지원해야 합니다. 드라이버가 성공 또는 실패 코드를 반환하는지 또는 시스템 하드웨어가 BIOS(기본 입력/출력 시스템) 또는 UEFI(Unified Extensible Firmware Interface)를 기반으로 하는지 여부에 따라 동작이 달라질 수 있습니다.
최소 WDDM 버전 | 1.2 |
최소 Windows 버전 | 8 |
드라이버 구현-전체 그래픽 및 디스플레이만 | 필수 |
WHCK 요구 사항 및 테스트 | Device.Graphics.WDDM12.Display.PnpStopStartSupport |
미니포트 드라이버 PnP DDI 표시
Windows 8 Microsoft DirectX 그래픽 커널 하위 시스템은 디스플레이 디바이스가 최대 절전 모드에서 시작되거나 다시 시작될 때 드라이버가 호출할 수 있는 이 함수를 제공합니다.
이러한 함수 및 구조는 디스플레이 미니포트 드라이버가 WDDM 1.2 이상 PnP 요구 사항을 구현하는 데 사용할 수 있습니다.
- DxgkDdiStopDeviceAndReleasePostDisplayOwnership
- DxgkDdiSystemDisplayEnable
- DxgkDdiSystemDisplayWrite
- DXGK_DISPLAY_INFORMATION
PnP 시작 작업
디스플레이 디바이스의 플러그 앤 플레이(PnP) 시작 프로세스는 부팅 중 또는 한 디스플레이 드라이버에서 다른 디스플레이 드라이버로 업그레이드하는 동안 발생합니다. 이 경우 드라이버는 DxgkCbAcquirePostDisplayOwnership 함수를 호출하여 프레임 버퍼에 대한 정보를 얻고 디스플레이 동기화를 유지해야 합니다. 프레임 버퍼 정보는 펌웨어 또는 시스템에 로드된 이전 WDDM 1.2 이상 드라이버에서 제공됩니다.
D0 전원 상태로 돌아가려면 운영 체제에서 DxgkDdiSetPowerState 함수를 호출하는 동안 DxgkDdiStartDevice 함수에 WDDM 1.2 이상 드라이버는 원본 표시 유형을 false(DXGKARG_SETVIDPNSOURCEVISIBILITY)로 설정해야 합니다.모든 활성 비디오 현재 네트워크(VidPN) 대상에 대한 Visible = FALSE입니다. 이 경우 디스플레이 파이프라인 하드웨어는 모니터와의 동기화 신호를 유지해야 하지만 파이프라인은 현재 검사 중인 표면에 있는 픽셀 데이터에 관계없이 검은색 픽셀 데이터를 모니터에 계속 보내야 합니다. 즉, 픽셀 파이프라인이 모든 검은색 픽셀로 모니터를 비우도록 보장됩니다. 나중에 첫 번째 프레임이 프레임 버퍼로 렌더링되면 운영 체제는 원본 표시 유형을 true로 설정합니다.
이러한 모든 절차는 모니터를 동기화된 상태로 유지하고 사용자에게 화면에 깜박임 또는 깜박임이 표시되지 않도록 합니다.
PnP 시작 프로세스 후에 드라이버가 반환해야 하는 반환 코드입니다.
드라이버 반환 코드 | Description |
---|---|
성공 |
동작은 Windows 7과 동일합니다. BIOS 기반 시스템의 경우 드라이버가 성공적으로 시작되면 프레임 버퍼는 여전히 활성 상태이며 드라이버는 유효한 모드로 설정할 준비가 되어 있어야 합니다. |
실패 |
BIOS 기반 시스템의 경우 드라이버는 시스템을 BIOS 호환 상태로 유지해야 합니다. UEFI 기반 시스템의 경우 기본 디스플레이 드라이버가 디스플레이를 사용할 수 있도록 드라이버는 UEFI GOP(그래픽 출력 프로토콜)에서 설정한 것과 동일한 모드로 디스플레이를 유지해야 합니다. 드라이버는 유효한 오류 코드를 반환해야 합니다. 드라이버가 기본 표시 드라이버에서 사용할 수 있는 상태로 GOP를 떠날 수 없는 경우 드라이버는 Ntstatus.h에서 STATUS_GRAPHICS_STALE_MODESET 오류 코드를 반환해야 하며 운영 체제로 인해 시스템 버그 검사가 발생합니다. |
PnP 중지 작업
디스플레이 디바이스의 PnP(플러그 앤 플레이) 중지 프로세스는 일반적으로 드라이버가 새 버전으로 업그레이드될 때 발생합니다. 이 경우 운영 체제는 드라이버의 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출하므로 드라이버가 정확한 프레임 버퍼 정보를 제공해야 합니다.
DxgkDdiStopDeviceAndReleasePostDisplayOwnership 호출에서 드라이버는 활성 VidPn 대상에 대한 원본 표시 유형이 true인지 확인해야 합니다(DXGKARG_SETVIDPNSOURCEVISIBILITY.표시 = TRUE). 또한 WDDM 1.2부터 드라이버는 픽셀 파이프라인이 스캔하도록 프로그래밍된 표면이 검은색 픽셀로 채워지도록 해야 합니다. 원본 표시 유형이 true로 설정되기 전에 드라이버가 검은색 픽셀로 표면 채우기를 완료해야 합니다.
드라이버에서 DxgkDdiStopDevice 도 구현해야 합니다. 경우에 따라 운영 체제는 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 대신 DxgkDdiStopDevice를 호출하거나 DxgkDdiStopDeviceAndReleasePostDisplayOwnership에 대한 호출이 실패한 후 DxgkDdiStopDevice를 호출할 수 있습니다.
PnP 중지 프로세스 후에 드라이버가 반환해야 하는 반환 코드입니다.
드라이버 반환 코드 | Description |
---|---|
성공 및 드라이버는 모드 정보를 반환합니다. |
드라이버가 중지되기 전에 현재 해상도를 사용하여 기본 디스플레이 드라이버가 사용할 수 있는 프레임 버퍼를 설정해야 하며, 운영 체제에서 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출할 때 드라이버가 이 정보를 반환해야 합니다. 저장된 모드 정보는 BIOS와 호환될 필요가 없으며 기본 디스플레이 드라이버는 시스템이 다시 부팅될 때까지 BIOS 모드를 제공하지 않습니다. 운영 체제는 DxgkDdiStopDeviceAndReleasePostDisplayOwnership이 STATUS_SUCCESS 반환하는 경우 DxgkDdiStopDevice를 호출하지 않도록 보장합니다. |
성공 및 드라이버는 DXGK_DISPLAY_INFORMATION 구조체의 Width 및 Height 멤버를 0으로 설정합니다. |
이 시나리오는 시스템에 두 개의 그래픽 카드가 있고 모니터가 현재 POST(Power-On 자체 테스트) 디바이스에 연결되지 않고 운영 체제가 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출하여 POST 디바이스를 중지하는 경우에만 가능합니다. 이 경우 현재 디스플레이는 두 번째 그래픽 어댑터에서 계속 실행되고 기본 디스플레이 드라이버는 POST 디바이스를 지원하는 어댑터에서 헤드리스 모드로 실행됩니다. |
실패 |
운영 체제는 DxgkDdiStopDevice 함수를 통해 Windows 7 스타일 PnP 중지 드라이버 인터페이스를 호출합니다. BIOS 기반 시스템의 경우 드라이버는 디스플레이를 BIOS 호환 모드로 설정해야 합니다. UEFI 기반 시스템의 경우 기본 디스플레이 드라이버는 그래픽 어댑터에서 헤드리스 모드로 실행됩니다. |
PnP 및 기타 상태 전환에 대한 추가 요구 사항은 WDDM 1.2 이상에서 원활한 상태 전환 제공을 참조하세요.
하드웨어 인증 요구 사항
하드웨어 디바이스가 이 기능을 구현할 때 충족해야 하는 요구 사항에 대한 자세한 내용은 Device.Graphics.WDDM12.Display.PnpStopStartSupport의 관련 WHCK 설명서를 참조하세요.
Windows 8 추가된 기능에 대한 검토는 WDDM 1.2 기능을 참조하세요.