共用方式為


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN回呼函式 (iddcx.h)

作系統會呼叫 EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN,以通知間接顯示驅動程式 (IDD) 適配卡上監視器的模式變更。

語法

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

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

參數

[in] MonitorObject

作系統用來識別受模式變更影響的監視器時,由驅動程式建立的不透明IDDCX_MONITOR句柄。

[in] pInArgs

IDARG_IN_SETSWAPCHAIN 結構的指標,其中包含驅動程式用來設定間接交換鏈的資訊。

傳回值

(NTSTATUS)如果作業成功,回呼函式必須傳回STATUS_SUCCESS,或NT_SUCCESS(status) 等於 TRUE 的另一個狀態值。 如果發生錯誤,IDD 應該會傳回 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN 如果錯誤不會再次發生。 否則,它應該會傳回適當的 NTSTATUS 錯誤碼。 請參閱。

言論

OS 會呼叫 EvtIddCxMonitorAssignSwapChain,讓 IDD 可以設定其框架處理機制。 例如,IDD 可能會建立新的線程來初始化 D3D 裝置,然後在處理框架上循環 (請參閱 ID 驅動程式範例)。

如果 EvtIddCxMonitorAssignSwapChain 傳回成功,IDD 會擁有 IDARG_IN_SETSWAPCHAIN.hSwapChain 物件,並負責呼叫 WdfObjectDelete 停止處理框架時釋放交換鏈物件。 呼叫 EvtIddCxMonitorUnassignSwapChain 時,或在成功傳 回至 evtIddCxMonitorAssignSwapChain之後,在畫面處理迴圈中發生錯誤時,交換鏈處理可能會停止處理框架。 這同時適用於主控台和遠端識別碼配接器,以及所有 IddCx 版本。

從 Windows 10 版本 1903 開始,為了降低使用者的影響(例如,等候 IddCx 檢查驅動程式所花費的時間),IddCx 會在 EvtIddCxMonitorAssignSwapChain 回報 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN以外的錯誤碼時,立即檢查驅動程式。

如果驅動程式傳回 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN,IddCx 會通知桌面撰寫器。 必須建立新的交換鏈,因此 OS 會再次呼叫 EvtIddCxMonitorAssignSwapChain。 只有當發生錯誤的可能性不會再次發生時,標識符驅動程式才應該使用此傳回碼。 也就是說,ID 驅動程式不應該讓使用者擁有無法使用的桌面,因為它傳回錯誤碼,但未執行任何動作,以確保不會再次發生相同的失敗。 例如,如果驅動程式在轉譯適配卡上建立 D3D 裝置時發生錯誤,它可以呼叫 IddCxAdapterSetRenderAdapter 變更為另一張適配卡(可能是另一張 GPU 或 WARP),然後傳回 STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN。 OS 會在新的轉譯適配卡上建立新的交換鏈,並希望避免錯誤。 雖然這個錯誤碼是從 Windows 10 版本 1903 開始定義的,但標識符驅動程式可以在舊版 OS 上傳回此錯誤碼,因此不會有任何影響。

交換鏈中表面的解析度一律與目標模式集相同。

介面的格式將會是驅動程式所支援的格式之一,但是每個取得緩衝區的格式都可以在畫面格到框架所支援的格式之間變更。 驅動程式應該檢查取得的每個緩衝區格式。

要求

要求 價值
最低支援的用戶端 Windows 10
支援的最低伺服器 Windows Server 2016
目標平臺 窗戶
標頭 iddcx.h
IRQL requires_same

另請參閱

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN