структура DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)

Структура DXGK_DEBUG_REPORT_INTERFACE содержит указатели на функции в интерфейсе отчета об отладке, который реализуется драйвером порта отображения.

Синтаксис

typedef struct _DXGK_DEBUG_REPORT_INTERFACE {
  USHORT                    Size;
  USHORT                    Version;
  PVOID                     Context;
  PINTERFACE_REFERENCE      InterfaceReference;
  PINTERFACE_DEREFERENCE    InterfaceDereference;
  DXGK_DEBUG_REPORT_HANDLE( )(HANDLE DeviceHandle,ULONG ulCode,ULONG_PTR ulpArg1,ULONG_PTR ulpArg2,ULONG_PTR ulpArg3,ULONG_PTR ulpArg4) *DbgReportCreate;
  BOOLEAN( )(DXGK_DEBUG_REPORT_HANDLE hReport,PVOID pvData,ULONG ulDataSize)                  *DbgReportSecondaryData;
  VOID( )(DXGK_DEBUG_REPORT_HANDLE hReport)                     *DbgReportComplete;
} DXGK_DEBUG_REPORT_INTERFACE, *PDXGK_DEBUG_REPORT_INTERFACE;

Члены

Size

Размер данной структуры (в байтах).

Version

Номер версии интерфейса отчета отладки. Константы номера версии определяются в Dispmprt.h (например, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).

Context

Указатель на контекст, предоставляемый драйвером порта отображения.

InterfaceReference

Указатель на функцию ссылки на интерфейс, реализованную драйвером порта отображения.

InterfaceDereference

Указатель на функцию разыменования интерфейса, реализованную драйвером порта отображения.

DbgReportCreate

Создает исходный отчет об ошибках.

Если драйвер мини-порта дисплея обнаруживает сбой, а затем восстанавливается после него, можно создать отчет об ошибках, который позже можно будет использовать для отладки. Сначала вызовите DbgReportCreate , чтобы создать первоначальный отчет. Затем добавьте данные в отчет, выполнив один или несколько вызовов DbgReportSecondaryData. Завершив добавление данных в отчет, вызовите DbgReportComplete.

Ниже приведен синтаксис dbgReportComplete .

// IRQL: PASSIVE_LEVEL
DXGK_DEBUG_REPORT_HANDLE (*DbgReportCreate)(
  _In_ HANDLE    DeviceHandle,
  _In_ ULONG     ulCode,
  _In_ ULONG_PTR ulpArg1,
  _In_ ULONG_PTR ulpArg2,
  _In_ ULONG_PTR ulpArg3,
  _In_ ULONG_PTR ulpArg4
);
  • DeviceHandle — это дескриптор блока контекста, связанного с видеоадаптером. Драйвер мини-порта дисплея создал этот дескриптор в своей функции DxgkDdiAddDevice* . Этот параметр может принимать значение NULL.

  • ulCode — это код для отчета об ошибках. Поддерживаются следующие коды:

    • THREAD_STUCK_IN_DEVICE_DRIVER
    • VIDEO_DRIVER_DEBUG_REPORT_REQUEST
    • VIDEO_TDR_FATAL_ERROR
    • VIDEO_TDR_SUCCESS
  • ulpArg1 — первый аргумент, добавляемый в отчет. Разработчик драйвера минипорта дисплея определяет значение и значение ulpArg1.

  • ulpArg2 — второй аргумент, добавляемый в отчет. Разработчик драйвера мини-порта дисплея определяет значение и значение ulpArg2.

  • ulpArg3 — третий аргумент, добавляемый в отчет. Разработчик драйвера минипорта дисплея определяет значение и значение ulpArg3.

  • ulpArg4 зарезервировано.

DbgReportSecondaryData

Добавляет данные в исходный отчет об ошибках, созданный ранее с помощью DbgReportCreate.

Вызовите DbgReportSecondaryData , чтобы добавить данные в исходный отчет, созданный при предыдущем вызове DbgReportCreate. DbgReportSecondaryData можно вызвать несколько раз, но при каждом вызове данные, записанные в отчет, перезаписывают данные, записанные предыдущим вызовом. Следующие шаги дают хорошую стратегию для добавочного добавления данных в отчет.

  1. Получите данные, которые являются наиболее безопасными для сбора.
  2. Вызовите DbgReportSecondaryData , чтобы записать эти данные в отчет.
  3. Получение данных, которые являются более рискованными для сбора.
  4. Вызовите DbgReportSecondaryData , чтобы записать исходные безопасные данные вместе с вновь собранными данными о рисках в отчет. В этот вызов необходимо включить как безопасные, так и рискованные данные, так как данные, записанные этим вызовом, перезаписывают данные, записанные при первом вызове DbgReportSecondaryData.
  5. Продолжайте вызывать DbgReportSecondaryData, каждый раз улучшая данные, пока у вас не будет данных для добавления.
  6. Завершив добавление данных в отчет, закройте отчет, вызвав DbgReportComplete. Отчет хранится в файле и отправляется в корпорацию Майкрософт при перезагрузке компьютера.
  7. Если компьютер перестает отвечать на запросы перед вызовом DbgReportComplete, данные, добавленные в отчет при последнем успешном вызове DbgReportSecondaryData , сохраняются и отправляются в корпорацию Майкрософт при перезагрузке компьютера.
BOOLEAN (*DbgReportSecondaryData)(
  _Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
  _In_    PVOID                    pvData,
  _In_    ULONG                    ulDataSize
);
  • hReport — это дескриптор отчета об ошибках, к которому будут добавлены данные. Драйвер мини-порта дисплея ранее получил этот дескриптор, вызвав DbgReportCreate.

  • pvData — это указатель на буфер, содержащий данные для добавления в отчет.

  • ulDataSize — это размер в байтах данных, добавляемых в отчет. Значение этого параметра должно быть меньше или равно DXGK_DEBUG_REPORT_MAX_SIZE.

DbgReportComplete

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

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

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

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport — это дескриптор отчета об ошибках, который должен быть закрыт. Драйвер мини-порта дисплея ранее получил этот дескриптор, вызвав DbgReportCreate.

IRQL: PASSIVE_LEVEL

Комментарии

Драйвер мини-порта дисплея предоставляет элементы Size и Version этой структуры, а затем вызывает DxgkCbQueryServices*, который заполняет остальные элементы этой структуры.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Верхняя часть dispmprt.h (включая Dispmprt.h)