DXGKDDI_COLLECTDBGINFO回调函数 (d3dkmddi.h)
DxgkDdiCollectDbgInfo 函数输出调试报告的驱动程序信息。
语法
DXGKDDI_COLLECTDBGINFO DxgkddiCollectdbginfo;
NTSTATUS DxgkddiCollectdbginfo(
[in] IN_CONST_HANDLE hAdapter,
[in/out] IN_CONST_PDXGKARG_COLLECTDBGINFO pCollectDbgInfo
)
{...}
参数
[in] hAdapter
与显示适配器关联的上下文块的句柄。 显示微型端口 (KMD) 之前在 DxgkDdiAddDevice 的MiniportDeviceContext 输出参数中向 Dxgkrnl 提供了此句柄。
[in/out] pCollectDbgInfo
指向包含调试报表信息的 DXGKARG_COLLECTDBGINFO 结构的指针。
返回值
DxgkDdiCollectDbgInfo 返回以下值之一:
返回代码 | 说明 |
---|---|
STATUS_SUCCESS | DxgkDdiCollectDbgInfo 成功输出调试报告的驱动程序信息;或者,OS 忽略 了 pBuffer 指向的缓冲区中的内容,并且没有将 DxgkDdiCollectDbgInfo 中的信息添加到调试报告。 |
STATUS_NO_MEMORY | DxgkDdiCollectDbgInfo 无法分配完成该操作所需的内存。 |
STATUS_UNSUCCESSFUL | 另一个错误阻止驱动程序收集有效的调试信息。 |
注解
每当 OS 即将生成与驱动程序相关的调试报告时,Dxgkrnl 都会调用 KMD 的 DxgkDdiCollectDbgInfo 函数。 DxgkDdiCollectDbgInfo 可能在 超时检测和恢复 (TDR) 工作 之前或操作系统 bug 检查之前立即调用。 虽然 DxgkDdiCollectDbgInfo 应尽快返回,但驱动程序无法在此函数中花费系统定义的最大时间。
KMD 应收集调试信息。 调用 DxgkDdiCollectDbgInfo 时,驱动程序会在 pCollectDbgInfo-Reason> 中收到一个 bug-检查代码,该代码指示调试报告所需的信息类型。 驱动程序将所需的调试信息复制到 pCollectDbgInfo-pBuffer> 指向的 缓冲区中。 驱动程序可以复制的最大信息字节数由 pCollectDbgInfo-BufferSize> 指定。
DxgkDdiCollectDbgInfo 通常以未定义的 IRQL 运行。 但是,如果 pCollectDbgInfo-Reason> 设置为 VIDEO_TDR_TIMEOUT_DETECTED (以指示适配器范围的重置) 或VIDEO_ENGINE_TIMEOUT_DETECTED (从 Windows 8 开始可用,以指示重置物理适配器) 中的一个或多个节点,驱动程序必须确保 DxgkDdiCollectDbgInfo 可分页,在 IRQL = PASSIVE_LEVEL 运行,并支持零级别的同步。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL (请参阅备注) |