共用方式為


DXGKDDI_COLLECTDBGINFO2回呼函式 (d3dkmddi.h)

DxgkDdiCollectDbgInfo2 函式會輸出偵錯報告的驅動程序資訊。

語法

DXGKDDI_COLLECTDBGINFO2 DxgkddiCollectdbginfo2;

NTSTATUS DxgkddiCollectdbginfo2(
  IN_CONST_HANDLE hAdapter,
  INOUT_PDXGKARG_COLLECTDBGINFO2 pCollectDbgInfo2
)
{...}

參數

hAdapter

[in]與顯示配接器相關聯的內容區塊句柄。 先前在 MiniportDeviceContextDxgkDdiAddDeviceMiniportDeviceContext 輸出參數中,提供了此句柄來 Dxgkkrnl

pCollectDbgInfo2

[in/out]包含偵錯報表資訊的 DXGKARG_COLLECTDBGINFO2 結構的指標。

傳回值

DxgkDdiCollectDbgInfo2 會傳回下列其中一個值:

傳回碼 描述
STATUS_SUCCESS DxgkDdiCollectDbgInfo2 成功輸出偵錯報告的驅動程序資訊;或者,OS 會忽略緩衝區中 pBuffer 指向的內容,而且不會將來自 DxgkDdiCollectDbgInfo2 的資訊新增至偵錯報表。
STATUS_NO_MEMORY DxgkDdiCollectDbgInfo2 無法配置完成所需的記憶體。
STATUS_UNSUCCESSFUL 另一個錯誤導致驅動程式無法收集有效的偵錯資訊。

言論

每當 OS 即將產生驅動程式相關偵錯報告時,Dxgkrnl 呼叫 KMD 的 DxgkDdiCollectDbgInfo2 函式。 DxgkDdiCollectDbgInfo2 可能會在 逾時偵測和復原 (TDR) 工作 或作系統錯誤檢查之前立即呼叫。 雖然 DxgkDdiCollectDbgInfo2 應該儘快傳回,但沒有系統定義的驅動程式可以花費在此函式中的最大時間量。

DxgkDdiCollectDbgInfo2 收到 TDR 根本原因比 DxgkDdiCollectDbgInfo 更詳細的資訊。 KMD 可以儲存與負責 TDR 之 GPU 部分相關的狀態。

  • 不需要 WDDM 3.2 驅動程式才能實作 DxgkddiCollectDbgInfo2,在此情況下,OS 會呼叫 DxgkddiCollectDbgInfo

KMD 應該收集偵錯資訊。 呼叫 DxgkDdiCollectDbgInfo2 時,驅動程式會在 pCollectDbgInfo2->Reason中收到錯誤檢查碼,指出偵錯報表所需的信息類型。 驅動程式會將必要的偵錯資訊複製到 pCollectDbgInfo2->pBuffer 指向的緩衝區。 驅動程式可以複製的資訊位元組數目上限是由 pCollectDbgInfo2->BufferSize所指定。

DxgkDdiCollectDbgInfo 通常會在未定義的 IRQL 上執行。 不過,如果 pCollectDbgInfo2->Reason 設定為 VIDEO_TDR_TIMEOUT_DETECTED (表示全適配卡重設) 或 VIDEO_ENGINE_TIMEOUT_DETECTED (從 Windows 8 開始,表示實體適配卡內的一或多個節點重設),驅動程式必須確保 DxgkDdiCollectDbgInfo2 可分頁, 在 IRQL = PASSIVE_LEVEL執行,並支援 同步處理零層級

如需詳細資訊,請參閱 TDR 偵錯性改善。

要求

要求 價值
最低支援的用戶端 Windows 11 版本 24H2 (WDDM 3.2)
標頭 d3dkmddi.h
IRQL PASSIVE_LEVEL(請參閱)

另請參閱

DXGKARG_COLLECTDBGINFO2

DxgkDdiCollectDbgInfo