структура 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 несколько раз, но при каждом вызове данные, записанные в отчет, перезаписывают данные, записанные предыдущим вызовом. Ниже приведена хорошая стратегия добавочного добавления данных в отчет.
- Получите данные, которые наиболее безопасны для сбора.
- Вызовите DbgReportSecondaryData для записи данных в отчет.
- Получение данных, которые более рискованны для сбора.
- Вызовите DbgReportSecondaryData для записи исходных безопасных данных вместе с вновь собранными в отчет данными, которые были собраны рискованными. В этот вызов необходимо включить как безопасные, так и рискованные данные, так как данные, записанные этим вызовом, перезаписывают данные, записанные первым вызовом DbgReportSecondaryData.
- Продолжайте вызывать DbgReportSecondaryData, увеличивая данные каждый раз, пока не будет добавлено больше данных.
- Завершив добавление данных в отчет, закройте отчет, вызвав DbgReportComplete. Отчет хранится в файле и отправляется в Корпорацию Майкрософт при перезагрузке компьютера.
- Если компьютер перестает отвечать перед вызовом 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
Замечания
Драйвер минипорта отображения предоставляет Размер и версии членов этой структуры, а затем вызывает DxgkCbQueryServices*, которая заполняет остальные элементы этой структуры.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
заголовка | dispmprt.h (include Dispmprt.h) |