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


структура NDIS_RECEIVE_FILTER_PARAMETERS (ntddndis.h)

Структура NDIS_RECEIVE_FILTER_PARAMETERS задает параметры для фильтра получения NDIS.

Фильтры получения NDIS используются в следующих интерфейсах NDIS:

Синтаксис

typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
  NDIS_OBJECT_HEADER       Header;
  ULONG                    Flags;
  NDIS_RECEIVE_FILTER_TYPE FilterType;
  NDIS_RECEIVE_QUEUE_ID    QueueId;
  NDIS_RECEIVE_FILTER_ID   FilterId;
  ULONG                    FieldParametersArrayOffset;
  ULONG                    FieldParametersArrayNumElements;
  ULONG                    FieldParametersArrayElementSize;
  ULONG                    RequestedFilterIdBitCount;
  ULONG                    MaxCoalescingDelay;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
} NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;

Члены

Header

Структура NDIS_OBJECT_HEADER для структуры NDIS_RECEIVE_FILTER_PARAMETERS . Драйвер задает элемент Type структуры, указанной в заголовке , для NDIS_OBJECT_TYPE_DEFAULT.

Чтобы указать версию структуры NDIS_RECEIVE_FILTER_PARAMETERS , драйвер устанавливает для члена Revision одно из следующих значений:

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2

Добавлены члены VPortId и MaxCoalescingDelay для NDIS 6.30.

Драйвер задает для элемента Size значение NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2.

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1

Исходная версия для NDIS 6.20.

Драйвер задает для элемента Size значение NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1.

Flags

Побитовое ИЛИ следующих флагов.

Версия Значение Значение
NDIS 6.50 и более поздних версий NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 Если этот флаг установлен для фильтра приема, сетевой адаптер должен соответствовать этому MAC-адресу во внутреннем кадре Ethernet в инкапсулированных пакетах.
NDIS 6.20–NDIS 6.40 0x00000002 NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE Если этот флаг установлен для фильтра приема, сетевой адаптер должен соответствовать этому MAC-адресу во внутреннем кадре Ethernet в инкапсулированных пакетах GRE.

FilterType

Тип фильтра получения.

QueueId

Идентификатор очереди получения. Этот идентификатор представляет собой целое число от нуля до количества очередей, поддерживаемых сетевым адаптером. Значение NDIS_DEFAULT_RECEIVE_QUEUE_ID указывает очередь получения по умолчанию.

Примечание Драйверы минипорта, поддерживающие объединение пакетов NDIS или интерфейс SR-IOV, должны задать для элемента QueueId значение NDIS_DEFAULT_RECEIVE_QUEUE_ID.
 

FilterId

Идентификатор фильтра получения. Идентификатор фильтра — это целое число от единицы до количества фильтров приема, поддерживаемых сетевым адаптером. Недопустимое значение, равное нулю.

FieldParametersArrayOffset

Смещение в байтах к первому элементу в массиве элементов, следующих за этой структурой. Смещение измеряется от начала структуры NDIS_RECEIVE_FILTER_PARAMETERS до начала первого элемента. Каждый элемент в массиве является NDIS_RECEIVE_FILTER_FIELD_PARAMETERS структурой.

Примечание Если параметр FieldParametersArrayNumElements имеет нулевое значение, этот элемент игнорируется.
 

FieldParametersArrayNumElements

Количество элементов в массиве.

FieldParametersArrayElementSize

Размер в байтах каждого элемента массива.

RequestedFilterIdBitCount

Количество битов в идентификаторе фильтра. Драйвер мини-порта использует это количество битов для идентификатора фильтра в данных внешнего канала NetBufferListFilteringInfo в NET_BUFFER_LIST структурах. Если этот элемент равен нулю, драйвер мини-порта не должен указывать идентификатор фильтра в данных OOB NetBufferListFilteringInfo .

Начиная с версии NDIS 6.20 этот элемент должен иметь нулевое значение.

MaxCoalescingDelay

Максимальное время (в миллисекундах) сохранения первого пакета, соответствующего этому фильтру получения, в буфере объединения оборудования сетевого адаптера.

Как только будет получен первый пакет, соответствующий фильтру, сетевой адаптер объединяет пакет. Адаптер также запускает аппаратный таймер, срок действия которого равен значению элемента MaxCoalescingDelay . Дополнительные пакеты, соответствующие одному и тому же фильтру, должны быть объединены адаптером без сброса и перезапуска аппаратного таймера.

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

Примечание Драйверы минипорта, которые не поддерживают объединение пакетов NDIS , должны игнорировать этот элемент.
 

VPortId

Идентификатор VPort, для которого необходимо настроить фильтр получения. Значение NDIS_DEFAULT_VPORT_ID указывает VPort по умолчанию, подключенный к физической функции (PF) PCI Express (PCIe) сетевого адаптера.

Примечание Этот элемент действителен только для интерфейса SR-IOV.
 

Комментарии

Структура NDIS_RECEIVE_FILTER_PARAMETERS используется с запросами OID
OID_RECEIVE_FILTER_PARAMETERS и
OID_RECEIVE_FILTER_SET_FILTER. Эти запросы OID указывают параметры конфигурации фильтра. Спецификация фильтра может включать тесты для нескольких полей в сетевом пакете.

Элементы FieldParametersArrayOffset, FieldParametersArrayNumElements и FieldParametersArrayElementSize структуры NDIS_RECEIVE_FILTER_PARAMETERS определяют массив NDIS_RECEIVE_FILTER_FIELD_PARAMETERS структуры. Каждая структура NDIS_RECEIVE_FILTER_FIELD_PARAMETERS в массиве задает критерий проверки фильтра для одного поля в заголовке сети.

Сетевой адаптер объединяет результаты всех полевых тестов с логической операцией AND. То есть, если какой-либо тест поля, включенный в массив NDIS_RECEIVE_FILTER_FIELD_PARAMETERS структур, завершается сбоем, сетевой пакет не соответствует указанному критерию фильтра.

Когда сетевой адаптер проверяет полученный пакет на соответствие этим критериям фильтра, он должен игнорировать все поля в пакете, где не задан критерий тестирования.

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

  • Если сетевой адаптер поддерживает объединение пакетов приема NDIS, адаптер должен объединить пакет, соответствующий фильтру. Адаптер также должен объединить полученные пакеты, которые соответствуют одинаковым или разным фильтрам приема. Адаптер должен удерживать создание прерывания приема, пока не произойдет другое аппаратное событие, например следующее:
    • Срок действия аппаратного таймера, для которого задано значение элемента MaxCoalescingDelay .
    • Доступное пространство в буфере объединения оборудования достигает определенной для адаптера низкой водной отметки.

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

  • Если сетевой адаптер поддерживает интерфейс SR-IOV, адаптер должен перенаправить пакет в очередь получения VPort по умолчанию или не по умолчанию. Очередь получения задается элементом QueueId , а VPort — элементом VPortId .
    Примечание Начиная с Windows Server 2012, интерфейс SR-IOV поддерживает только очередь получения по умолчанию в виртуальных портах по умолчанию и не по умолчанию. Очередь получения по умолчанию определяется путем задания члену QueueId значения NDIS_DEFAULT_RECEIVE_QUEUE_ID.
     
  • Если сетевой адаптер поддерживает интерфейс VMQ, адаптер должен перенаправить пакет в очередь получения, указанную членом QueueId .

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.20 и более поздних версиях.
Верхняя часть ntddndis.h (включая Ndis.h)

См. также раздел

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER