Перечисление фильтров получения на виртуальном порту
После создания виртуального порта (VPort) в сетевом коммутаторе сетевого адаптера более низверх драйверы и пользовательские приложения могут выполнять следующие действия:
Перечисление параметров для фильтров получения в 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 одним из следующих способов:
Из предыдущего запроса метода OID OID_NIC_SWITCH_CREATE_VPORT.
Из предыдущего запроса метода OID OID_NIC_SWITCH_ENUM_VPORTS.
Примечание Этот член действителен, только если драйвер или приложение устанавливает флаг 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 одним из следующих способов:
Из предыдущего запроса метода OID OID_NIC_SWITCH_CREATE_VPORT.
Из предыдущего запроса метода OID OID_NIC_SWITCH_ENUM_VPORTS.
NDIS обрабатывает запросы OID OID_RECEIVE_FILTER_ENUM_FILTERS и метода OID_RECEIVE_FILTER_PARAMETERS для драйверов мини-портов. NDIS получил информацию из внутреннего кэша данных, полученных из запроса OID OID_RECEIVE_FILTER_SET_FILTER .