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


функция обратного вызова DXGKDDI_COLLECTDBGINFO2 (d3dkmddi.h)

Функция DxgkDdiCollectDbgInfo2 выводит сведения о драйвере для отчета отладки.

Синтаксис

DXGKDDI_COLLECTDBGINFO2 DxgkddiCollectdbginfo2;

NTSTATUS DxgkddiCollectdbginfo2(
  IN_CONST_HANDLE hAdapter,
  INOUT_PDXGKARG_COLLECTDBGINFO2 pCollectDbgInfo2
)
{...}

Параметры

hAdapter

[in] Дескриптор к блоку контекста, связанному с адаптером отображения. Минипорт отображения (KMD) ранее предоставил этот дескриптор для Dxgkrnlв параметре вывода miniportDeviceContextDxgkDdiAddDevice.

pCollectDbgInfo2

[in/out] Указатель на структуру DXGKARG_COLLECTDBGINFO2, содержащую сведения для отчета отладки.

Возвращаемое значение

DxgkDdiCollectDbgInfo2 возвращает одно из следующих значений:

Возвращаемый код Описание
STATUS_SUCCESS DxgkDdiCollectDbgInfo2 сведения о драйвере успешного вывода для отчета отладки; ИЛИ ОС проигнорировала содержимое в буфере, на который pBuffer указывает и не добавил информацию из DxgkDdiCollectDbgInfo2 в отчет отладки.
STATUS_NO_MEMORY DxgkDdiCollectDbgInfo2 не удалось выделить память, необходимую для завершения.
STATUS_UNSUCCESSFUL Другая ошибка не позволила драйверу собирать допустимые сведения об отладке.

Замечания

Dxgkrnl вызывает функцию KMD dxgkDdiCollectDbgInfo2 при создании отчета отладки, связанного с драйвером. DxgkDdiCollectDbgInfo2 можно вызвать непосредственно перед обнаружением и восстановлением (TDR) или непосредственно перед проверкой ошибок ОС. Хотя DxgkDdiCollectDbgInfo2 должен возвращать как можно быстрее, системный максимальный объем времени, который драйвер может тратить в этой функции.

DxgkDdiCollectDbgInfo2 получает более подробную информацию о первопричине TDR, чем DxgkDdiCollectDbgInfo. KMD может сохранить состояние, соответствующее части GPU, ответственной за TDR.

  • Драйвер WDDM 3.2 не требуется для реализации dxgkddiCollectDbgInfo2, в этом случае ос вызывает DxgkddiCollectDbgInfo.

KMD должен собирать сведения об отладке. При вызове dxgkDdiCollectDbgInfo2 драйвер получает код проверки ошибок в pCollectDbgInfo2->Reason, указывающий тип информации, необходимой для отчета отладки. Драйвер копирует необходимые данные отладки в буфер, на который pCollectDbgInfo2-> pBuffer. Максимальное количество байтов сведений, которые драйвер может скопировать, задается pCollectDbgInfo2->BufferSize.

DxgkDdiCollectDbgInfo обычно выполняется в неопределенном IRQL. Однако если pCollectDbgInfo2->причина задано значение VIDEO_TDR_TIMEOUT_DETECTED (чтобы указать сброс на уровне адаптера) или VIDEO_ENGINE_TIMEOUT_DETECTED (доступно начиная с Windows 8, чтобы указать сброс одного или нескольких узлов в физическом адаптере), драйвер должен убедиться, что DxgkDdiCollectDbgInfo2 доступен для страницы, выполняется в IRQL = PASSIVE_LEVELи поддерживает синхронизации нулевого уровня.

Дополнительные сведения см. в улучшения отладки TDR.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 версии 24H2 (WDDM 3.2)
заголовка d3dkmddi.h
IRQL PASSIVE_LEVEL (см. замечания)

См. также

DXGKARG_COLLECTDBGINFO2

DxgkDdiCollectDbgInfo