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


Перечисление фильтров получения на виртуальном порту

После создания виртуального порта (VPort) в сетевом коммутаторе сетевого адаптера более низверх драйверы и пользовательские приложения могут выполнять следующие действия:

Дополнительные сведения о создании VPort см. в статье Создание виртуального порта.

Перечисление фильтров получения

Чтобы получить список всех фильтров получения, заданных на виртуальном порту (VPort) коммутатора сетевого адаптера, более входящие драйверы и приложения могут выдавать запросы метода идентификатора объекта (OID) OID_RECEIVE_FILTER_ENUM_FILTERS.

Элемент InformationBuffer структуры NDIS_OID_REQUEST изначально содержит указатель на NDIS_RECEIVE_FILTER_INFO_ARRAY структуру.

Прежде чем основной драйвер или пользовательское приложение будет выполнять этот запрос метода OID, оно должно инициализировать NDIS_RECEIVE_FILTER_INFO_ARRAY структуру и задать элементы этой структуры следующим образом:

  • Для элемента QueueId необходимо задать значение NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Для элемента VPortId необходимо задать идентификатор, связанный с VPort. Драйвер overlying получает идентификатор VPort одним из следующих способов:

    Примечание Этот член действителен, только если драйвер или приложение устанавливает флаг NDIS_RECEIVE_FILTER_INFO_ARRAY_VPORT_ID_SPECIFIED в элементе Flags . Если этот флаг не установлен, возвращаются фильтры получения, заданные для каждого VPort в коммутаторе сетевого адаптера.

После успешного возврата из запроса метода OID OID_RECEIVE_FILTER_ENUM_FILTERS элемент InformationBufferструктуры NDIS_OID_REQUEST содержит указатель на обновленную структуру NDIS_RECEIVE_FILTER_INFO_ARRAY , за которой следует одна или несколько NDIS_RECEIVE_FILTER_INFO структур. Каждая структура NDIS_RECEIVE_FILTER_INFO указывает уникальный идентификатор фильтра получения, заданного в указанном VPort.

Запрос определенного фильтра получения

Избыточные драйверы или приложения могут выдавать запрос метода OID OID_RECEIVE_FILTER_PARAMETERS для получения параметров определенного фильтра в VPort.

Элемент InformationBuffer структуры NDIS_OID_REQUEST изначально содержит указатель на структуру NDIS_RECEIVE_FILTER_PARAMETERS .

Прежде чем драйвер или приложение пользователя выдает этот запрос метода OID, оно должно инициализировать структуру NDIS_RECEIVE_FILTER_PARAMETERS и задать элементы этой структуры следующим образом:

  • Для элемента FilterId должно быть задано ненулевое значение идентификатора фильтра, параметры которого должны быть возвращены.

    Примечание Драйвер overlying получил идентификатор фильтра из предыдущего запроса метода OID OID_RECEIVE_FILTER_SET_FILTER или OID_RECEIVE_FILTER_ENUM_FILTERS. Приложение может получить идентификатор фильтра только из предыдущего запроса метода OID OID_RECEIVE_FILTER_ENUM_FILTERS.

  • Для элемента QueueId необходимо задать значение NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Для элемента VPortId необходимо задать идентификатор, связанный с VPort. Драйвер overlying получает идентификатор VPort одним из следующих способов:

NDIS обрабатывает запросы OID OID_RECEIVE_FILTER_ENUM_FILTERS и метода OID_RECEIVE_FILTER_PARAMETERS для драйверов мини-портов. NDIS получил информацию из внутреннего кэша данных, полученных из запроса OID OID_RECEIVE_FILTER_SET_FILTER .