Plug and Play (PnP) в WDDM 1.2 и более поздних версиях
Все драйверы мини-портов отображения Windows (WDDM) 1.2 и более поздних версий должны поддерживать следующее поведение в ответ на запросы запуска и остановки инфраструктуры Plug and Play (PnP). Поведение может отличаться в зависимости от того, возвращает ли драйвер код успеха или сбоя, а также от того, основано ли системное оборудование на базовой системе ввода-вывода (BIOS) или едином расширяемом интерфейсе встроенного ПО (UEFI).
Минимальная версия WDDM | 1,2 |
Минимальная версия Windows | 8 |
Реализация драйвера— только полная графика и отображение | Обязательный |
Требования и тесты WHCK | Device.Graphics.WDDM12.Display.PnpStopStartSupport |
Отображение драйвера мини-порта PnP DDI
Начиная с Windows 8 подсистема ядра графики Microsoft DirectX предоставляет эту функцию, которую драйвер может вызывать при запуске или возобновлении режима гибернации:
Эти функции и структура доступны для драйвера мини-порта дисплея для реализации требований WDDM 1.2 и более поздних версий PnP:
- DxgkDdiStopDeviceAndReleasePostDisplayOwnership
- DxgkDdiSystemDisplayEnable
- DxgkDdiSystemDisplayWrite
- DXGK_DISPLAY_INFORMATION
Операция запуска PnP
Процесс запуска Plug and Play (PnP) на устройстве дисплея происходит во время загрузки или во время обновления с одного драйвера дисплея на другой. В этом случае драйвер должен вызвать функцию DxgkCbAcquirePostDisplayOwnership , чтобы получить сведения о буфере кадров и поддерживать синхронизацию отображения. Сведения о буфере кадров предоставляются либо из встроенного ПО, либо из предыдущего драйвера WDDM 1.2 и более поздних версий, который был загружен в систему.
Во время вызовов, которые операционная система выполняет в функцию DxgkDdiSetPowerState для возврата в состояние питания D0, а для функции DxgkDdiStartDevice драйвер WDDM 1.2 и более поздних версий должен установить видимость источника в значение false (DXGKARG_SETVIDPNSOURCEVISIBILITY.Видимое = значение FALSE) для всех активных целевых объектов VidPN. В этом случае оборудование конвейера отображения должно поддерживать сигналы синхронизации с монитором, но конвейер должен продолжать отправлять данные черных пикселей на монитор независимо от того, какие пиксельные данные присутствуют на поверхности, которая в настоящее время сканируется. Это означает, что конвейер пикселей гарантированно будет пустым для монитора со всеми черными пикселями. Позже, когда первый кадр отображается в буфере кадров, операционная система устанавливает видимость источника в значение true.
Все эти процедуры обеспечивают синхронизацию монитора и гарантируют, что пользователь не видит вспышки или мерцания на экране.
Это коды возврата, которые драйвер должен возвращать после запуска процесса PnP.
Код возврата драйвера | Описание |
---|---|
Успех |
Поведение такое же, как и в Windows 7. В системе на основе BIOS, если драйвер запускается успешно, буфер кадров по-прежнему активен и драйвер должен быть готов к переходу в допустимый режим. |
Сбоя |
Для системы на основе BIOS драйвер должен оставить систему в состоянии, совместимом с BIOS. Для системы на основе UEFI драйвер должен оставить дисплей в том же режиме, который был задан протоколом UEFI Graphics Output Protocol (GOP), чтобы базовый драйвер дисплея смог использовать дисплей. Драйвер должен вернуть допустимый код ошибки. Если драйвер не может оставить GOP в состоянии, которое может использоваться базовым драйвером дисплея, драйвер должен вернуть код ошибки STATUS_GRAPHICS_STALE_MODESET из Ntstatus.h, и операционная система вызывает проверку системных ошибок. |
Операция остановки PnP
Процесс остановки Plug and Play (PnP) на устройстве отображения обычно происходит при обновлении драйвера до новой версии. В этом случае операционная система вызывает функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвера, которая требует, чтобы драйвер предоставлял точные сведения о буфере кадров.
В вызове DxgkDdiStopDeviceAndReleasePostDisplayOwnership драйвер должен убедиться, что видимость источника для активных целевых объектов VidPn верна (DXGKARG_SETVIDPNSOURCEVISIBILITY.Видимое = значение TRUE). Кроме того, начиная с версии WDDM 1.2 драйвер должен убедиться, что поверхность, из которую запрограммировано сканирование конвейера пикселей, заполнена черными пикселями. Драйвер должен завершить заполнение поверхности черными пикселями, прежде чем видимость источника будет иметь значение true.
Не забудьте также реализовать DxgkDdiStopDevice в драйвере. В некоторых случаях операционная система может вызывать DxgkDdiStopDevice вместо DxgkDdiStopDeviceAndReleasePostDisplayOwnership или после того, как вызов DxgkDdiStopDeviceAndReleasePostDisplayOwnership завершается сбоем.
Это коды возврата, которые драйвер должен возвращать после остановки процесса PnP.
Код возврата драйвера | Описание |
---|---|
Успешно, и драйвер возвращает сведения о режиме |
Перед остановкой драйвера он должен настроить буфер кадров, используя текущее разрешение, которое может использовать базовый драйвер дисплея, и драйвер должен возвращать эти сведения, когда операционная система вызывает функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership . Сведения о сохраненном режиме не обязательно должны быть совместимы с BIOS, и базовый драйвер дисплея не будет предлагать режим BIOS, пока система не перезагрузится. Операционная система гарантирует, что она не будет вызывать DxgkDdiStopDevice , если DxgkDdiStopDeviceAndReleasePostDisplayOwnership возвращает STATUS_SUCCESS. |
Успешно, и драйвер устанавливает элементы Width и Height структуры DXGK_DISPLAY_INFORMATION равны нулю. |
Этот сценарий возможен только в том случае, если в системе есть две графические карты, мониторы не подключены к текущему устройству с включением питания (POST), а операционная система вызывает функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership , чтобы остановить устройство POST. В этом случае текущий дисплей продолжает работать на втором графическом адаптере, а базовый драйвер дисплея работает в безголовом режиме на адаптере, поддерживающем устройство POST. |
Сбоя |
Операционная система вызывает интерфейс драйвера остановки PnP в стиле Windows 7 с помощью функции DxgkDdiStopDevice . Для системы на основе BIOS драйвер должен перенаставить дисплей в режим, совместимый с BIOS. Для системы на основе UEFI базовый драйвер дисплея работает в режиме без головы на графическом адаптере. |
Дополнительные требования к PnP и другим переходам состояния см. в статье Обеспечение простого перехода состояния в WDDM 1.2 и более поздних версиях.
Требования к сертификации оборудования
Сведения о требованиях, которым должны соответствовать аппаратные устройства при реализации этой функции, см. в соответствующей документации по WHCK на сайте Device.Graphics.WDDM12.Display.PnpStopStartSupport.
Обзор функций, добавленных с помощью Windows 8, см. в разделе Функции WDDM 1.2.