共用方式為


管理 PDEV

本主題僅適用于 Windows 2000 和更新版本。

呼叫顯示驅動程式的執行緒數目取決於裝置上現有 PDEV 的數目。 每個裝置每個介面卡輸出最多隻能啟用一個 PDEV,以及無限數目的停用 PDEV。 藉由呼叫驅動程式的 DrvAssertMode 函式來停用或啟用 PDEV。 當顯示驅動程式管理已停用和已啟用 PDEV 的混合時,作業系統允許單一線程呼叫具有已啟用 PDEV 的驅動程式函式,同時允許多個執行緒呼叫具有已停用 PDEV 的驅動程式函式。 例如, DrvBitBlt 可以在啟用的 PDEV 上執行,而 DrvDisableSurface正在終結另一個停用的 PDEV。 即使單一顯示驅動程式管理多個已啟用 PDEV, (例如,在多個監視案例中) ,作業系統仍然只會讓單一線程呼叫驅動程式程式碼,其中任何已啟用 PDEV。

如果顯示驅動程式必須管理 PDEV 之間共用的任何全域資源和硬體狀態,則顯示驅動程式也必須處理任何必要的同步處理。 顯示驅動程式會對應到會話空間,因此每個會話都有自己的一組全域變數。 因此,您不得使用顯示驅動程式全域變數來保存同步處理物件,例如 mutex。 相反地,將 mutex 儲存在視訊迷你埠驅動程式的裝置延伸模組中,該驅動程式會對應到全域空間而非會話空間。 您可以在視訊迷你埠驅動程式的 HwVidInitialize 函式中初始化 Mutex。 然後,顯示驅動程式的 DrvEnablePDEV 函式可以將自訂 IOCTL 傳送至視訊迷你埠驅動程式,以取得 Mutex 的指標。 顯示屬於不同會話的驅動程式執行緒會有個別的指標複本,但所有這些複本都會指向相同的 mutex 物件。

不允許顯示驅動程式直接呼叫取得和釋放 Mutex 的核心常式,因此顯示驅動程式必須依賴視訊迷你埠驅動程式來執行這些工作。 視訊迷你埠驅動程式可以實作可取得和釋放 Mutex 的函式,而顯示驅動程式可以在它用來取得 mutex 本身指標的相同自訂 IOCTL 中取得該函式的指標。

只有下列有限數目的驅動程式函式可以使用停用的 PDEV 呼叫: