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


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

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

Синтаксис

DXGKDDI_COLLECTDBGINFO DxgkddiCollectdbginfo;

NTSTATUS DxgkddiCollectdbginfo(
  [in]     IN_CONST_HANDLE hAdapter,
  [in/out] IN_CONST_PDXGKARG_COLLECTDBGINFO pCollectDbgInfo
)
{...}

Параметры

[in] hAdapter

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

[in/out] pCollectDbgInfo

Указатель на структуру DXGKARG_COLLECTDBGINFO, содержащую сведения для отчета отладки.

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

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

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

Замечания

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
целевая платформа Настольный
заголовка d3dkmddi.h
IRQL PASSIVE_LEVEL (см. замечания)

См. также

DXGKARG_COLLECTDBGINFO

DxgkDdiAddDevice

DxgkDdiResetFromTimeout