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


Определение управляющего закрепления узла

В отличие от фильтров и контактов, узлы не имеют связанного дескриптора файлов, с помощью которого приложения в круге 3 могут обращаться к ним. Так как узлы являются внутренними компонентами в фильтре, они существуют где-то между входными и выходными контактами фильтра. Поставщик сети должен определить, какой pin-код фильтра использовать, а затем использовать его для доступа к узлу. Этот контакт фильтра называется управляющий контакт для этого узла. Чтобы определить управляющий контакт для каждого узла в списке подключений шаблона BDA фильтра, поставщик сети запрашивает свойство KSPROPERTY_BDA_CONTROLLING_PIN_ID набора свойств KSPROPSETID_BdaTopology . Мини-диск BDA, в свою очередь, вызывает функцию поддержки BdaPropertyGetControllingPinId для каждого узла. В этом вызове мини-диск передает указатель на структуру KSP_BDA_NODE_PIN . Эта структура идентифицирует запрос свойства для получения контрольного контакта для определенного типа узла и пары входных и выходных контактов фильтра. Библиотека поддержки BDA возвращает идентификатор управляющего контакта для типа узла.

Мини-диск BDA обычно не перехватывает свойство KSPROPERTY_BDA_CONTROLLING_PIN_ID. Мини-накопитель автоматически отправляет функцию поддержки BdaPropertyGetControllingPinId из набора свойств KSPROPSETID_BdaTopology. Дополнительные сведения см. в разделе Определение топологии устройств BDA .

Библиотека поддержки может выполнить всю работу по определению идентификатора управляющего контакта, так как мини-диск BDA предоставил библиотеке поддержки указатель на структуру BDA_FILTER_TEMPLATE , когда мини-диск BDA начал работать. Дополнительные сведения см. в статье Запуск мини-драйвера BDA . Мини-накопитель BDA информирует библиотеку поддержки BDA о том, как определить контрольные контакты с помощью сведений, содержащихся в BDA_FILTER_TEMPLATE. Эти данные включают:

  • Массив подключений. Этот массив представляет собой KSTOPOLOGY_CONNECTION массив, который представляет все возможные соединения между типами узлов и контактов, которые можно установить в пределах фильтра или между фильтром и прилегающими фильтрами. Дополнительные сведения о массиве KSTOPOLOGY_CONNECTION см. в разделе Топология подключения для сопоставления .

  • Массив значений joint. Соединение — это точка в топологии, в которой один вход разделяется на один или несколько путей к разным выходным данным или один или несколько входов объединяются в один выходной путь. Значение, присваиваемое соединению, соответствует индексу элемента в массиве KSTOPOLOGY_CONNECTION. Большинство топологий будут иметь только одно соединение.

  • Массив структур BDA_PIN_PAIRING . Эти структуры определяют типы контактов входных и выходных данных, максимальное число экземпляров входного типа, которые можно создать в фильтре, и максимальное число экземпляров выходного типа, которые можно создать в фильтре. Эти структуры также содержат указатель на массив значений соединения между входными и выходными контактами. Дополнительные сведения о массиве BDA_PIN_PAIRING см. в статье Запуск мини-драйвера BDA .

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

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