共用方式為


間接顯示驅動程式概觀

間接顯示驅動程式 (IDD) 模型提供簡單的使用者模式驅動程式模型,以支援未連線到傳統 GPU 顯示器輸出的監視器。 需要 IDD 的一些典型案例包括:

  • 透過網路將顯示輸出串流至遠端用戶端(遠端顯示)。
  • 為虛擬桌面環境等應用程式建立虛擬監視器(虛擬顯示器)。
  • 透過具有一般監視器(VGA、DVI、HDMI、DP 等)連線到計算機的電腦。

IDD 實作

IDD 是裝置的第三方提供的 UMDF 驅動程式。 您可以使用 IddCx (間接顯示驅動程式類別 eXtension) 所公開的功能來開發 IDD,以下列方式與 Windows 圖形子系統進行介面:

  • 建立代表間接顯示裝置的圖形配接器。
  • 報告與系統連線和中斷連線的監視器。
  • 提供線上之監視器的描述。
  • 提供可用的顯示模式。
  • 支援其他顯示功能,例如硬體滑鼠游標、gamma、I2C 通訊,以及受保護的內容。
  • 處理桌面影像以在監視器上顯示。

由於IDD是UMDF驅動程式,因此也會負責實作所有 UMDF 功能,例如裝置通訊、電源管理、隨插即用等等。

IDD 會在會話 0執行,而沒有任何元件在用戶會話中執行,因此任何驅動程式不穩定都不會影響整個系統的穩定性。

下圖提供架構概觀。

顯示 UMDF 架構內間接顯示驅動程式的圖表。

使用者模式模型

IDD 是僅限使用者模式的模型,不支持內核模式元件。 因此,驅動程式可以使用任何 DirectX API 來處理桌面映像。 事實上,IddCx 會提供桌面影像,以在 DirectX 介面中編碼。

驅動程式不應該呼叫不適合驅動程式使用的使用者模式 API,例如 GDI、視窗 API、OpenGL 或 Vulkan。

IDD 應建置為 通用 Windows 驅動程式 ,以便在多個 Windows 平臺上使用。

在建置階段:

  • UMDF IDD 會宣告其所建置的 IddCx 版本。
  • OS 可確保載入驅動程式時,會載入正確的 IddCx 版本。

IddCx 回呼和函式命名慣例

前置詞 類型 備註
EVT_IDD_CX_XXX IDD 回呼函式 IDD 會實作iddCx特定的回呼,例如EVT_IDD_CX_ADAPTER_COMMIT_MODES,以及相關的WDF回呼,例如EVT_WDF_DEVICE_D0_EXIT。
IddCxXxx 函式 系統提供的IddCx類別擴充函式,IDD可以呼叫;例如,IddCxAdapterInitAsync
PFN_IDDCX_XXX IddCx 函式的指標 IDD 不會使用這些指標。 相反地,驅動程式應該使用對等 的 IddCxXxx 函式。

範例指令碼

Microsoft提供 Windows 驅動程式範例 GitHub 上的 IDD 實作範例。 此範例示範如何連接監視器、如何回應模式集,以及如何接收畫面格。