DXGKDDI_GETDISPLAYSTATENONINTRUSIVE回呼函式 (dispmprt.h)
操作系統會呼叫顯示迷你埠驅動程式的 DxgkDdiGetDisplayStateNonIntrusive 例程,以非干擾方式從驅動程式收集顯示狀態資訊。
語法
DXGKDDI_GETDISPLAYSTATENONINTRUSIVE DxgkddiGetdisplaystatenonintrusive;
NTSTATUS DxgkddiGetdisplaystatenonintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATENONINTRUSIVE pArgs
)
{...}
參數
[in] Context
DxgkDdiQueryInterface 傳回的私人內容指標。
[in/out] pArgs
DXGKARG_GETDISPLAYSTATENONINTRUSIVE 結構的指標。
傳回值
DxgkDdiGetDisplayStateNonIntrusive 會在成功時傳回STATUS_SUCCESS。 否則會傳回錯誤碼,例如下列其中一項。
錯誤碼 | 意義 |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | 驅動程式內發生一般軟體錯誤。 |
STATUS_ACCESS_DENIED | 硬體目前正由其他線程使用,而且此 DDI 無法存取它。 |
STATUS_DEVICE_HARDWARE_ERROR | 發生一般 HW 錯誤。 |
STATUS_DEVICE_POWERED_OFF | 裝置已關閉電源。 |
備註
OS 會呼叫 DxgkDdiGetDisplayStateNonIntrusive 來收集驅動程序的顯示狀態資訊。 不同於 DxgkDdiGetDisplayStateIntrusive,驅動程式的 DxgkDdiGetDisplayStateNonIntrusive 例程不應該對使用者執行任何造成可見副作用的作業,而且收集程式在幾毫秒內) 最好是相對快速 (。 此例程的呼叫頻率會相對高。 除了呼叫來診斷錯誤的用戶狀態之外,OS 也可能使用此例程來記錄驅動程式的歷程記錄狀態資訊,以供偵錯之用。
在少數情況下,平臺特定實作需要驅動程式在呼叫 DxgkDdiGetDisplayStateNonIntrusive 時執行干擾作業,驅動程式應該執行作業,但必須將 pArgs-ReturnSubStatus> 設定為DXGK_DIAG_GETDISPLAYSTATE_CAUSED_GLITCH或據以DXGK_DIAG_GETDISPLAYSTATE_CHANGED_DISPLAY_STATE。 根據 ReturnSubStatus 值,操作系統 (OS) 只能針對指定系統上的錯誤案例呼叫此例程。
OS 會定期呼叫 DxgkDdiGetDisplayStateNonIntrusive 經常 (或其他經常發生的事件,) 收集驅動程式狀態數據以進行偵錯,並查看歷程記錄時間軸。 OS 也會在特定錯誤案例中呼叫此例程 (,例如黑色螢幕) ,再呼叫 DxgkDdiGetDisplayStateIntrusive 來收集更詳細的資訊。 假設此通話的可能頻率,驅動程式應該儘快完成。 OS 會呼叫此 DDI,並將 NumOfTargets 設定為所指定圖形適配卡所支援的目標數目上限,並填入 VidPnTargetId 。 迷你埠驅動程序應該只會填入實際連接監視器的目標顯示狀態資訊。 對於沒有連線監視器的 vidpntarget,迷你埠應該只會填入DXGK_DIAG_DISPLAY_CONNECTIVITY,而 OS 將會忽略該目標的其他所有字段。
注意
驅動程式應該只使用 ReturnSubStatus 來報告錯誤狀況,而不使用DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED來報告監視連線狀態。 DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED的主要用途是干擾呼叫,其中OS不會詢問監視連線能力。
如果在收集資訊時,驅動程式在指定的 vidpntarget 上遇到失敗,它應該使用 ReturnSubStatus 來設定錯誤狀態,並繼續進行下一個 vidpntarget,而且除非所有路徑叫用失敗,否則不會讓整體呼叫失敗。 驅動程式應該會在某些內部錯誤記錄檔中記錄此呼叫期間發生的錯誤,如此一來,當OS呼叫 DxgkDdiCollectDiagnosticInfo 以收集黑箱資訊時,這些錯誤會擷取為內部記錄檔收集的一部分,以協助偵錯期間 IHD。
此 DDI 的同步 處理層級為零層級同步處理。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 2004) |
標頭 | dispmprt.h |
另請參閱
DXGKARG_GETDISPLAYSTATENONINTRUSIVE