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


Объекты и интерфейсы 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
Source Доступ к ней осуществляется с помощью указателя структуры. 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, взаимодействует с драйвером мини-порта дисплея для создания и обслуживания VidPN. Ниже описано, как драйвер мини-порта дисплея получает дескриптор и интерфейс для объекта VidPN.

  1. Во время инициализации подсистема ядра графики DirectX вызывает функцию DxgkDdiStartDevice драйвера дисплея miniport. Этот вызов предоставляет драйверу мини-порта дисплея 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. Вызовите функцию pfnAssignSourceModeSetDXGK_VIDPN_INTERFACE , чтобы назначить новый режим, заданный для определенного источника видео. Новый набор режимов источника заменяет набор исходного режима, назначенный в данный момент данному источнику.

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

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

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

Определение поддержки VidPN на адаптере дисплея

Перечисление кофункционального исходного и целевого режимов VidPN

Видео: сетевая терминология

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