Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модель непрямого драйвера отображения (IDD) предоставляет простую модель драйвера в пользовательском режиме для поддержки мониторов, которые не подключены к традиционным выходным данным графического процессора. Некоторые типичные сценарии, в которых требуется идентификатор:
- Потоковая передача выходных данных отображения по сети удаленному клиенту (удаленному отображению).
- Создание виртуальных мониторов для таких приложений, как среды виртуального рабочего стола (виртуальные экраны).
- Подключение адаптера к компьютеру через USB, к которому подключен обычный монитор (VGA, DVI, HDMI, DP и т. д.).
Реализация IDD
Идентификатор — это сторонний драйвер UMDF для устройства. Вы можете разработать непрямой дисплейный драйвер (IDD) с помощью функциональных возможностей, предоставляемых IddCx (расширение класса непрямого дисплейного драйвера) для взаимодействия с графическими подсистемами Windows следующими способами:
- Создайте графический адаптер, представляющий непрямое устройство отображения.
- Мониторы отчетов подключены и отключены от системы.
- Укажите описания подключенных мониторов.
- Укажите доступные режимы отображения.
- Поддержка других функций отображения, таких как аппаратный курсор мыши, гамма-связь, связь I2C и защищенное содержимое.
- Обработайте изображения рабочего стола для отображения на мониторе.
Так как ИДЕНТИФИКАТОР является драйвером UMDF, он также отвечает за реализацию всех функций UMDF , таких как связь с устройствами, управление питанием, подключаемый модуль и т. д.
IdD выполняется в сеансе 0 без каких-либо компонентов, работающих в сеансе пользователя, поэтому любая нестабильность драйвера не влияет на стабильность системы в целом.
На следующей схеме представлен обзор архитектуры.
Модель пользовательского режима
IDD использует модель в пользовательском режиме и не поддерживает компоненты в режиме ядра. С помощью этой модели драйвер может использовать любые API DirectX для обработки образа рабочего стола. IddCx предоставляет образ рабочего стола для кодирования в поверхности DirectX.
Драйвер не должен вызывать API режима пользователя, которые не подходят для использования драйвера, таких как GDI, интерфейсы API окон, OpenGL или Vulkan.
Создайте IDD в качестве универсального драйвера Windows, чтобы его можно было использовать на нескольких платформах Windows.
Во время сборки:
- Идентификатор UMDF объявляет версию IddCx, для нее была создана.
- ОС гарантирует, что правильная версия IddCx загружается при загрузке драйвера.
Соглашения об именовании функций и обратного вызова IddCx
| Префикс | Тип | Примечания. |
|---|---|---|
| EVT_IDD_CX_XXX | Функция обратного вызова IDD | Идентификаторы реализуют такие обратные вызовы, как IddCx, такие как EVT_IDD_CX_ADAPTER_COMMIT_MODES, так и соответствующие обратные вызовы WDF, такие как EVT_WDF_DEVICE_D0_EXIT. |
| IddCxXxx | Function | Системные функции расширения класса IddCx, которые могут вызывать идентификаторы; например, IddCxAdapterInitAsync. |
| PFN_IDDCX_XXX | Указатели на функции IddCx | Идентификаторы не используют эти указатели. Вместо этого драйверы должны использовать эквивалентные функции IddCxXxx . |
Пример кода
Корпорация Майкрософт предоставляет пример реализации идентификаторов в GitHub для примеров драйверов Windows. В этом примере показано, как подключить монитор, как реагировать на набор режимов и как получать кадры.