Объекты и интерфейсы VidPN

Диспетчер сети видеоподачи (VidPN) использует объект VidPN для управления информацией о связях между источниками видеоподачи, целевыми объектами видеоподачи и режимами отображения. Дополнительные сведения см. в разделе «Введение в сети для видеопрезентаций».

Объект VidPN

Объект VidPN содержит следующие подобъекты.

  • Топология

  • Установка режима источника

  • Режим цели установлен

  • Мониторинг набора исходного режима

  • Настройка диапазона частот монитора

  • Мониторинг набора дескрипторов

  • Путь

  • Исходный материал

  • Цель

  • Исходный режим

  • Целевой режим

  • Мониторинг исходного режима

На следующей схеме иллюстрируется объект VidPN и его подобъекты.

Схема, демонстрирующая объект VidPN и его различные вложенные объекты, включая топологию, наборы режимов и пути.

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

Доступ к синим объектам на схеме осуществляется через дескрипторы и интерфейсы, а к серым объектам — через указатели структуры. Интерфейс в этом контексте — это структура, содержащая указатели функций. Например, структура DXGK_VIDPNTOPOLOGY_INTERFACE содержит указатели на функции (реализованные диспетчером VidPN), которые драйвер мини-порта отображения вызывает для проверки и изменения объекта топологии. Когда драйвер мини-порта дисплея вызывает любую из этих функций, он должен предоставить дескриптор объекту топологии. В следующей таблице перечислены типы данных дескриптора, интерфейса и указателя, используемые для доступа к объекту VidPN и его вложенным объектам.

Объект Метод доступа и тип данных
VidPN (интерфейс VidPN) Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPN, DXGK_VIDPN_INTERFACE
Топология (интерфейс топологии VidPN) Доступ обеспечивается через хендл и интерфейс. D3DKMDT_HVIDPNTOPOLOGY, DXGK_VIDPNTOPOLOGY_INTERFACE
Набор режима источника (интерфейс набора исходного режима VidPN) Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPNSOURCEMODESET, DXGK_VIDPNSOURCEMODESET_INTERFACE
Набор целевого режима (интерфейс набора целевых режимов VidPN) Доступ осуществляется через хэндл и интерфейс. D3DKMDT_HVIDPNTARGETMODESET, DXGK_VIDPNTARGETMODESET_INTERFACE
Режим источника монитора установлен Обеспечивается доступ через дескриптор и интерфейс. D3DKMDT_HMONITORSOURCEMODESET, DXGK_MONITORSOURCEMODESET_INTERFACE
Путь Доступ осуществляется через указатель структуры. D3DKMDT_VIDPN_PRESENT_PATH
Исходный материал Доступ осуществляется через указатель структуры. D3DKMDT_VIDEO_PRESENT_SOURCE
Цель Доступ осуществляется через указатель структуры. D3DKMDT_VIDEO_PRESENT_TARGET
Исходный режим Доступ осуществляется через указатель структуры. D3DKMDT_VIDPN_SOURCE_MODE
Целевой режим Доступ через указатель структуры. D3DKMDT_VIDPN_TARGET_MODE
Мониторинг исходного режима Доступ через указатель структуры. D3DKMDT_MONITOR_SOURCE_MODE
Настройка диапазона частот монитора Доступ через указатель структуры. [DXGK_MONITORFREQUENCYRANGESET_INTERFACE
Мониторинг набора дескрипторов Доступ осуществляется через указатель структуры. [DXGK_MONITORDESCRIPTORSET_INTERFACE

Диспетчер VidPN

Диспетчер VidPN, который является одним из компонентов подсистемы графического ядра DirectX, взаимодействует с драйвером мини-порта отображения для создания и обслуживания VidPNs. В следующих шагах описывается, как драйвер мини-порта отображения получает дескриптор и интерфейс для объекта VidPN.

  1. Во время инициализации подсистема ядра графики DirectX вызывает функцию DxgkDdiStartDevice драйвера минипорта. Этот вызов предоставляет драйвер мини-порта дисплея со структурой DXGKRNL_INTERFACE , которая содержит указатели на функции, реализованные подсистемой ядра графики DirectX. Одной из этих функций является DxgkCbQueryVidPnInterface.

  2. Когда диспетчеру VidPN требуется помощь драйвера минипорта дисплея, он предоставляет драйверу минипорта дисплея дескриптор к объекту VidPN путем вызова одной из следующих функций:

  3. Драйвер минипорта дисплея передает дескриптор, полученный на шаге 2, в DxgkCbQueryVidPnInterface, который возвращает указатель на структуру DXGK_VIDPN_INTERFACE.

После того как драйвер мини-порта дисплея имеет дескриптор и интерфейс для объекта VidPN, он может получать дескриптора и интерфейсы (по мере необходимости) к основным подобъектам: топологии, набору исходного режима, набору целевых режимов и отслеживать набор исходного режима. Например, драйвер мини-порта отображения может вызывать pfnGetTopology (одну из функций в интерфейсе VidPN), чтобы получить дескриптор объекта топологии VidPN и указатель на структуру DXGK_VIDPNTOPOLOGY_INTERFACE .

Следующие функции (в интерфейсе VidPN) предоставляют дескрипторы и интерфейсы к основным подобъектам объекта VidPN.

Обратите внимание, что две функции в предыдущем списке имеют соответствующие функции, которые освобождают подобъекты VidPN.

После получения дескриптора объекта и интерфейса к одному из основных подобъектов VidPNs драйвер мини-порта может вызывать функции интерфейса для получения дескрипторов объектов, связанных с подобъектом. Например, имея хендл и интерфейс к топологическому объекту, драйвер дисплейного минипорта может предпринять следующие шаги для получения дескрипторов всех путей в топологической структуре.

  1. Интерфейс топологии VidPN

    Вызовите функцию pfnAcquireFirstPathInfo интерфейса топологии VidPN, чтобы получить указатель на структуру D3DKMDT_VIDPN_PRESENT_PATH , описывающую первый путь в топологии.

  2. Интерфейс топологии VidPN

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

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

Обратите внимание, что интерфейс DXGK_VIDPNSOURCEMODESET_INTERFACE не имеет функции для удаления режима из набора исходных режимов. Если драйвер мини-порта дисплея должен обновить набор исходного режима, он не изменяет существующий режим, добавляя и удаляя режимы. Вместо этого он создает новый набор режимов, который заменяет старый набор режимов. Примером функции, которая должна обновлять наборы режимов, является функция DxgkDdiEnumVidPnCofuncModality драйвера минипорта дисплея. Действия, связанные с обновлением исходного режима, приведены ниже.

  1. Вызовите pfnCreateNewModeInfo интерфейса DXGK_VIDPNSOURCEMODESET_INTERFACE, чтобы получить указатель на структуру D3DKMDT_VIDPN_SOURCE_MODE (выделенную диспетчером VidPN).

    Вызовите pfnAddMode многократно, чтобы добавить режимы в набор исходного режима.

  2. Вызовите функцию pfnAssignSourceModeSet из интерфейса DXGK_VIDPN_INTERFACE, чтобы назначить новый набор режимов конкретному источнику видео. Новый набор исходного режима заменяет набор исходного режима, который в настоящее время назначается данному источнику.

Обновление целевого режима аналогично обновлению набора исходного режима. Интерфейс DXGK_VIDPNTARGETMODESET_INTERFACE имеет следующие функции:

Отсутствует интерфейс (набор функций) для получения исходного и целевого объекта, принадлежащих конкретному пути. Драйвер минипорта отображения может определить, какой источник и целевой объект принадлежат определенному пути, проверяя элементы VidPnSourceId и VidPnTargetId структуры D3DKMDT_VIDPN_PRESENT_PATH, представляющей путь.

См. также

Определение того, поддерживается ли VidPN на адаптере отображения

Перечисление ко-функциональных режимов источников и целей VidPN

Видео, представляющая сетевую терминологию

Получение дополнительных целевых режимов монитора