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


структура KSTOPOLOGY_CONNECTION (ks.h)

Структура KSTOPOLOGY_CONNECTION описывает одно подключение к пути к данным в фильтре потоковой передачи ядра.

PCCONNECTION_DESCRIPTOR — это псевдоним для KSTOPOLOGY_CONNECTION.

Синтаксис

typedef struct {
  ULONG FromNode;
  ULONG FromNodePin;
  ULONG ToNode;
  ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;

Члены

FromNode

Указывает идентификатор узла на вышестоящий конце соединения. Если этот конец соединения является внешним закреплением на фильтре, а не логическим закреплением на узле, m присвойте этому члену значение null node-ID, KSFILTER_NODE.

FromNodePin

Указывает идентификатор закрепления для вышестоящий конце соединения. Если параметр **FromNode **является KSFILTER_NODE, закрепление на этом конце соединения является внешним закреплением фильтра. В противном случае закрепление на этом конце является логическим закреплением на внутреннем узле.

ToNode

Указывает идентификатор узла на нижнем конце соединения. Если этот конец соединения является внешним закреплением фильтра, а не логическим закреплением на узле, задайте этому члену значение null node-ID, KSFILTER_NODE.

ToNodePin

Указывает идентификатор закрепления для нижнего конца подключения. Если toNode KSFILTER_NODE, то закрепление на этом конце соединения является внешним закреплением фильтра. В противном случае закрепление на этом конце является логическим закреплением на внутреннем узле.

Комментарии

KSTOPOLOGY_CONNECTION представляет собой одно соединение внутри фильтра между внешними контактами, внутренними узлами или внешним контактом и внутренним узлом.

Драйвер потоковой передачи возвращает массив структур KSTOPOLOGY_CONNECTION в ответ на запрос KSPROPERTY_TOPOLOGY_CONNECTIONS get-property.

При представлении соединения между двумя внешними контактами и FromNode , и ToNode должны иметь значение KSFILTER_NODE, а FromNodePin и ToNodePin должны быть идентификаторами типа контактов соответствующих контактов. Описание идентификаторов типов закрепления см. в KSPROPSETID_Pin .

В противном случае FromNodePin или ToNodePin представляют логический входящий или исходящий контакт для подключения. Логические номера контактов используются исключительно для описания соединения между узлами; они не имеют существования за пределами свойства KSPROPERTY_TOPOLOGY_CONNECTIONS.

PCCONNECTION_DESCRIPTOR

Имя структуры PCCONNECTION_DESCRIPTOR является псевдонимом для KSTOPOLOGY_CONNECTION. PCCONNECTION_DESCRIPTOR для IMiniport::GetDescription() — это описание соединения узла в топологии фильтра, реализованного мини-портом. В заголовке portcls.h он определяется следующим образом:

typedef KSTOPOLOGY_CONNECTION PCCONNECTION_DESCRIPTOR, *PPCCONNECTION_DESCRIPTOR;

Обратите внимание, что для описаний параметров PCFILTER_NODE используется с PCCONNECTION_DESCRIPTOR вместо KSFILTER_NODE.

Структура PCCONNECTION_DESCRIPTOR определяет одно соединение внутри фильтра. Подключение может быть одним из следующих:

  • Соединение между двумя внутренними узлами

  • Соединение между внутренним узлом и закреплением фильтра

  • Соединение между двумя контактами фильтра

Последний тип подключения возникает, когда входной контакт на фильтре передает данные непосредственно в выходной контакт в том же фильтре.

Драйвер адаптера использует массив структур для указания внутренней топологии фильтра.

Поток данных передается из конца FromNode в конец ToNode соединения.

Чтобы использовать структуру PCCONNECTION_DESCRIPTOR , модуль записи драйверов назначает "логические" контакты узлам внутри фильтра. Эти "контакты" являются точками подключения на узлах и аналогичны внешним контактам, которые фильтр использует для подключения к другим фильтрам. Однако логические контакты на узлах используются исключительно для указания подключений внутри фильтра.

Простой узел с одним входом и одним выходом обычно нумерует свои входные и выходные контакты соответственно. По соглашению эта нумерации основана на направлении потока IRP, а не на потоке данных.

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

Если контакт на одном конце соединения является входным или выходным контактом фильтра, а не логическим контактом на узле, задайте для элемента FromNode или ToNode (в зависимости от того, какой конец соединения вы указываете) значение null node-ID , PCFILTER_NODE.

Избегайте путаницы логических контактов, которые используются исключительно для описания точек подключения на узлах в фильтре, с внешними контактами, которые фильтры используют для подключения к другим фильтрам. Логические контакты редко используются вне структуры PCCONNECTION_DESCRIPTOR . В этом документе термин закрепление означает закрепление в фильтре KS, а не логическое закрепление на узле, если не указано иное.

Метод IMiniport::GetDescription выводит PCFILTER_DESCRIPTOR структуру, содержащую указатель на массив PCCONNECTION_DESCRIPTOR .

Простой пример кода, демонстрирующий использование структуры PCCONNECTION_DESCRIPTOR , см. в разделе Предоставление топологии фильтра.

Требования

Требование Значение
Заголовок ks.h (включая Ks.h)

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

BdaPropertyTemplateConnections

KSPROPERTY_TOPOLOGY_CONNECTIONS

KSPROPSETID_Pin

KSPROPSETID_Topology