(WDDM) 1.2 及更高版本顯示微型端口驅動程序的所有 Windows 顯示驅動程序都必須支持以下行為,以響應即插即用 (PnP) 基礎結構啟動和停止請求。 根據驅動程序返回成功或失敗代碼,或者系統硬件是基于基本輸入/輸出系統 (BIOS) 還是統一可擴展固件接口 (UEFI) ,行為可能會有所不同。
顯示微型端口驅動程序 PnP DDI
從 Windows 8 開始,Microsoft DirectX 圖形內核子系統提供此函數,當顯示設備啟動或從休眠狀態恢復時,驅動程序可以調用該函數:
DxgkCbAcquirePostDisplayOwnership
這些函數和結構可用于顯示微型端口驅動程序,以實現 WDDM 1.2 及更高版本的 PnP 要求:
DxgkDdiStopDeviceAndReleasePostDisplayOwnership
DxgkDdiSystemDisplayEnable
DxgkDdiSystemDisplayWrite
DXGK_DISPLAY_INFORMATION
PnP 啟動操作
在啟動期間或從一個顯示驅動程序升級到另一個顯示驅動程序期間,在顯示設備上發生即插即用 (PnP) 啟動過程。 在這種情況下,驅動程序必須調用 DxgkCbAcquirePostDisplayOwnership 函數來獲取有關幀緩沖區的信息并保持顯示同步。 幀緩沖區信息是從固件或從系統上加載的以前的 WDDM 1.2 及更高版本的驅動程序提供的。
在調用操作系統使 DxgkDdiSetPowerState 函數返回到 D0 電源狀態和 DxgkDdiStartDevice 函數期間,WDDM 1.2 及更高版本的驅動程序必須將源可見性設置為 false (DXGKARG_SETVIDPNSOURCEVISIBILITY。可見 = 所有活動視頻呈現網絡 (VidPN) 目標的 FALSE) 。 在這種情況下,顯示管道硬件必須與監視器保持同步信號,但管道必須繼續將黑色像素數據發送到監視器,無論當前正在掃描的圖面中存在什么像素數據。這意味著,像素管道保證會用所有黑色像素為監視器留空。 稍后,當第一個幀呈現到幀緩沖區中時,操作系統會將源可見性設置為 true。
所有這些過程使監視器保持同步,并確保用戶不會在屏幕上看到閃爍或閃爍。
PnP 停止操作
驅動程序升級到新版本時,通常會在顯示設備上發生即插即用 (PnP) 停止進程。 在這種情況下,操作系統調用驅動程序的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函數,這要求驅動程序提供準確的幀緩沖區信息。
在 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 調用中,驅動程序必須確保活動 VidPn 目標的源可見性為 true, (DXGKARG_SETVIDPNSOURCEVISIBILITY。可見 = TRUE) 。 此外,從 WDDM 1.2 開始,驅動程序需要確保將像素管道編程為從中掃描出來的表面填充黑色像素。 在源可見性設置為 true 之前,驅動程序應使用黑色像素完成表面填充。
此外,請確保在驅動程序中實現 DxgkDdiStopDevice 。 在某些情況下,操作系統可能會調用 DxgkDdiStopDevice 而不是 DxgkDdiStopDeviceAndReleasePostDisplayOwnership,或者在調用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 失敗之后。