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

Комментарии

Драйвер видео минипорта предоставляет элементы Size и Version этой структуры, а затем вызывает 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 Parameters

  • 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 (включить Video.h)

См. также раздел

ИНТЕРФЕЙС

VideoPortQueryServices