IddCx 物件
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 裝置在初始化階段通過為止,才會停止。 建立配接器時,驅動程式會提供間接顯示介面卡的靜態配接器資訊。
處理多功能裝置
在最簡單的情況下,附加間接顯示裝置的插播和播放子系統所建立的 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 Ddi 呼叫將其指派給監視。
IDDCX_OPMCTX
此物件代表作用中的 Output Protection Manager (OPM) 內容,應用程式可用來控制單一監視器上的輸出保護。 多個 OPM 內容可以同時在指定的監視器上作用中。 OS 會呼叫驅動程式,以使用驅動程式的 EvtIddCxMonitorOPMCreateProtectedOutput 和 EvtIddCxMonitorOPMDestroyProtectedOutput DDI 呼叫來建立和終結 OPM 內容。