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


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

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

Начиная с Windows 8 операционная система вызывает эту функцию во время операции остановки Plug and Play (PnP).

Чтобы указать операционной системе, что эта функция поддерживается, драйвер должен задать элемент NonVGASupportструктуры DXGK_DRIVERCAPS при вызове функции DxgkDdiQueryAdapterInfo .

Синтаксис

DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;

NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

Параметры

[in] MiniportDeviceContext

Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме графического ядра Microsoft DirectX.

[in] TargetId

Значение D3DDDI_VIDEO_PRESENT_TARGET_ID , указывающее идентификатор целевого объекта видео на видеоадапте, к которому подключено устройство отображения. Этот идентификатор может быть для целевого объекта, который был оставлен в состоянии текущей сети видеотрансляции (VidPN) во время предыдущего вызова DxgkDdiCommitVidPn.

Дополнительные сведения об использовании параметра TargetId см. в следующем разделе Примечаний.

[out] DisplayInfo

Указатель на структуру DXGK_DISPLAY_INFORMATION , выделенную операционной системой.

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

При успешном выполнении возвращает STATUS_SUCCESS . В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h. Дополнительные сведения см. в разделе "Примечания".

Комментарии

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

Драйвер мини-порта дисплея должен сообщать только о 32-разрядном цветовом формате. Поэтому элемент DisplayInfo->ColorFormat должен включать только один из следующих двух форматов:
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

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

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

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

Необходимые действия для драйвера мини-порта дисплея

Драйвер мини-порта дисплея должен выполнить следующие действия при вызове функции DxgkDdiStopDeviceAndReleasePostDisplayOwnership :
  1. Драйвер должен остановить устройство отображения, связанное с целью представления видео, указанной параметром TargetId , но должен поддерживать дисплей, связанный с этим целевым объектом, включен и видимым.
  2. Драйвер должен проверка подключение дисплея, связанного с этим целевым объектом. Если к целевому объекту не подключен дисплей, драйвер должен завершить вызов этой функции и вернуть код ошибки STATUS_NOT_SUPPORTED .
  3. Драйвер должен отключить сигнал для всех остальных дисплеев, подключенных к адаптеру дисплея. Если это невозможно, драйвер должен попытаться разместить пустое изображение на всех остальных дисплеях. Если это невозможно, драйвер должен оставить последнее изображение на экране без изменений.
  4. Драйвер должен сохранить текущий режим отображения на указанном целевом объекте и предоставить этот режим операционной системе в рамках вызова этой функции.
  5. Если драйвер не может поддерживать текущий режим отображения или целевой объект не является частью активной топологии, драйвер должен выбрать альтернативный активный целевой объект и попытаться сохранить текущее разрешение этого целевого объекта. Если это невозможно, драйвер должен попытаться установить для дисплея собственное разрешение или режим высокого разрешения. В этом случае разрешение дисплея должно быть задано не менее 800 x 600 пикселей в D3DDDIFMT_R8G8B8 (24 бита на пиксель) или D3DDDIFMT_X8R8G8B8 (32 бита на пиксель) для перечисления D3DDDIFORMAT .
  6. Если целевой объект не активен, драйвер должен попытаться включить целевой объект, предпочтительно на внутренней панели, если он доступен.
  7. По возможности драйвер должен очистить текущий буфер кадров и отключить аппаратный курсор и все наложения дисплея.
  8. Если это возможно, драйвер должен задать для гамма-пандуса устройства значения по умолчанию.
  9. Драйвер должен установить текущий буфер кадров в линейном режиме. Драйвер делает это либо с помощью диапазона поворота по умолчанию, либо путем отключения режима swizzle.
  10. Драйвер должен сделать текущий буфер кадров доступным для ЦП путем линейного сопоставления текущего буфера кадров с адресным пространством ЦП.
  11. Драйвер должен убедиться, что для видимости указанного целевого объекта задано значение "включено".
После того как драйвер мини-порта дисплея выполнит эти действия, он должен вернуть текущие параметры дисплея для устройства. Драйвер возвращает эти сведения, задавая элементы структуры DXGK_DISPLAY_INFORMATION , на которую ссылается параметр DisplayInfo .
Примечание После остановки устройства эти сведения могут использоваться универсальным драйвером дисплея Windows для управления устройством отображения.
 

Другие требования

В системах, поддерживающих единый расширяемый интерфейс встроенного ПО (UEFI), базовая система ввода-вывода VGA (BIOS) не существует. Для поддержки операций остановки PnP в этих системах модель драйвера дисплея Windows (WDDM) 1.2 и более поздних версий обеспечивает поддержку операционной системы для сброса устройства POST и получения сведений о его отображении во время операции остановки PnP. Операционная система делает это путем вызова функции DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера дисплея.

Операция остановки PnP может выполняться в ответ на запросы таких процессов, как диспетчер устройств, или во время процесса обновления драйвера.

Начиная с Windows 8 операционная система вызывает функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера только на устройстве POST во время операции остановки PnP.

Примечание Драйвер мини-порта дисплея не требует вызова DxgkCbAcquirePostDisplayOwnership. Однако операционная система может по-прежнему вызывать функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера устройства, если драйвер ранее не вызывал DxgkCbAcquirePostDisplayOwnership.
 
Если драйвер успешно завершит вызов этой функции, операционная система не будет вызывать функцию DxgkDdiStopDevice . Если драйверу не удается выполнить вызов этой функции, операционная система вызовет функцию DxgkDdiStopDevice , а поведение устройства будет таким же, как в Windows 7.

В системах только UEFI, если драйвер мини-порта дисплея не вызывает эту функцию, отображается черный экран, а драйвер IHV не установлен. Обходной путь для этого сценария — перезагрузка компьютера пользователем.

Дополнительные сведения об использовании этой функции в сценариях PnP см. в статье Plug and Play (PnP) в WDDM 1.2 и более поздних версиях.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h
IRQL PASSIVE_LEVEL

См. также раздел

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice