DXGKARG_COLLECTDIAGNOSTICINFO结构(dispmprt.h)

DXGKDDI_COLLECTDIAGNOSTICINFO 回调函数用来收集各种原因的专用驱动程序信息。

例如,当需要诊断信息时,OS 将调用DXGKDDI_COLLECTDIAGNOSTICINFO回调函数,同时提供所请求的信息类型(DXGK_DIAGNOSTICINFO_TYPE)。 驱动程序应收集所有私有信息,以调查问题并将其提交到 OS。

语法

typedef struct _DXGKARG_COLLECTDIAGNOSTICINFO {
  [in, optional]  HANDLE                   hAdapter;
  [in]            DXGK_DIAGNOSTICINFO_TYPE Type;
                  CHAR                     BucketingString[DXGK_DUMP_BUCKETING_BUFFER_SIZE];
                  CHAR                     DescriptionString[DXGK_DUMP_DESCRIPTION_BUFFER_SIZE];
  union {
    [out, optional] PVOID pReserved;
  };
  [in]            UINT                     BufferSizeIn;
  [out]           UINT                     BufferSizeOut;
  [out]           PVOID                    pBuffer;
} DXGKARG_COLLECTDIAGNOSTICINFO;

成员

[in, hAdapter

与显示适配器关联的上下文块的句柄。

在 WDDM 2.6 之前,显示微型端口驱动程序的 DxgkDdiAddDevice 函数将此句柄提供给 DirectX 图形内核子系统。 此参数是可选的,如果驱动程序未能向 OS 提供句柄,则该参数可以为 NULL。

[in] Type

一个 DXGK_DIAGNOSTICINFO_TYPE 枚举值,该值指示驱动程序需要收集的信息类型。

[out] BucketingString[DXGK_DUMP_BUCKETING_BUFFER_SIZE]

为驱动程序用于标识问题以用于存储目的的字符串提供的固定大小缓冲区。 此字符串应在同一问题的驱动程序版本之间保持一致,因此它不应包含源引用、驱动程序版本或实例特定详细信息(如围栏编号或目标 ID)等元素。 它可能包含诸如内部子组件的标识符(失败)或模块的名称(例如 mismatched_driver_ihvxseries.sys)的信息。 有效代码是 0x21-0x7E 的,应使用下划线(0x5f),而不是空格(0x20)。

[out, DescriptionString[DXGK_DUMP_DESCRIPTION_BUFFER_SIZE]

为驱动程序应用来描述未用于存储桶的实例特定详细信息的字符串提供的固定大小缓冲区,但可用于提供有关特定问题的更多详细信息,例如 mismatched_driver_versions_kmd_10.22.1111.1121,_ihvxseries:10.22.1111.1122。 有效代码是 0x21-0x7E 的,应使用下划线(0x5f),而不是空格(0x20)。

[out, pReserved

指向未命名联合中的 VOID 的指针,该指针保留为指向 OS 可能为某些 类型提供的类型特定参数的占位符。 对于不需要任何扩展信息的 类型,此值为 NULL。

[in] BufferSizeIn

一个变量,它提供 OS 分配的缓冲区的大小(以字节为单位)。 对于 类型DXGK_DI_ADDDEVICEDXGK_DI_STARTDEVICE 大小将围绕0x80000。

[out] BufferSizeOut

驱动程序应用填充其专用数据的实际大小进行更新的变量。 如果未提供专用数据,驱动程序应为变量分配 0。

[out] pBuffer

指向接收专用驱动程序数据的缓冲区的指针。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1903
标头 dispmprt.h

另请参阅

DXGK_DIAGNOSTICINFO_TYPE

DXGKDDI_COLLECTDIAGNOSTICINFO

DxgkDdiAddDevice

DxgkDdiGetDisplayStateIntrusive

DxgkDdiGetDisplayStateNonIntrusive