DXGKDDI_SYSTEM_DISPLAY_ENABLE回呼函式 (dispmprt.h)
由操作系統呼叫,要求顯示迷你埠驅動程式將目前的顯示裝置重設為指定的狀態。
從 Windows 8 開始,操作系統會在發生系統停止錯誤之後的錯誤檢查作業期間呼叫此函式。
語法
DXGKDDI_SYSTEM_DISPLAY_ENABLE DxgkddiSystemDisplayEnable;
NTSTATUS DxgkddiSystemDisplayEnable(
[in] PVOID MiniportDeviceContext,
[in] D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
[in] PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
[out] UINT *Width,
[out] UINT *Height,
[out] D3DDDIFORMAT *ColorFormat
)
{...}
參數
[in] MiniportDeviceContext
與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式的 DxgkDdiAddDevice 函式先前已將此句柄提供給 Microsoft DirectX 圖形核心子系統。
[in] TargetId
D3DDDI_VIDEO_PRESENT_TARGET_ID值,指定顯示裝置所連線之顯示器適配卡上影片存在目標的標識碼。 此標識元可能是目前影片中剩餘的目標標識符, (VidPn) 在上一次呼叫 DxgkDdiCommitVidPn 期間的狀態。
如需 使用 TargetId 參數的詳細資訊,請參閱下列一節。
[in] Flags
值指標,其中包含旗標的位 OR。 操作系統會保留此成員。
[out] Width
UINT 值,以像素單位指定指定裝置的顯示模式寬度。
[out] Height
UINT 值,以像素單位指定指定裝置的顯示模式高度。
[out] ColorFormat
指定顯示裝置色彩格式 之D3DDDIFORMAT 值的指標。
傳回值
如果成功,DxgkDdiSystemDisplayEnable 會傳回STATUS_SUCCESS。 如果 TargetId 參數所指定的目標未連線到顯示裝置,函式會傳回STATUS_NOT_SUPPORTED。 否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。
備註
顯示迷你埠驅動程式的必要步驟
呼叫 其 DxgkDdiSystemDisplayEnable 函式時,顯示迷你埠驅動程序必須遵循下列步驟:- 驅動程式必須取消 GPU) 作業 (所有圖形處理器,或將 GPU 重設為閑置狀態。
- 操作系統會透過 TargetId 參數指出影片呈現目標。 驅動程式必須讓與這個目標相關聯的顯示器保持開啟且可見。 如果驅動程式無法開啟顯示器電源,它必須無法呼叫此函式。 在這種情況下,操作系統可能會呼叫 DxgkDdiResetDevice 函式,並導致發生系統錯誤檢查。
- 驅動程式必須檢查與此目標相關聯的顯示器連線能力。 如果目標沒有連接顯示器,驅動程式必須完成對此函式的呼叫,並傳回 STATUS_NOT_SUPPORTED 錯誤碼。
- 驅動程式必須停用連接到顯示器配接器之所有其他顯示器的訊號。 如果無法這樣做,驅動程式應該嘗試在所有其他顯示器上放置空白影像。 如果無法這樣做,驅動程式必須讓畫面上的最後一個影像保持不變。
- 驅動程式必須在指定的目標上保留目前的顯示模式,並將此模式提供給操作系統作為此函數調用的一部分。
-
如果驅動程式無法維護目前的顯示模式,或目標不是使用中拓撲的一部分,則驅動程式應該嘗試在另一個目標上設定畫面緩衝區,該目標能夠以每圖元 24 位 24 位的格式顯示解析度至少為 640 x 480 圖元。 如果不可能,驅動程式可能會失敗此函數調用,這會導致系統錯誤檢查和顯示黑色畫面。
驅動程式不需要使用線性框架緩衝區模式。 不過,驅動程式應該支援從具有D3DDDIFORMAT列舉D3DDDIFMT_A8R8G8B8格式的來源寫入此畫面緩衝區。
來源影像限制
驅動程式提供顯示功能的操作系統控件之後,操作系統可以呼叫 DxgkDdiSystemDisplayWrite 函式來更新螢幕影像,並將來自指定來源的影像區塊寫入 DxgkDdiSystemDisplayEnable 函式所重設的畫面。DxgkDdiSystemDisplayWrite 為驅動程式提供來源影像的起始位址,以及步進、寬度和高度。 來源影像的色彩格式一律 D3DDDIFMT_X8R8G8B8。 操作系統保證來源映像位於非分頁記憶體中。
驅動程式必須從 DxgkDdiSystemDisplayWrite 函式的 PositionX 和 PositionY 參數所指定的位置開始,將此來源影像寫入目前畫面。
建議驅動程式使用 CPU 將映像從來源寫入畫面緩衝區,因為系統錯誤檢查可能是因為重複的 逾時偵測和復原 (TDR) 實例造成 GPU 處於未知狀況。
使用非分頁記憶體
呼叫此函式時,可能無法使用 Windows 核心模式函式。DxgkDdiSystemDisplayEnable 可以在任何 IRQL 呼叫,因此它必須位於不可分頁的記憶體中。 DxgkDdiSystemDisplayEnable 不得呼叫任何在可分頁記憶體中的程序代碼,而且不得操作任何在可分頁記憶體中的數據。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 |
最低支援的伺服器 | Windows Server 2012 |
目標平台 | 桌面 |
標頭 | dispmprt.h |
IRQL | 任何層級 (請參閱一節) |
另請參閱
DxgkCbAcquirePostDisplayOwnership