NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 结构 (ntddndis.h)
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 结构指定网络数据包标头中字段的筛选器测试条件。
NDIS 接收筛选器用于以下 NDIS 接口:
-
NDIS 数据包合并。 有关如何在此接口中使用接收筛选器的详细信息,请参阅 管理数据包合并接收筛选器。
-
单根 I/O 虚拟化 (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_RECEIVE_FILTER_FIELD_PARAMETERS 结构的NDIS_OBJECT_HEADER结构。 驱动程序将 Header 指定的结构的 Type 成员设置为NDIS_OBJECT_TYPE_DEFAULT。
为了指示 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 结构的版本,驱动程序将 Revision 成员设置为以下值之一:
Flags
标志的按位 OR。 以下标志对 OID_RECEIVE_FILTER_SET_FILTER 老。
值 | 含义 |
---|---|
|
如果设置了此标志,则网络适配器必须仅指示通过以下条件的已接收数据包:
注意 如果覆盖驱动程序设置了 MAC 地址筛选器和 VLAN 标识符筛选器,且 OID 请求 为 OID_RECEIVE_FILTER_SET_FILTER,则不会在任一筛选器字段中设置此标志。 在这种情况下,微型端口驱动程序应指示与指定的 MAC 地址和 VLAN 标识符匹配的数据包。 也就是说,微型端口驱动程序不应指示具有匹配 MAC 地址的数据包,这些数据包具有零 VLAN 标识符或未标记的数据包。
|
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_RECEIVE_FILTER_SET_FILTER 的 OID 请求返回失败状态。
-
从 NDIS 6.30 开始,如果未设置 NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO 标志,并且 OID_RECEIVE_FILTER_SET_FILTER 方法请求未配置 VLAN 标识符筛选器,则微型端口驱动程序必须执行以下操作之一:
- 微型端口驱动程序必须返回 OID_RECEIVE_FILTER_SET_FILTER 方法请求的失败状态。
- 微型端口驱动程序必须将网络适配器配置为检查和筛选指定的 MAC 地址字段。 如果收到的数据包中存在 VLAN 标记,则网络适配器必须将其从数据包数据中删除。 微型端口驱动程序必须将 VLAN 标记放在与数据包 NET_BUFFER_LIST 结构关联的 NDIS_NET_BUFFER_LIST_8021Q_INFO 中。
-
微型端口驱动程序必须将网络适配器配置为检查和筛选指定的 MAC 地址和 VLAN 标识符字段。
如果收到的数据包中存在 VLAN 标记,则网络适配器必须将其从数据包数据中删除。 微型端口驱动程序必须将 VLAN 标记放在与数据包 NET_BUFFER_LIST 结构关联的 NDIS_NET_BUFFER_LIST_8021Q_INFO 中。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.20 及更高版本中受支持。 |
标头 | ntddndis.h (包括 Ndis.h) |
另请参阅
NDIS_RECEIVE_FILTER_PARAMETERS反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈