IddCx (間接顯示驅動程式類別 eXtension) 架構會使用可延伸的 UMDF 物件模型來代表間接顯示裝置的各種元件。 UMDF 物件模型可讓驅動程式特定的記憶體與每個 IddCx (以及 UMDF) 物件相關聯。 如需詳細資訊,請參閱 UMDF物件模型。
建立 IDD 物件的順序如下:
- 驅動程式會先建立 IDDCX_ADAPTER 物件。
- 驅動程式接著會建立 IDDCX_MONITOR 物件。
- 建立 IDDCX_ADAPTER 和 IDDCX_MONITOR 對象之後,OS 會建立 IDDCX_SWAPCHAIN 並 IDDCX_OPMCTX 物件,並將其傳送至驅動程式。
下列各節提供這些對象的詳細數據。
IDDCX_ADAPTER
此物件代表驅動程式在兩個階段程式中建立的單一邏輯顯示配接器:
- 驅動程式會呼叫 IddCxAdapterInitAsync 回呼函式。
- OS 會呼叫驅動程式的 EvtIddCxAdapterInitFinished DDI 來完成初始化。
IDD 模型沒有明確的終結配接器回呼。 配接器初始化順序一旦成功完成,配接器將保持有效,直到初始化期間通過的UMDF裝置停止為止。 當間接顯示器驅動程式(IDD)建立配接器時,它會提供有關間接顯示配接器的靜態資訊。
處理多功能裝置
最簡單的情況是,由附加間接顯示裝置的隨插即用子系統所建立的 UMDF 裝置物件與 IDD 所建立 的IDDCX_ADAPTER 對象之間會有一對一對應。
有些更複雜的情況是,單一間接顯示轉接器包含多個隨插即用設備。 例如,間接顯示解決方案可能會有多個 PnP 裝置功能,例如麥克風(音訊驅動程式)和相機(視訊驅動程式)。 在這種情況下,IDD 會負責為每個 PnP 裝置建立的多個 UMDF 裝置物件建立單一 IDDCX_ADAPTER 物件。 驅動程式需要在此案例中考慮下列幾點:
- 只有在成功啟動構成間接顯示解決方案的所有 PnP 裝置之後,才應該建立 IDDCX_ADAPTER 。
- 驅動程式在建立配接器時必須傳遞單一 WDFDEVICE ,因此需要邏輯來決定要傳遞的 UMDF 裝置。
- 如果組成間接顯示介面卡的任何裝置有硬體錯誤,驅動程式應該將組成介面卡的所有裝置報告為錯誤。
IDDCX_MONITOR
此物件代表連線到間接顯示配接器上其中一個連接器的特定監視器。
驅動程式會在兩個階段程式中建立監視器物件:
- 它會先呼叫 IddCxMonitorCreate 回呼來建立 IDDCX_MONITOR 物件。
- 然後,它會呼叫 IddCxMonitorArrival 回呼以完成顯示器的連接。
拔除監視器時,驅動程式會呼叫 IddCxMonitorDeparture 回呼來報告該事件。 此呼叫會導致 IDDCX_MONITOR 物件遭到終結。 即使將相同的顯示器拔除並重新連接,仍然需要再次呼叫 IddCxMonitorDeparture/IddCxMonitorArrival 序列。
IDDCX_MONITOR是IDDCX_ADAPTER物件的子項。
IDDCX_SWAPCHAIN
此物件代表一個 交換鏈,用於將桌面圖像顯示在連接的監視器上。 交換鏈具有多個緩衝區,可讓 OS 在 IDD 存取另一個緩衝區時,在一個緩衝區中撰寫下一個桌面映射。 IDDCX_SWAPCHAIN是IDDCX_MONITOR的子項,因此在任何時候都只有一個分配給定監視器的交換鏈。
OS 會建立和終結 IDDCX_SWAPCHAIN 物件,並使用 EvtIddCxMonitorAssignSwapChain 和 EvtIddCxMonitorUnassignSwapChain 呼叫將它們指派/取消指派給監視器。
IDDCX_OPMCTX
此物件代表來自單一應用程式 OPM 內容的作用中 輸出保護管理員 (OPM) 內容,應用程式可用來控制單一監視器上的輸出保護。 多個 OPM 環境定義可以同時在指定的監視器上處於作用中狀態。 OS 會呼叫驅動程式,以使用驅動程式的 EvtIddCxMonitorOPMCreateProtectedOutput 和 EvtIddCxMonitorOPMDestroyProtectedOutput DDI 呼叫來建立和銷毀 OPM 上下文。