функция обратного вызова 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 :- Драйвер должен остановить устройство отображения, связанное с целью представления видео, указанной параметром TargetId , но должен поддерживать дисплей, связанный с этим целевым объектом, включен и видимым.
- Драйвер должен проверка подключение дисплея, связанного с этим целевым объектом. Если к целевому объекту не подключен дисплей, драйвер должен завершить вызов этой функции и вернуть код ошибки STATUS_NOT_SUPPORTED .
- Драйвер должен отключить сигнал для всех остальных дисплеев, подключенных к адаптеру дисплея. Если это невозможно, драйвер должен попытаться разместить пустое изображение на всех остальных дисплеях. Если это невозможно, драйвер должен оставить последнее изображение на экране без изменений.
- Драйвер должен сохранить текущий режим отображения на указанном целевом объекте и предоставить этот режим операционной системе в рамках вызова этой функции.
- Если драйвер не может поддерживать текущий режим отображения или целевой объект не является частью активной топологии, драйвер должен выбрать альтернативный активный целевой объект и попытаться сохранить текущее разрешение этого целевого объекта. Если это невозможно, драйвер должен попытаться установить для дисплея собственное разрешение или режим высокого разрешения. В этом случае разрешение дисплея должно быть задано не менее 800 x 600 пикселей в D3DDDIFMT_R8G8B8 (24 бита на пиксель) или D3DDDIFMT_X8R8G8B8 (32 бита на пиксель) для перечисления D3DDDIFORMAT .
- Если целевой объект не активен, драйвер должен попытаться включить целевой объект, предпочтительно на внутренней панели, если он доступен.
- По возможности драйвер должен очистить текущий буфер кадров и отключить аппаратный курсор и все наложения дисплея.
- Если это возможно, драйвер должен задать для гамма-пандуса устройства значения по умолчанию.
- Драйвер должен установить текущий буфер кадров в линейном режиме. Драйвер делает это либо с помощью диапазона поворота по умолчанию, либо путем отключения режима swizzle.
- Драйвер должен сделать текущий буфер кадров доступным для ЦП путем линейного сопоставления текущего буфера кадров с адресным пространством ЦП.
- Драйвер должен убедиться, что для видимости указанного целевого объекта задано значение "включено".
Другие требования
В системах, поддерживающих единый расширяемый интерфейс встроенного ПО (UEFI), базовая система ввода-вывода VGA (BIOS) не существует. Для поддержки операций остановки PnP в этих системах модель драйвера дисплея Windows (WDDM) 1.2 и более поздних версий обеспечивает поддержку операционной системы для сброса устройства POST и получения сведений о его отображении во время операции остановки PnP. Операционная система делает это путем вызова функции DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера дисплея.Операция остановки PnP может выполняться в ответ на запросы таких процессов, как диспетчер устройств, или во время процесса обновления драйвера.
Начиная с Windows 8 операционная система вызывает функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера только на устройстве POST во время операции остановки PnP.
В системах только UEFI, если драйвер мини-порта дисплея не вызывает эту функцию, отображается черный экран, а драйвер IHV не установлен. Обходной путь для этого сценария — перезагрузка компьютера пользователем.
Дополнительные сведения об использовании этой функции в сценариях PnP см. в статье Plug and Play (PnP) в WDDM 1.2 и более поздних версиях.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Минимальная версия сервера | Windows Server 2012 |
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h |
IRQL | PASSIVE_LEVEL |