функция обратного вызова DXGKDDI_GETDISPLAYSTATENONINTRUSIVE (dispmprt.h)
Операционная система вызывает драйвер мини-порта дисплея DxgkDdiGetDisplayStateNonIntrusive подпрограмму, чтобы неинтрусивно собирать сведения о состоянии отображения от драйвера.
Синтаксис
DXGKDDI_GETDISPLAYSTATENONINTRUSIVE DxgkddiGetdisplaystatenonintrusive;
NTSTATUS DxgkddiGetdisplaystatenonintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATENONINTRUSIVE pArgs
)
{...}
Параметры
[in] Context
Указатель на закрытый контекст, возвращаемый DxgkDdiQueryInterface.
[in/out] pArgs
Указатель на структуру DXGKARG_GETDISPLAYSTATENONINTRUSIVE.
Возвращаемое значение
DxgkDdiGetDisplayStateNonIntrusive возвращает STATUS_SUCCESS, если он выполнен успешно. В противном случае возвращается код ошибки, например один из следующих.
Код ошибки | Значение |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | В драйвере произошла универсальная ошибка программного обеспечения. |
STATUS_ACCESS_DENIED | Оборудование в настоящее время используется другими потоками, и этот DDI не может получить к нему доступ. |
STATUS_DEVICE_HARDWARE_ERROR | Произошла универсальная ошибка HW. |
STATUS_DEVICE_POWERED_OFF | Устройство отключено. |
Замечания
ОС вызывает DxgkDdiGetDisplayStateNonIntrusive для сбора сведений о состоянии отображения от драйвера. В отличие от DxgkDdiGetDisplayStateIntrusive, программа драйвера DxgkDdiGetDisplayStateNonIntrusive не должна выполнять никаких операций, вызывающих видимые побочные эффекты для пользователя, и процесс сбора должен быть относительно быстрым (в идеале в пределах нескольких миллисекунд). Частота вызова этой подпрограммы будет относительно высокой. Помимо вызова диагностики плохого состояния пользователя, ОС также может использовать эту процедуру для записи сведений о состоянии журнала от драйвера для отладки.
В редких случаях, когда реализация для конкретной платформы требует от драйвера выполнять навязчивые операции в рамках вызова DxgkDdiGetDisplayStateNonIntrusive, драйвер должен выполнять операции, но должен задать pArgs->ReturnSubStatus DXGK_DIAG_GETDISPLAYSTATE_CAUSED_GLITCH или DXGK_DIAG_GETDISPLAYSTATE_CHANGED_DISPLAY_STATE соответствующим образом. На основе значения ReturnSubStatus операционная система (ОС) может вызывать эту подпрограмму только для сценариев ошибок в данной системе.
ОС будет вызывать DxgkDdiGetDisplayStateNonIntrusive (периодически или на других распространенных событиях) для сбора данных о состоянии драйвера для отладки и просмотра исторической временной шкалы. ОС также вызовет эту подпрограмму в определенных сценариях ошибок (например, черных экранах) перед сбором более подробных сведений путем вызова DxgkDdiGetDisplayStateIntrusive. Учитывая возможную частоту этого вызова, драйверы должны выполнять его как можно быстрее. ОС вызовет этот DDI с NumOfTargets установить максимальное количество целевых объектов, поддерживаемых заданным графическим адаптером, и VidPnTargetId. Минипорт-драйвер должен заполнить только сведения о состоянии отображения для целевых объектов, на которых фактически подключен монитор. Для vidpntarget, на котором нет монитора, минипорт должен просто заполнить DXGK_DIAG_DISPLAY_CONNECTIVITY, и ОС будет игнорировать все остальные поля для этого целевого объекта.
Заметка
Драйверы должны использовать только ReturnSubStatus, чтобы сообщить об ошибках и не использовать DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED для отслеживания состояния подключения к отчету. Основной целью DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED является навязчивые вызовы, в которых ОС не спрашивает о мониторинге подключения.
Если драйвер попадает в сбой в заданном vidpntarget во время сбора информации, он должен использовать ReturnSubStatus, чтобы задать состояние ошибки и перейти к следующему vidpntarget и не завершить общий вызов, если только все пути не попадут сбои. Драйверы в идеале должны записывать ошибки во время этого вызова во внутреннем журнале ошибок, чтобы при вызове ОС DxgkDdiCollectDiagnosticInfo для сбора сведений о черном ящике эти ошибки фиксируются как часть внутренней коллекции журналов, чтобы помочь IHV во время отладки.
Уровень синхронизации для этого DDI синхронизации нулевого уровня.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 10 версии 2004 |
заголовка | dispmprt.h |
См. также
DXGKARG_GETDISPLAYSTATENONINTRUSIVE