다음을 통해 공유


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN 콜백 함수(iddcx.h)

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN 어댑터의 모니터에 대한 모드 변경에 대한 간접 표시 드라이버(IDD)를 알리기 위해 OS에서 호출됩니다.

통사론

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

NTSTATUS EvtIddCxMonitorAssignSwapchain(
  [in] IDDCX_MONITOR MonitorObject,
  [in] const IDARG_IN_SETSWAPCHAIN *pInArgs
)
{...}

매개 변수

[in] MonitorObject

OS에서 모드 변경의 영향을 받은 모니터를 식별하는 데 사용하는 불투명한 드라이버 생성 IDDCX_MONITOR 핸들입니다.

[in] pInArgs

간접 스왑 체인을 설정하는 데 사용할 드라이버에 대한 정보가 포함된 IDARG_IN_SETSWAPCHAIN 구조체에 대한 포인터입니다.

반환 값

(NTSTATUS) 작업이 성공하면 콜백 함수는 STATUS_SUCCESS 반환하거나 NT_SUCCESS(status)가 TRUE인 다른 상태 값을 반환해야 합니다. 오류가 발생하면 IDD는 오류가 다시 발생하지 않을 가능성이 높은 경우 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN 반환해야 합니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드를 반환해야 합니다. 비고를 참조하세요.

발언

OS는 IDD가 프레임 처리 메커니즘을 설정할 수 있도록 EvtIddCxMonitorAssignSwapChain 호출합니다. 예를 들어 IDD는 D3D 디바이스를 초기화하는 새 스레드를 만든 다음, 프레임 처리를 반복할 수 있습니다(ID 드라이버 샘플참조).

EvtIddCxMonitorAssignSwapChain 성공이 반환되면 IDD는 IDARG_IN_SETSWAPCHAIN.hSwapChain 개체를 소유하고 WdfObjectDelete 호출하여 프레임 처리를 중지할 때 스왑 체인 개체를 해제합니다. 스왑 체인 처리는 EvtIddCxMonitorUnassignSwapChain 호출되거나 성공이 EvtIddCxMonitorAssignSwapChain반환된 후 프레임 처리 루프에서 오류가 발생할 때 프레임 처리를 중지할 수 있습니다. 콘솔 및 원격 ID 어댑터와 모든 IddCx 버전 모두에 적용됩니다.

Windows 10 버전 1903부터 사용자 영향을 줄이기 위해(예: IddCx에서 드라이버 버그를 검사하는 데 소요된 시간) IddCx는 EvtIddCxMonitorAssignSwapChainSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN이외의 오류 코드를 보고하는 경우 드라이버를 즉시 버그 검사합니다.

드라이버가 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN반환하는 경우 IddCx는 데스크톱 작성자에게 알릴 것입니다. 새 스왑 체인을 만들어야 하므로 OS는 EvtIddCxMonitorAssignSwapChain다시 호출합니다. ID 드라이버는 방금 발생한 오류가 다시 발생하지 않을 가능성이 높은 경우에만 이 반환 코드를 사용해야 합니다. 즉, ID 드라이버는 오류 코드를 반환하지만 동일한 오류가 다시 발생하지 않도록 하기 위해 아무 작업도 수행하지 않았기 때문에 사용자에게 사용할 수 없는 데스크톱을 남겨 두면 안 됩니다. 예를 들어 드라이버가 렌더링 어댑터에서 D3D 디바이스를 만드는 동안 오류가 발생하면 iddCxAdapterSetRenderAdapter호출하여 다른 어댑터(아마도 다른 GPU 또는 WARP)로 변경한 다음 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN반환할 수 있습니다. OS는 새 렌더링 어댑터에 새 스왑 체인을 만들고 오류를 방지할 수 있습니다. 이 오류 코드는 Windows 10 버전 1903부터 정의되지만 ID 드라이버는 이전 OS 릴리스에서 이 오류 코드를 반환할 수 있으므로 아무런 효과가 없습니다.

스왑 체인의 표면 해상도는 항상 대상 모드 집합과 동일한 해상도입니다.

표면의 형식은 드라이버에서 지원하는 형식 중 하나이지만 획득된 각 버퍼의 형식은 프레임에서 프레임으로 지원되는 형식 간에 변경될 수 있습니다. 드라이버는 획득한 각 버퍼의 형식을 확인해야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 Windows
헤더 iddcx.h
IRQL requires_same

참고 항목

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN