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)

言论

视频微型端口驱动程序提供 大小版本 此结构的成员,然后调用 VideoPortQueryServices,该成员初始化其剩余成员。

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

  1. 首先,调用 DbgReportCreate 来创建初始报表。
  2. 然后,通过对 dbgReportSecondaryData发出一个或多个调用向报表添加数据。
  3. 将数据添加到报表后,请调用 DbgReportComplete

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

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

以下部分详细介绍了这些回调函数。 必须在 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 (include Video.h)

另请参阅

接口

VideoPortQueryServices