структура NDIS_RECEIVE_FILTER_FIELD_PARAMETERS (ntddndis.h)
Структура NDIS_RECEIVE_FILTER_FIELD_PARAMETERS определяет критерий проверки фильтра для поля в заголовке сетевого пакета.
Фильтры получения NDIS используются в следующих интерфейсах NDIS:
-
Объединение пакетов NDIS. Дополнительные сведения об использовании фильтров получения в этом интерфейсе см. в разделе Управление фильтрами получения объединения пакетов.
-
Виртуализация одно корневых операций ввода-вывода (SR-IOV). Дополнительные сведения об использовании фильтров получения в этом интерфейсе см. в разделе Настройка фильтра получения для виртуального порта.
-
Очередь виртуальных машин (VMQ). Дополнительные сведения об использовании фильтров получения в этом интерфейсе см. в разделе Настройка и очистка фильтров VMQ.
Синтаксис
typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_FRAME_HEADER FrameHeader;
NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
union {
NDIS_MAC_HEADER_FIELD MacHeaderField;
NDIS_ARP_HEADER_FIELD ArpHeaderField;
NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
NDIS_UDP_HEADER_FIELD UdpHeaderField;
} HeaderField;
_HEADER_FIELD _HEADER_FIELD;
union {
UCHAR FieldByteValue;
USHORT FieldShortValue;
ULONG FieldLongValue;
ULONG64 FieldLong64Value;
UCHAR FieldByteArrayValue[16];
} FieldValue;
_FIELD_VALUE _FIELD_VALUE;
union {
UCHAR ResultByteValue;
USHORT ResultShortValue;
ULONG ResultLongValue;
ULONG64 ResultLong64Value;
UCHAR ResultByteArrayValue[16];
} ResultValue;
_RESULT_VALUE _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
Члены
Header
Структура NDIS_OBJECT_HEADER для структуры NDIS_RECEIVE_FILTER_FIELD_PARAMETERS . Драйвер задает элемент Type структуры, указанной в заголовке , для NDIS_OBJECT_TYPE_DEFAULT.
Чтобы указать версию структуры NDIS_RECEIVE_FILTER_FIELD_PARAMETERS , драйвер задает для члена Revision одно из следующих значений:
Flags
Побитовое ИЛИ флагов. Следующие флаги допустимы для OID_RECEIVE_FILTER_SET_FILTER OID.
Значение | Значение |
---|---|
|
Если этот флаг установлен, сетевой адаптер должен указывать только полученные пакеты, которые соответствуют следующим критериям:
Примечание Если драйвер overlying задает фильтр MAC-адресов и фильтр идентификатора виртуальной локальной сети с запросом OID OID_RECEIVE_FILTER_SET_FILTER, он не устанавливает этот флаг ни в том из полей фильтра. В этом случае драйвер мини-порта должен указывать пакеты, соответствующие как указанному MAC-адресу, так и идентификатору виртуальной локальной сети. То есть драйвер мини-порта не должен указывать пакеты с соответствующим MAC-адресом, которые имеют нулевой идентификатор виртуальной локальной сети или являются пакетами без меток.
|
FrameHeader
Тип заголовка в кадре сетевых данных.
ReceiveFilterTest
Тип теста, выполняемого для фильтра получения.
HeaderField
Тип поля в заголовке. Тип поля (например, NDIS_MAC_HEADER_FIELD) соответствует типу заголовка, указанному в элементе FrameHeader .
Это объединение содержит следующие элементы:
HeaderField.MacHeaderField
Тип поля в заголовке MAC.
HeaderField.ArpHeaderField
Тип поля в заголовке ARP.
HeaderField.IPv4HeaderField
Значение перечисления NDIS_IPV4_HEADER_FIELD , указывающее тип поля в заголовке IP версии 4 (IPv4).
HeaderField.IPv6HeaderField
Значение перечисления NDIS_IPV6_HEADER_FIELD , указывающее тип поля в заголовке IP-адреса версии 6 (IPv6).
HeaderField.UdpHeaderField
Тип поля в заголовке UDP.
_HEADER_FIELD
FieldValue
Значение, которое адаптер мини-порта сравнивает со значением соответствующего поля заголовка во входящих пакетах. Расположение значения поля заголовка определяется типом поля, указанным в элементе HeaderField .
Дополнительные сведения см. в разделе «Примечания».
Это объединение содержит следующие элементы:
FieldValue.FieldByteValue
Значение UCHAR для сравнения с полем в сетевом пакете.
FieldValue.FieldShortValue
Значение USHORT для сравнения с полем в сетевом пакете.
FieldValue.FieldLongValue
Значение ULONG для сравнения с полем в сетевом пакете.
FieldValue.FieldLong64Value
Значение ULONG64 для сравнения с полем в сетевом пакете.
FieldValue.FieldByteArrayValue[16]
Массив UCHAR для сравнения с полем в сетевом пакете.
_FIELD_VALUE
ResultValue
Объединение, содержащее значение результата теста.
Если для элемента ReceiveFilterTest задано значение NdisReceiveFilterTestMaskEqual, сетевой адаптер сначала вычисляет результат на основе значения в элементе FieldValue и значения поля заголовка, как указано в элементе HeaderField . Затем адаптер сравнивает вычисляемый результат с ResultValue.
Дополнительные сведения см. в разделе «Примечания».
Это объединение содержит следующие элементы:
ResultValue.ResultByteValue
Значение UCHAR для сравнения с результатом теста.
ResultValue.ResultShortValue
Значение USHORT для сравнения с результатом теста.
ResultValue.ResultLongValue
Значение ULONG для сравнения с результатом теста.
ResultValue.ResultLong64Value
Значение ULONG64 для сравнения с результатом теста.
ResultValue.ResultByteArrayValue[16]
Массив UCHAR для сравнения с результатом теста.
_RESULT_VALUE
Комментарии
Структура NDIS_RECEIVE_FILTER_FIELD_PARAMETERS определяет критерий проверки фильтра для одного поля в возможном массиве тестов полей, который можно указать с помощью NDIS_RECEIVE_FILTER_PARAMETERS структура.
В следующей таблице описывается, как сетевой адаптер использует элементы ReceiveFilterTest, FieldValue и ResultValue для выполнения проверки фильтра по указанному значению поля заголовка полученного пакета.
Значение ReceiveFilterTest | Проверка фильтра, выполняемая сетевым адаптером |
---|---|
NdisReceiveFilterTestEqual | (<значение поля заголовка> == FieldValue) |
NdisReceiveFilterTestMaskEqual | ((<значение поля заголовка> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | (<значение поля заголовка> != FieldValue) |
- Для NDIS 6.20 драйвер мини-порта должен вернуть состояние сбоя для запроса OID OID_RECEIVE_FILTER_SET_FILTER.
-
Начиная с NDIS 6.30, если флаг NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO не задан и фильтр идентификаторов виртуальной локальной сети не настроен запросом метода OID_RECEIVE_FILTER_SET_FILTER , драйвер мини-порта должен выполнить одно из следующих действий:
- Драйвер мини-порта должен возвращать состояние сбоя для запроса метода OID_RECEIVE_FILTER_SET_FILTER .
- Драйвер мини-порта должен настроить сетевой адаптер для проверки и фильтрации указанных полей MAC-адресов. Если тег виртуальной ЛС присутствует в полученном пакете, сетевой адаптер должен удалить его из данных пакета. Драйвер мини-порта должен поместить тег виртуальной локальной сети в NDIS_NET_BUFFER_LIST_8021Q_INFO , связанный со структурой NET_BUFFER_LIST пакета.
-
Драйвер мини-порта должен настроить сетевой адаптер для проверки и фильтрации указанных полей MAC-адреса и идентификатора виртуальной локальной сети.
Если тег виртуальной ЛС присутствует в полученном пакете, сетевой адаптер должен удалить его из данных пакета. Драйвер мини-порта должен поместить тег виртуальной локальной сети в NDIS_NET_BUFFER_LIST_8021Q_INFO , связанный со структурой NET_BUFFER_LIST пакета.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.20 и более поздних версиях. |
Верхняя часть | ntddndis.h (включая Ndis.h) |
См. также раздел
NDIS_RECEIVE_FILTER_PARAMETERSОбратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по