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_ADDDEVICEType 值,DXGK_DI_STARTDEVICE大小将大约为 0x80000。

[out] BufferSizeOut

一个变量,驱动程序应更新该变量,其实际大小填充了其私有数据。 如果未提供私有数据,驱动程序应将 0 分配给变量。

[out] pBuffer

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

要求

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

另请参阅

DXGK_DIAGNOSTICINFO_TYPE

DXGKDDI_COLLECTDIAGNOSTICINFO

DxgkDdiAddDevice

DxgkDdiGetDisplayStateIntrusive

DxgkDdiGetDisplayStateNonIntrusive