DXGKARG_COLLECTDBGINFO2 结构 (d3dkmddi.h)

DXGKARG_COLLECTDBGINFO 结构描述调用 DxgkDdiCollectDbgInfo2 时调试报告的信息。

语法

typedef struct _DXGKARG_COLLECTDBGINFO2 {
  UINT                       Reason;
  VOID                       *pBuffer;
  SIZE_T                     BufferSize;
  DXGKARG_COLLECTDBGINFO_EXT *pExtension;
  DXGK_TDR_TYPE              TdrType;
  UINT                       TdrPayloadSize;
  VOID                       *TdrPayload;
} DXGKARG_COLLECTDBGINFO2;

成员

Reason

[in]在 pBuffer 指向的缓冲区中返回调试信息的 bug 检查代码。 以下是可能的值:

含义
VIDEO_TDR_TIMEOUT_DETECTED 0x117 DxgkDdiResetEngine 操作已重置逻辑适配器。
VIDEO_ENGINE_TIMEOUT_DETECTED 0x141 DxgkDdiResetEngine 操作已重置物理适配器中的一个或多个节点。 从 Windows 8 开始可用。

pBuffer

[out]指向缓冲区的指针,该缓冲区因 Reason 指定的原因接收调试信息。

BufferSize

要复制到 pBuffer 指向的缓冲区的最大大小(以字节为单位)。

pExtension

指向操作系统分配 的DXGKARG_COLLECTDBGINFO_EXT 结构的指针,驱动程序可以选择使用调试扩展信息填充该结构。

TdrType

[in] 一个DXGK_TDR_TYPE 值,该值指定发生的 TDR 的类型。

TdrPayloadSize

[in] TdrPayload 指向的 TDR 有效负载的大小(以字节为单位)。

TdrPayload

[in]指向缓冲区的指针,该缓冲区包含特定于某些 TdrType 值的有效负载,如下表所示。 此缓冲区可以为 NULL。

TdrType 关联的结构
DXGK_TDR_TYPE_ENGINE_TIMEOUT TdrPayload 指向 DXGK_TDR_PAYLOAD_ENGINE_TIMEOUT 结构。
DXGK_TDR_TYPE_VSYNC_TIMEOUT TdrPayload 指向 DXGK_TDR_PAYLOAD_VSYNC_TIMEOUT 结构。

注解

DXGKARG_COLLECTDBGINFO2的布局与 DXGKARG_COLLECTDBGINFO 向后兼容,以允许 DxgkDdiCollectDbgInfo2 实现根据需要重复使用现有的 DxgkDdiCollectDbgInfo 帮助程序。 因此, ReasonpBufferBufferSizepExtension 字段具有相同的语义。

对于在 TdrType) 中指定的某些 TDR 类型 (,OS 在 TdrPayloadSize 字节的 TdrPayload 缓冲区中提供其他信息。 它可以是 NULL,并且驱动程序应处理这种情况而不会崩溃。

当有效负载不为 NULL 时,可以将其强制转换为对应于 TDR 类型的结构。 OS 可能会以向后兼容的方式增长这些结构,并在末尾添加新字段。 在访问 TdrPayload 字段之前,驱动程序必须检查 TdrPayloadSize,以确保 OS 实现所需的有效负载版本或更高版本。

TdrPayload 指向的内存仅在 DxgkddiCollectDbgInfo2 调用期间有效。 驱动程序不应在 DxgkddiCollectDbgInfo2 调用结束时存储指向 TdrPayload 的指针。

有关详细信息,请参阅 TDR 可调试性改进

要求

要求
最低受支持的客户端 Windows 11,版本 24H2 (WDDM 3.2)
标头 d3dkmddi.h

另请参阅

DXGK_TDR_TYPE

DxgkDdiCollectDbgInfo

DxgkDdiCollectDbgInfo2