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(상태)이 TRUE인 다른 상태 값을 반환해야 합니다. 오류가 발생하면 오류가 다시 발생하지 않을 가능성이 있는 경우 IDD에서 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN 반환해야 합니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드를 반환해야 합니다. 설명 부분을 참조하세요.

설명

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

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

EvtIddCxMonitorAssignSwapChainSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN 이외의 오류 코드를 보고하는 경우 사용자 영향을 줄이기 위해 Windows 10 버전 1903부터 IddCx가 드라이버 버그 검사를 위해 IddCx를 즉시 버그 검사합니다.

드라이버가 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