Поделиться через


структура 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.

Отчет об ошибках сохраняется в файле и планируется отправить в Корпорацию Майкрософт при перезагрузке компьютера. Отчет об ошибке содержит код ошибки и четыре аргумента. Код ошибки и первые три аргумента предоставляются вызывающим элементом DbgReportCreate. Четвертый аргумент в отчете предоставляется операционной системой и указывает количество отчетов, созданных с момента запуска компьютера. Например, если значение ulpArg4 равно 5, это означает, что четыре предыдущих отчета об ошибках были созданы драйвером мини-порта отображения с момента последнего запуска компьютера. Сохраняется только пятый отчет, так как каждый отчет перезаписывает предыдущий.

Структура VIDEO_DEBUG_REPORT, возвращенная DbgReportCreate и впоследствии переданная DbgReportSecondaryData и DbgReportComplete непрозрачна. Не пытайтесь напрямую получить доступ к его членам.

В следующих разделах подробно описаны эти функции обратного вызова. Эти обратные вызовы должны вызываться в IRQL = PASSIVE_LEVEL.

DbgReportCreate

DbgReportCreate создает исходный отчет об ошибке. Он создает запись в журнале системных событий и отображает диалоговое окно, которое сообщает пользователю об ошибке и предоставляет возможность отправить отчет об ошибке в корпорацию Майкрософт. 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, а затем отправляются в Корпорацию Майкрософт при перезагрузке компьютера.

Параметры DbgReportSecondaryData

  • hReport [in, out] Дескриптор отчета об ошибке, к которому будут добавлены данные. Драйвер минипорта отображения ранее получил этот дескриптор путем вызова DbgReportCreate.
  • pvData [in] Указатель на буфер, содержащий данные, добавляемые в отчет.
  • ulDataSize [in] Размер данных в байтах, добавляемых в отчет. Значение этого параметра должно быть меньше или равно DXGK_DEBUG_REPORT_MAX_SIZE.

DbgReportComplete

Функция DbgReportComplete закрывает отчет об ошибке и освобождает все ресурсы, связанные с отчетом.

DbgReportComplete создает запись в журнале системных событий и отображает диалоговое окно, которое сообщает пользователю о сбое и возможности отправить отчет об ошибке в корпорацию Майкрософт.

Параметры DbgReportComplete

  • hReport Указатель на структуру VIDEO_DEBUG_REPORT, содержащую дескриптор отчета об ошибке, который должен быть закрыт. Драйвер мини-порта дисплея ранее получил этот дескриптор путем вызова DbgReportCreate.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP с пакетом обновления 2 (SP2)
минимальный поддерживаемый сервер Windows Server 2003 с пакетом обновления 1 (SP1)
заголовка video.h (include Video.h)

См. также

ИНТЕРФЕЙСА

VideoPortQueryServices