Изменение фильтров получения объединения пакетов
Чтобы изменить фильтр получения в драйвере минипорта, который поддерживает объединение пакетов, драйвер избыточного протокола или фильтра выполняет следующие действия:
Чтобы получить список всех фильтров получения, объединенных в пакеты, которые были загружены в драйвер мини-порта, драйвер overlying отправляет запрос метода OID OID_RECEIVE_FILTER_ENUM_FILTERS. Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на NDIS_RECEIVE_FILTER_INFO_ARRAY структуру.
Примечание Когда драйвер или приложение инициализирует структуру NDIS_RECEIVE_FILTER_INFO_ARRAY , необходимо задать для элемента QueueId значение NDIS_DEFAULT_RECEIVE_QUEUE_ID.
После успешного возврата из запроса метода OID OID_RECEIVE_FILTER_ENUM_FILTERS элемент InformationBufferструктуры NDIS_OID_REQUEST содержит указатель на обновленную структуру NDIS_RECEIVE_FILTER_INFO_ARRAY , за которой следует одна или несколько NDIS_RECEIVE_FILTER_INFO структур. Каждая структура NDIS_RECEIVE_FILTER_INFO указывает идентификатор (идентификатор) для фильтра, заданного на сетевом адаптере.
Чтобы получить параметры определенного фильтра получения объединения пакетов, который был скачан в драйвер мини-порта, драйвер overlying отправляет запрос метода OID OID_RECEIVE_FILTER_PARAMETERS. Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на NDIS_RECEIVE_FILTER_PARAMETERS структуру. Драйвер или приложение инициализирует структуру NDIS_RECEIVE_FILTER_PARAMETERS , присваивая члену FilterId значение ненулевого идентификатора фильтра, параметры которого должны быть возвращены.
После успешного возврата из запроса метода OID элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на буфер. Этот буфер имеет следующий формат:
Структура NDIS_RECEIVE_FILTER_PARAMETERS , указывающая параметры для фильтра получения NDIS.
Массив NDIS_RECEIVE_FILTER_FIELD_PARAMETERS структур, указывающий критерий проверки фильтра для одного поля в заголовке сетевого пакета.
Драйвер overlying изменяет фильтр получения, добавляя, удаляя или изменяя набор критериев тестирования фильтра. Драйвер делает это путем добавления, удаления или изменения отдельных структур NDIS_RECEIVE_FILTER_FIELD_PARAMETERS из массива параметров поля, указанного в структуре NDIS_RECEIVE_FILTER_PARAMETERS .
После того как драйвер выполняет изменения критерия теста, он должен обновить элементы структуры NDIS_RECEIVE_FILTER_PARAMETERS , чтобы отразить изменения, внесенные в фильтр получения. Например, драйвер overlying должен обновить элемент FieldParametersArrayNumElements , чтобы он содержал новое количество элементов в массиве.
Дополнительные сведения см. в разделе Указание фильтра получения объединения пакетов.
Драйвер с избыточным значением отправляет запрос метода OID OID_RECEIVE_FILTER_SET_FILTER для скачивания измененного фильтра получения в драйвер мини-порта.
Дополнительные сведения см. в разделе Настройка фильтра получения объединения пакетов.