DXGKARG_COLLECTDBGINFO2 structure (d3dkmddi.h)

The DXGKARG_COLLECTDBGINFO structure describes information for a debug report when DxgkDdiCollectDbgInfo2 is called.

Syntax

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;

Members

Reason

[in] The bug-check code for which to return debug information in the buffer that pBuffer points to. These are possible values:

Value Meaning
VIDEO_TDR_TIMEOUT_DETECTED 0x117 A DxgkDdiResetEngine operation has reset a logical adapter.
VIDEO_ENGINE_TIMEOUT_DETECTED 0x141 A DxgkDdiResetEngine operation has reset one or more nodes within a physical adapter. Available starting in Windows 8.

pBuffer

[out] A pointer to a buffer that receives the debug information for the reason that Reason specifies.

BufferSize

The maximum size, in bytes, to copy to the buffer that pBuffer points to.

pExtension

A pointer to an OS-allocated DXGKARG_COLLECTDBGINFO_EXT structure that the driver optionally populates with debug extension information.

TdrType

[in] A DXGK_TDR_TYPE value that specifies the type of TDR that occurred.

TdrPayloadSize

[in] The size, in bytes, of the TDR payload that TdrPayload points to.

TdrPayload

[in] A pointer to a buffer that contains the payload specific to certain TdrType values, as indicated the following table. This buffer can be NULL.

TdrType Associated structure
DXGK_TDR_TYPE_ENGINE_TIMEOUT TdrPayload points to a DXGK_TDR_PAYLOAD_ENGINE_TIMEOUT structure.
DXGK_TDR_TYPE_VSYNC_TIMEOUT TdrPayload points to a DXGK_TDR_PAYLOAD_VSYNC_TIMEOUT structure.

Remarks

The layout of DXGKARG_COLLECTDBGINFO2 is backwards compatible with DXGKARG_COLLECTDBGINFO to allow the DxgkDdiCollectDbgInfo2 implementation to re-use existing DxgkDdiCollectDbgInfo helpers as needed. For this reason, the Reason, pBuffer, BufferSize, and pExtension fields have the same semantics.

For some TDR types (specified in TdrType), the OS provides additional information in the TdrPayload buffer of TdrPayloadSize bytes. It can be NULL, and the driver is expected to handle this case without crashing.

When the payload isn't NULL, it can be cast to a structure that corresponds to the TDR type. The OS might grow these structures in a backwards compatible manner, adding new fields at the end. The driver must check TdrPayloadSize prior to accessing TdrPayload fields to make sure the OS implements the desired payload version or later.

Memory that TdrPayload points to is only valid for the duration of the DxgkddiCollectDbgInfo2 call. The driver shouldn't store a pointer to TdrPayload past the end of DxgkddiCollectDbgInfo2 call.

For more information, see TDR debuggability improvements.

Requirements

Requirement Value
Minimum supported client Windows 11, version 24H2 (WDDM 3.2)
Header d3dkmddi.h

See also

DXGK_TDR_TYPE

DxgkDdiCollectDbgInfo

DxgkDdiCollectDbgInfo2