DXGKDDI_COLLECTDBGINFO2回调函数 (d3dkmddi.h)

DxgkDdiCollectDbgInfo2 函数输出调试报告的驱动程序信息。

语法

DXGKDDI_COLLECTDBGINFO2 DxgkddiCollectdbginfo2;

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

参数

hAdapter

[in]与显示适配器关联的上下文块的句柄。 显示微型端口 (KMD) 以前在 DxgkDdiAddDeviceMiniportDeviceContext 输出参数中向 Dxgkrnl 提供了此句柄。

pCollectDbgInfo2

[in/out]指向包含调试报表信息的 DXGKARG_COLLECTDBGINFO2 结构的指针。

返回值

DxgkDdiCollectDbgInfo2 返回以下值之一:

返回代码 说明
STATUS_SUCCESS DxgkDdiCollectDbgInfo2 成功输出调试报告的驱动程序信息;或者,OS 忽略 pBuffer 指向的缓冲区中的内容,并且未将 DxgkDdiCollectDbgInfo2 中的信息添加到调试报告。
STATUS_NO_MEMORY DxgkDdiCollectDbgInfo2 无法分配完成该操作所需的内存。
STATUS_UNSUCCESSFUL 另一个错误阻止驱动程序收集有效的调试信息。

注解

每当 OS 即将生成与驱动程序相关的调试报告时,Dxgkrnl 都会调用 KMD 的 DxgkDdiCollectDbgInfo2 函数。 DxgkDdiCollectDbgInfo2 可能在 超时检测和恢复 (TDR) 工作 之前或操作系统 bug 检查之前立即调用。 虽然 DxgkDdiCollectDbgInfo2 应尽快返回,但驱动程序无法在此函数中花费系统定义的最长时间。

与 DxgkDdiCollectDbgInfo 相比, DxgkDdiCollectDbgInfo 接收有关 TDR 根本原因的详细信息。 KMD 可以保存与负责 TDR 的 GPU 部分相关的状态。

  • 实现 DxgkddiCollectDbgInfo2 不需要 WDDM 3.2 驱动程序,在这种情况下,OS 调用 DxgkddiCollectDbgInfo

KMD 应收集调试信息。 调用 DxgkDdiCollectDbgInfo2 时,驱动程序会在 pCollectDbgInfo2-Reason> 中收到一个 bug-检查代码,该代码指示调试报告所需的信息类型。 驱动程序将所需的调试信息复制到 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