DXGKDDI_COLLECTDIAGNOSTICINFO回调函数 (dispmprt.h)
DxgkDdiCollectDiagnosticInfo 回调例程出于 DXGK_DIAGNOSTICINFO_TYPE指定的原因收集专用驱动程序信息。
在 Windows 10 版本 1903 中,如果函数调用 DxgkDdiAddDevice 或 DxgkDdiStartDevice 失败,驱动程序将调用以收集私有信息。
语法
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 | 设备已关闭。 |
言论
此函数在被动级别调用,在调用 DxgkDdiAddDevice 和 DxgkDdiStartDevice之间,应支持 同步零级别。 收集的数据不应包含任何私人用户信息。
WDDM 2.7 及更高版本的驱动程序需要支持黑屏黑盒数据收集的 DXGK_DI_BLACKSCREENDXGK_DIAGNOSTICINFO_TYPE 枚举类型。
对于黑屏方案,OS 将首先通过调用 DxgkDdiGetDisplayStateNonIntrusive 和 DxgkDdiGetDisplayStateIntrusive 从驱动程序收集白盒数据,然后再调用此 DDI 来收集黑匣子信息。
建议尽可能使用 pCollectDiagnosticInfo->BucketingString 来存储黑盒数据。 如果 BufferSizeIn 输入缓冲区的大小不足以处理所有黑盒数据,则驱动程序应做出自己的权衡,以排除在大多数黑屏根本原因分析中最不重要的数据。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 1903 |
标头 | dispmprt.h |
IRQL | PASSIVE_LEVEL |