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


Изменение фильтров получения объединения пакетов

Чтобы изменить фильтр получения в драйвере минипорта, который поддерживает объединение пакетов, драйвер избыточного протокола или фильтра выполняет следующие действия:

  1. Чтобы получить список всех фильтров получения, объединенных в пакеты, которые были загружены в драйвер мини-порта, драйвер 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 указывает идентификатор (идентификатор) для фильтра, заданного на сетевом адаптере.

  2. Чтобы получить параметры определенного фильтра получения объединения пакетов, который был скачан в драйвер мини-порта, драйвер 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 структур, указывающий критерий проверки фильтра для одного поля в заголовке сетевого пакета.

  3. Драйвер overlying изменяет фильтр получения, добавляя, удаляя или изменяя набор критериев тестирования фильтра. Драйвер делает это путем добавления, удаления или изменения отдельных структур NDIS_RECEIVE_FILTER_FIELD_PARAMETERS из массива параметров поля, указанного в структуре NDIS_RECEIVE_FILTER_PARAMETERS .

    После того как драйвер выполняет изменения критерия теста, он должен обновить элементы структуры NDIS_RECEIVE_FILTER_PARAMETERS , чтобы отразить изменения, внесенные в фильтр получения. Например, драйвер overlying должен обновить элемент FieldParametersArrayNumElements , чтобы он содержал новое количество элементов в массиве.

    Дополнительные сведения см. в разделе Указание фильтра получения объединения пакетов.

  4. Драйвер с избыточным значением отправляет запрос метода OID OID_RECEIVE_FILTER_SET_FILTER для скачивания измененного фильтра получения в драйвер мини-порта.

    Дополнительные сведения см. в разделе Настройка фильтра получения объединения пакетов.