структура NDIS_RECEIVE_FILTER_PARAMETERS (ntddndis.h)
Структура NDIS_RECEIVE_FILTER_PARAMETERS задает параметры для фильтра получения NDIS.
Фильтры получения NDIS используются в следующих интерфейсах NDIS:
-
Объединение пакетов NDIS. Дополнительные сведения об использовании фильтров получения в этой технологии см. в разделе Управление фильтрами получения объединения пакетов.
-
Виртуализация одно корневых операций ввода-вывода (SR-IOV). Дополнительные сведения об использовании фильтров получения в этой технологии см. в разделе Настройка фильтра получения для виртуального порта.
-
Очередь виртуальных машин (VMQ). Дополнительные сведения об использовании фильтров получения в этом интерфейсе см. в разделе Настройка и очистка фильтров VMQ.
Синтаксис
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 указывает очередь получения по умолчанию.
FilterId
Идентификатор фильтра получения. Идентификатор фильтра — это целое число от единицы до количества фильтров приема, поддерживаемых сетевым адаптером. Недопустимое значение, равное нулю.
FieldParametersArrayOffset
Смещение в байтах к первому элементу в массиве элементов, следующих за этой структурой. Смещение измеряется от начала структуры NDIS_RECEIVE_FILTER_PARAMETERS до начала первого элемента. Каждый элемент в массиве является NDIS_RECEIVE_FILTER_FIELD_PARAMETERS структурой.
FieldParametersArrayNumElements
Количество элементов в массиве.
FieldParametersArrayElementSize
Размер в байтах каждого элемента массива.
RequestedFilterIdBitCount
Количество битов в идентификаторе фильтра. Драйвер мини-порта использует это количество битов для идентификатора фильтра в данных внешнего канала NetBufferListFilteringInfo в NET_BUFFER_LIST структурах. Если этот элемент равен нулю, драйвер мини-порта не должен указывать идентификатор фильтра в данных OOB NetBufferListFilteringInfo .
Начиная с версии NDIS 6.20 этот элемент должен иметь нулевое значение.
MaxCoalescingDelay
Максимальное время (в миллисекундах) сохранения первого пакета, соответствующего этому фильтру получения, в буфере объединения оборудования сетевого адаптера.
Как только будет получен первый пакет, соответствующий фильтру, сетевой адаптер объединяет пакет. Адаптер также запускает аппаратный таймер, срок действия которого равен значению элемента MaxCoalescingDelay . Дополнительные пакеты, соответствующие одному и тому же фильтру, должны быть объединены адаптером без сброса и перезапуска аппаратного таймера.
По истечении срока действия аппаратного таймера адаптер должен создать прерывание приема, чтобы сообщить узлу об объединяемых пакетах, соответствующих фильтру приема.
VPortId
Идентификатор VPort, для которого необходимо настроить фильтр получения. Значение NDIS_DEFAULT_VPORT_ID указывает VPort по умолчанию, подключенный к физической функции (PF) PCI Express (PCIe) сетевого адаптера.
Комментарии
Структура 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) |