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


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

В режиме ядра отображаются вызовы мини-драйвера (KMD) DxgkrnlDxgkCbAcquirePostDisplayOwnership для получения сведений о отображении из текущего устройства самообслуживания (POST) или ранее работающего драйвера WDDM.

Драйвер должен использовать эти сведения для оптимизации запроса на изменение начального режима после запуска устройства отображения.

Синтаксис

DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP DxgkcbAcquirePostDisplayOwnership;

NTSTATUS DxgkcbAcquirePostDisplayOwnership(
  [in]  HANDLE DeviceHandle,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

Параметры

[in] DeviceHandle

Дескриптор, представляющий адаптер отображения. KmD ранее получил этот дескриптор в элементе DeviceHandle структуры DXGKRNL_INTERFACE, переданной DxgkDdiStartDevice.

[out] DisplayInfo

Указатель на структуру DXGK_DISPLAY_INFORMATION, выделенную KMD. Если DxgkCbAcquirePostDisplayOwnership возвращает STATUS_SUCCESS, эта структура содержит сведения о отображении текущего устройства отображения, используемого для операций POST.

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

DxgkCbAcquirePostDisplayOwnership возвращает STATUS_SUCCESS, если это выполнено. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.

Замечания

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

Допустимые форматы цветов

Элемент DisplayInfo->ColorFormat должен содержать побитовое сочетание двух форматов D3DDDIFORMAT:

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Если ОС возвращает формат D3DDDIFMT_R8G8B8, kmD должен игнорировать его.

Инициализация целевого объекта представления видео

Возможно, DisplayInfo->TargetId не инициализирован. В этом случае идентификатор текущего видео является D3DDDI_ID_UNINITIALIZED. Как правило, эта ситуация возникает после загрузки системы.

Аналогичным образом, возможно, DisplayInfo->элемент AcpiId не инициализирован. В этом случае идентификатор ACPI AcpiId имеет значение нуля.

В случае обновления драйвера до драйвера предыдущий драйвер предоставит целевой идентификатор и идентификатор ACPI.

Рекомендации по реализации

Начиная с WDDM 1.2, KMD должен следовать этим рекомендациям при вызове DxgkCbAcquirePostDisplayOwnership:

  • Точка входа для функции DxgkCbAcquirePostDisplayOwnership является частью структуры DXGKRNL_INTERFACE. Эта структура возвращается драйверу через параметр DxgkInterface при вызове функции драйвера DxgkDdiStartDevice.

  • KMD может при необходимости вызывать DxgkCbAcquirePostDisplayOwnership. Однако ОС по-прежнему может вызывать функцию KMDDxgkDdiStopDeviceAndReleasePostDisplayOwnership, даже если драйвер не вызывал DxgkCbAcquirePostDisplayOwnership, и драйвер должен соответствующим образом обрабатывать этот вызов. Если функция драйвера DxgkDdiStopDeviceAndReleasePostDisplayOwnership не завершена, ОС вызовет функцию dxgkDdiStopDevice.

  • KMD может вызывать DxgkCbAcquirePostDisplayOwnership, если устройство запущено в ответ на событие Plug and Play (PnP). В этом случае драйвер должен вызывать DxgkCbAcquirePostDisplayOwnership из контекста вызова функции DxgkDdiStartDevice.

  • KMD может вызывать DxgkCbAcquirePostDisplayOwnership, если устройство возобновляет powerDeviceD0 состояние питания после состояния гибернации. В этом случае драйвер должен вызывать DxgkCbAcquirePostDisplayOwnership из контекста вызова функции DxgkDdiSetPowerState.

  • KMD должен вызывать только функцию DxgkCbAcquirePostDisplayOwnership, если она работает по крайней мере под управлением Windows 8. KMD может вызывать RtlGetVersion для определения версии ОС.

  • DxgkCbAcquirePostDisplayOwnership может возвращать структуру DXGK_DISPLAY_INFORMATION с элементом Width, равным нулю. Это значение означает, что текущее устройство отображения не может выполнять операции POST, или ос не имеет текущих сведений о отображении для текущего устройства POST.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8 (WDDM 1.2)
минимальный поддерживаемый сервер Windows Server 2012
целевая платформа Настольный
заголовка dispmprt.h (include Dispmprt.h)
IRQL <= APC_LEVEL

См. также

D3DDDIFORMAT

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DxgkDdiSetPowerState

DxgkDdiStartDevice

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

RtlGetVersion