VIDEO_PORT_DEBUG_REPORT_INTERFACE 结构 (video.h)

VIDEO_PORT_DEBUG_REPORT_INTERFACE结构包含指向调试报告函数的指针,这些函数由视频端口驱动程序实现。

语法

typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE
{
    IN USHORT                  Size;
    IN USHORT                  Version;
    OUT PVOID                  Context;
    OUT PINTERFACE_REFERENCE   InterfaceReference;
    OUT PINTERFACE_DEREFERENCE InterfaceDereference;

    OUT
    PVIDEO_DEBUG_REPORT
    (*DbgReportCreate)(
        IN PVOID HwDeviceExtension,
        IN ULONG ulCode,
        IN ULONG_PTR ulpArg1,
        IN ULONG_PTR ulpArg2,
        IN ULONG_PTR ulpArg3,
        IN ULONG_PTR ulpArg4
        );

    OUT
    BOOLEAN
    (*DbgReportSecondaryData)(
        IN OUT PVIDEO_DEBUG_REPORT pReport,
        IN PVOID pvData,
        IN ULONG ulDataSize
        );

    OUT
    VOID
    (*DbgReportComplete)(
        IN OUT PVIDEO_DEBUG_REPORT pReport
        );
} VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE;

成员

Size

指定此结构的大小(以字节为单位)。

Version

指定视频端口驱动程序返回的接口的版本。 目前,唯一受支持的版本是VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1。

Context

指向视频端口驱动程序提供的上下文的指针。

InterfaceReference

指向由视频端口驱动程序实现的接口引用函数的指针。

InterfaceDereference

指向由视频端口驱动程序实现的接口取消引用函数的指针。

OUT (IN PVOID HwDeviceExtension,IN ULONG ulCode,IN ULONG_PTR ulpArg1,IN ULONG_PTR ulpArg2,IN ULONG_PTR ulpArg3,IN ULONG_PTR ulpArg4) PVIDEO_DEBUG_REPORT( *DbgReportCreate unnamedParam1)

OUT (IN OUT PVIDEO_DEBUG_REPORT pReport,IN PVOID pvData,IN ULONG ulDataSize) BOOLEAN( *DbgReportSecondaryData unnamedParam1)

OUT (IN OUT PVIDEO_DEBUG_REPORT pReport) VOID( *DbgReportComplete unnamedParam1)

注解

视频微型端口驱动程序提供此结构的 SizeVersion 成员,然后调用 VideoPortQueryServices,这将初始化其剩余成员。

如果视频微型端口驱动程序检测到故障,然后从中恢复,则可以创建一个错误报告,稍后可以通过调用 VIDEO_PORT_DEBUG_REPORT_INTERFACE 的回调函数成员来用于调试,如下所示:

  1. 首先,调用 DbgReportCreate 来创建初始报表。
  2. 然后,通过对 DbgReportSecondaryData 进行一次或多项调用,将数据添加到报表。
  3. 将数据添加到报表后,请调用 DbgReportComplete

错误报告保存在文件中,并计划在计算机重新启动时发送给 Microsoft。 错误报告包含一个错误代码和四个参数。 错误代码和前三个参数由 DbgReportCreate 的调用方提供。 报表中的第四个参数由操作系统提供,指示自计算机启动以来生成的报表数。 例如,如果 ulpArg4 的值为 5,则表示自上次启动计算机以来,显示微型端口驱动程序会生成四个以前的错误报告。 仅保存第五个报表,因为每个报表都覆盖了上一个报表。

DbgReportCreate 返回并随后传递给 DbgReportSecondaryDataDbgReportCompleteVIDEO_DEBUG_REPORT结构是不透明的。 请勿尝试直接访问其成员。

以下部分详细介绍了这些回调函数。 必须在 IRQL = PASSIVE_LEVEL 调用这些回调。

DbgReportCreate

DbgReportCreate 创建初始错误报告。 它会在系统事件日志中创建一个条目,并显示一个对话框,该对话框通知用户失败并提供了将错误报告上传到 Microsoft 的机会。 DbgReportCreate 返回指向不透明 VIDEO_DEBUG_REPORT 结构的指针,该结构表示新创建的调试报表的句柄。

DbgReportCreate 参数

  • HwDeviceHandle [in] 与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序在其 DxgkDdiAddDevice 函数中创建此句柄。 此参数可以为 NULL。
  • ulCode [in] 错误报告的代码。 支持以下代码:THREAD_STUCK_IN_DEVICE_DRIVER VIDEO_DRIVER_DEBUG_REPORT_REQUEST、VIDEO_TDR_FATAL_ERROR和VIDEO_TDR_SUCCESS。
  • ulpArg1 [in] 要添加到报表中的第一个参数。 显示微型端口驱动程序的开发人员确定 ulpArg1 的值和含义。
  • ulpArg2 [in] 要添加到报表中的第二个参数。 显示微型端口驱动程序的开发人员确定 ulpArg2 的值和含义。
  • ulpArg3 [in] 要添加到报表的第三个参数。 显示微型端口驱动程序的开发人员确定 ulpArg3 的值和含义。
  • ulpArg4 [in] 保留以供系统使用。

DbgReportSecondaryData

DbgReportSecondaryData 函数将数据追加到先前由 DbgReportCreate 创建的初始错误报告。 如果 DbgReportSecondaryData 成功,则返回 TRUE。 否则,它将返回 FALSE

调用 DbgReportSecondaryData ,将数据添加到先前调用 DbgReportCreate 创建的初始报表。 可以多次调用 DbgReportSecondaryData ,但每次调用时,写入报表的数据都会覆盖上一次调用写入的数据。 以下步骤提供了以增量方式向报表添加数据的良好策略。

  1. 获取最安全收集的数据。
  2. 调用 DbgReportSecondaryData 以将数据写入报表。
  3. 获取收集风险更大的数据。
  4. 调用 DbgReportSecondaryData 将原始安全数据以及新收集的风险数据写入报表。 必须在此调用中包含安全和有风险的数据,因为此调用写入的数据会覆盖第一次调用 DbgReportSecondaryData 所写入的数据。
  5. 继续调用 DbgReportSecondaryData,每次增强数据,直到没有更多要添加的数据。

将数据添加到报表后,通过调用 DbgReportComplete 关闭报表。 如果计算机在调用 DbgReportComplete 之前停止响应,则会保存最近成功调用 DbgReportSecondaryData 添加到报表的数据,然后在计算机重新启动时发送到 Microsoft。

DbgReportSecondaryData 参数

  • hReport [in, out] 数据将追加到的错误报表的句柄。 显示微型端口驱动程序以前通过调用 DbgReportCreate 获取此句柄。
  • pvData [in] 指向缓冲区的指针,该缓冲区保存要添加到报表中的数据。
  • ulDataSize [in] 要添加到报表的数据的大小(以字节为单位)。 此参数的值必须小于或等于 DXGK_DEBUG_REPORT_MAX_SIZE。

DbgReportComplete

DbgReportComplete 函数关闭错误报告并释放与报表关联的任何资源。

DbgReportComplete 在系统事件日志中创建一个条目,并显示一个对话框,告知用户失败以及将错误报告上传到 Microsoft 的机会。

DbgReportComplete 参数

  • hReport 指向 VIDEO_DEBUG_REPORT 结构的指针,该结构包含要关闭的错误报告的句柄。 显示微型端口驱动程序以前通过调用 DbgReportCreate 获取此句柄。

要求

要求
最低受支持的客户端 Windows XP SP2
最低受支持的服务器 Windows Server 2003 SP1
标头 video.h (包括 Video.h)

另请参阅

接口

VideoPortQueryServices