DXGKDDI_COLLECTDIAGNOSTICINFO回调函数 (dispmprt.h)

DxgkDdiCollectDiagnosticInfo 回调例程出于 DXGK_DIAGNOSTICINFO_TYPE指定的原因收集专用驱动程序信息。

在 Windows 10 版本 1903 中,如果函数调用 DxgkDdiAddDeviceDxgkDdiStartDevice 失败,驱动程序将调用以收集私有信息。

语法

DXGKDDI_COLLECTDIAGNOSTICINFO DxgkddiCollectdiagnosticinfo;

NTSTATUS DxgkddiCollectdiagnosticinfo(
  [in]      IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
  [in, out] INOUT_PDXGKARG_COLLECTDIAGNOSTICINFO pCollectDiagnosticInfo
)
{...}

参数

[in] PhysicalDeviceObject

指向标识显示适配器的物理设备对象的指针。

[in, out] pCollectDiagnosticInfo

指向描述驱动程序收集的信息的 DXGKARG_COLLECTDIAGNOSTICINFO 结构的指针。

返回值

如果成功收集了专用数据信息,则返回STATUS_SUCCESS。 否则,它将返回错误代码,例如以下代码之一。

错误代码 意义
STATUS_DRIVER_INTERNAL_ERROR 驱动程序内部发生了通用 SW 错误。
STATUS_ACCESS_DENIED 硬件当前正在由其他线程使用,此 DDI 无法访问它。
STATUS_DEVICE_HARDWARE_ERROR 发生了一般 HW 错误。
STATUS_DEVICE_POWERED_OFF 设备已关闭。

言论

此函数在被动级别调用,在调用 DxgkDdiAddDeviceDxgkDdiStartDevice之间,应支持 同步零级别。 收集的数据不应包含任何私人用户信息。

WDDM 2.7 及更高版本的驱动程序需要支持黑屏黑盒数据收集的 DXGK_DI_BLACKSCREENDXGK_DIAGNOSTICINFO_TYPE 枚举类型。

对于黑屏方案,OS 将首先通过调用 DxgkDdiGetDisplayStateNonIntrusiveDxgkDdiGetDisplayStateIntrusive 从驱动程序收集白盒数据,然后再调用此 DDI 来收集黑匣子信息。

建议尽可能使用 pCollectDiagnosticInfo->BucketingString 来存储黑盒数据。 如果 BufferSizeIn 输入缓冲区的大小不足以处理所有黑盒数据,则驱动程序应做出自己的权衡,以排除在大多数黑屏根本原因分析中最不重要的数据。

要求

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

另请参阅

DXGKARG_COLLECTDIAGNOSTICINFO

DxgkDdiAddDevice

DxgkDdiStartDevice