структура 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