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

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

[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_BLACKSCREEN DXGK_DIAGNOSTICINFO_TYPE枚举类型。

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

建议尽可能使用 pCollectDiagnosticInfo-BucketingString> 对黑盒数据进行桶化。 如果 BufferSizeIn 输入缓冲区的大小不足以满足所有黑盒数据的需求,则驱动程序应在省去大多数黑屏根本原因分析中最不重要的数据时做出自己的权衡。

要求

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

另请参阅

DXGKARG_COLLECTDIAGNOSTICINFO

DxgkDdiAddDevice

DxgkDdiStartDevice