共用方式為


鏡像驅動程式

概觀

從 Windows 8 開始,鏡像驅動程式將不會安裝在系統上。 本節所述的鏡像驅動程式只會在舊版 Windows 上安裝和執行。

不過,特殊 GDI 協助工具驅動程式模型可從Windows 8開始提供給想要為身心障礙或障礙客戶提供輔助技術的開發人員。 若要深入瞭解此特殊驅動程式模型,請連絡 acc_driver@microsoft.com

以鏡像驅動程式架構為基礎的遠端顯示驅動程式模型也可以從 Windows 8 開始執行,但已在 Windows 10 2004 版中移除。 如需詳細資訊,請參閱 遠端顯示驅動程式

注意

從Windows 10起,不再建議針對新產品使用 GDI 協助工具驅動程式,Microsoft 將會在未來的作業系統版本中移除支援。 Windows 10 2004 版已移除 GDI 遠端顯示驅動程式的支援。 不過,建立遠端顯示解決方案仍可藉由建置自訂 遠端通訊協定提供者間接顯示驅動程式來達成。

鏡像驅動程式描述

鏡像驅動程式是虛擬裝置的顯示驅動程式,可鏡像一或多個額外的實體顯示裝置的繪圖作業。 它實作且行為與任何其他顯示驅動程式非常類似;不過,相較于典型的迷你埠驅動程式,其配對的視訊迷你埠驅動程式是最小的。 如需鏡像系統中迷你埠驅動程式的詳細資訊 ,請參閱視訊 Miniport 驅動程式中的鏡像驅動程式支援 (Windows 2000 模型) 。 Windows 驅動程式套件 (WDK) 透過 Windows 7 版本 (7600) 包含範例鏡像驅動程式,其中包含包含在三個目錄中的元件來源檔案。

Directory 包含 的來源檔案
\src\video\displays\mirror\disp 鏡像驅動程式。
\src\video\miniport\mirror\mini 迷你埠驅動程式。
\src\video\displays\mirror\app 使用者模式服務。 也包含 mirror.inf。

GDI 支援 虛擬桌面 ,並提供在鏡像裝置上複寫虛擬桌面部分的能力。 GDI 會將虛擬桌面實作為實體顯示驅動程式層上方的圖形層。 所有繪圖作業都會從此虛擬桌面空間開始;GDI 裁剪,並在存在於虛擬桌面的適當實體顯示裝置上轉譯它們。

鏡像裝置可以在虛擬桌面中指定任意 剪輯區域 ,包括跨越多個實體顯示裝置的裝置。 然後 GDI 會傳送鏡像裝置,所有與該驅動程式剪輯區域交集的繪圖作業。 鏡像裝置可以設定完全符合特定實體裝置的剪輯區域;因此,它可以有效地鏡像該裝置。

注意

在 Windows 2000 和更新版本中,鏡像驅動程式的剪輯區域必須包含主要顯示裝置。

在 Windows Vista 和更新版本中,載入鏡像驅動程式時,將會關閉桌面 Windows 管理員 (DWM) 。

鏡像驅動程式程式碼範例說明如何實作鏡像驅動程式。 如需可協助您瞭解範例的詳細資訊:

  • 使用範例 INF 檔案 mirror.inf作為範本。 如需詳細資訊 ,請參閱鏡像驅動程式 INF 檔案
  • 請參閱 mirror.exe 應用程式,其中示範如何將鏡像驅動程式附加至虛擬桌面。 如需詳細資訊 ,請參閱鏡像驅動程式安裝
  • 如需使用 Win32 EnumDisplayDevices 函式的相關資訊,請參閱 Windows SDK 檔。 您可以使用此函式來判斷與鏡像顯示裝置相關聯的 \\.\Display# 名稱。 需要此號碼才能變更鏡像裝置的設定。 對於多個實例而言, # 每個實例都是不同的數位;因此,您必須逐一查看可用的顯示裝置來判斷這個數位。

將鏡像裝置連結至全域桌面

  1. 將REG_DWORD登錄專案 Attach.ToDesktop 新增至驅動程式的服務機碼。

  2. 將此機碼的專案設定為 1 (一個) 。

若要停用鏡像驅動程式,請將這個專案設定為 0 (零) 。

如先前所述,驅動程式會安裝並在位於裝置層上方的繪圖層中運作。 因為鏡像驅動程式的座標空間是桌面座標空間,所以可以跨越多個裝置。 如果鏡像驅動程式是要鏡像主要顯示器,其顯示座標應該與主要顯示器的桌面座標一致。

  • 安裝鏡像驅動程式之後,將會針對與驅動程式顯示區域交集的所有轉譯作業呼叫它。 在 多監視器系統上,如果鏡像驅動程式只與主要顯示裝置重迭,這可能不包含所有繪圖作業。

  • 建議使用使用者模式服務來維護鏡像驅動程式的設定。 此應用程式可確保驅動程式在開機時正確載入,並可透過WM_DISPLAYCHANGE訊息取得顯示變更的通知,以適當地回應桌面的變更。

  • GDI 會針對與驅動程式周框交集的任何 2D 圖形 DDI 繪圖作業呼叫鏡像驅動程式。 請注意,如果表面是裝置格式點陣圖,GDI 不會執行周框檢查;也就是說,如果 SURFOBJiType STYPE_DEVBITMAP。

  • 一如往常,必須實作鏡像驅動程式,而不需使用全域變數。 所有狀態都必須存在於該特定驅動程式的 PDEV 中。 GDI 會針對視訊迷你埠驅動程式所建立的每個硬體裝置擴充功能呼叫 DrvEnablePDEV

  • 鏡像驅動程式不應支援 DirectDraw。

  • 鏡像驅動程式必須在DEVINFO結構的flGraphicsCaps成員中,將GCAPS_LAYERED旗標設定為TRUE

  • 協助工具鏡像驅動程式必須在DEVINFO結構的flGraphicsCaps2成員中,將GCAPS2_EXCLUDELAYERED和GCAPS2_INCLUDEAPIBITMAPS旗標設定為TRUE

  • 鏡像驅動程式可藉由實作 DrvRealizeBrush,選擇性地支援筆刷實現。

GDI 可讓相同的驅動程式同時在單一和多監視器系統上執行。 多監視器系統中的驅動程式只需要追蹤其在全域桌面內的位置。 GDI 會在發生 Win32 ChangeDisplaySettings呼叫時提供此位置給驅動程式,例如當使用者使用 主控台 中的 Display 程式動態變更監視器在桌面上的位置時。 GDI 會在發生這類變更時,據以更新DEVMODEW結構的dmPosition成員。 驅動程式可以藉由實作 DrvNotify來接收這類變更的通知。 如需詳細資訊 ,請參閱鏡像驅動程式安裝

注意

在用戶端以這類精確度轉譯時,不需要鏡像驅動程式以圖元完美精確度轉譯。 例如,接收鏡像影像的配接器/監視器不需要轉譯 Grid Intersect Quantization (GIQ) 線條繪圖和多邊形填滿與要鏡像之配接器/監視器相同的精確度。