NDIS_RECEIVE_FILTER_CAPABILITIES 结构 (ntddndis.h)

NDIS_RECEIVE_FILTER_CAPABILITIES 结构指定网络适配器的接收筛选功能。

NDIS 接收筛选器用于以下 NDIS 接口:

语法

typedef struct _NDIS_RECEIVE_FILTER_CAPABILITIES {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG              EnabledFilterTypes;
  ULONG              EnabledQueueTypes;
  ULONG              NumQueues;
  ULONG              SupportedQueueProperties;
  ULONG              SupportedFilterTests;
  ULONG              SupportedHeaders;
  ULONG              SupportedMacHeaderFields;
  ULONG              MaxMacHeaderFilters;
  ULONG              MaxQueueGroups;
  ULONG              MaxQueuesPerQueueGroup;
  ULONG              MinLookaheadSplitSize;
  ULONG              MaxLookaheadSplitSize;
  ULONG              SupportedARPHeaderFields;
  ULONG              SupportedIPv4HeaderFields;
  ULONG              SupportedIPv6HeaderFields;
  ULONG              SupportedUdpHeaderFields;
  ULONG              MaxFieldTestsPerPacketCoalescingFilter;
  ULONG              MaxPacketCoalescingFilters;
  ULONG              NdisReserved;
} NDIS_RECEIVE_FILTER_CAPABILITIES, *PNDIS_RECEIVE_FILTER_CAPABILITIES;

成员

Header

NDIS_RECEIVE_FILTER_CAPABILITIES 结构的NDIS_OBJECT_HEADER结构。 驱动程序将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。

为了指示 NDIS_RECEIVE_FILTER_CAPABILITIES 结构的版本,驱动程序将 Revision 成员设置为以下值之一:

NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2

已添加
NDIS 6.30 及更高版本的各种成员。

驱动程序将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2。

NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_1

NDIS 6.20 的原始版本。

驱动程序将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_1。

Flags

标志的按位 OR。 此成员是为 NDIS 保留的。

EnabledFilterTypes

指定启用的接收筛选器类型的标志的按位 OR。 以下筛选器类型标志有效。

NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED

指定启用 VMQ 筛选器。

注意 如果微型端口驱动程序已启用以使用 SR-IOV 接口,微型端口驱动程序应设置此标志。
 

NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED

指定启用 NDIS 数据包合并接收筛选器。

EnabledQueueTypes

指定启用的接收队列类型的按位 OR 标志。 以下队列类型标志有效。

NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED

指定启用虚拟机 (VM) 队列。 启用微型端口驱动程序以使用 VMQ 接口时,将使用 VM 队列。

注意 如果微型端口驱动程序启用为仅使用 SR-IOV 接口,则微型端口驱动程序不得设置此标志。 有关如何启用这些接口的详细信息,请参阅 处理 SR-IOV、VMQ 和 RSS 标准化 INF 关键字
 

NumQueues

网络适配器支持的 VM 队列数。

注意 如果微型端口驱动程序已启用以使用 SR-IOV 接口,则必须将此成员设置为零。 启用 SR-IOV 接口时,NDIS 使用虚拟端口 (VPorts) 接收和传输队列,而不是 VM 队列。
 

SupportedQueueProperties

指定网络适配器支持的 VM 队列属性的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED

网络适配器使用 MSI-X 生成接收队列中断。 对于支持 VMQ 或 SR-IOV 接口的微型端口驱动程序,此标志是必需的。

NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED

网络适配器提供了支持 VM 队列数据包筛选的最低要求。

如果微型端口驱动程序已启用以使用 VMQ 或 SR-IOV 接口,则必须设置此标志。

有关 VM 队列数据包筛选的 VMQ 要求的详细信息,请参阅 设置和清除 VMQ 筛选器

有关 VM 队列数据包筛选的 SR-IOV 要求的详细信息,请参阅 在虚拟端口上设置接收筛选器

NDIS_RECEIVE_FILTER_LOOKAHEAD_SPLIT_SUPPORTED

网络适配器支持在视头偏移量拆分传入的接收数据包的 VM 队列。 此偏移量等于或大于请求的观察头大小。 网络适配器使用 DMA 传输 lookahead 和 post-lookahead 数据,以分隔共享内存段。

注意 从 NDIS 6.30 开始,不再支持将数据包数据拆分到单独的观察头缓冲区。 支持此版本的 NDIS 的微型端口驱动程序不得设置此标志。
 

NDIS_RECEIVE_FILTER_DYNAMIC_PROCESSOR_AFFINITY_CHANGE_SUPPORTED

网络适配器支持动态更改以下处理器相关性属性之一:

  • VMQ 接口中 VM 队列的处理器相关性。 处理器相关性通过 OID_RECEIVE_FILTER_QUEUE_PARAMETERS的 OID 集请求更改。
  • 非默认虚拟端口的处理器相关性 (VPort) ,它是在 SR-IOV 接口中创建的,附加到 PCI Express (PCIe) 物理功能 (网络适配器的 PF) 。 处理器相关性通过 OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 集请求更改。
注意 NDIS 6.30 及更高版本中支持此标志。 支持 VMQ 或 SR-IOV 接口的微型端口驱动程序必须设置此标志。
 

NDIS_RECEIVE_FILTER_INTERRUPT_VECTOR_COALESCING_SUPPORTED

网络适配器支持以下任一上接收的数据包的中断合并:

  • VMQ 接口中的多个 VM 队列。
  • 连接到 SR-IOV 接口中的 PF 的多个 VPort。
如果设置了此标志,则网络适配器必须为具有相同处理器相关性的 VM 队列或 VPort 合并接收中断。
注意 NDIS 6.30 及更高版本中支持此标志。 支持 VMQ 或 SR-IOV 接口的微型端口驱动程序必须设置此标志。
 

NDIS_RECEIVE_FILTER_IMPLAT_MIN_OF_QUEUES_MODE

指示可用的 VM 队列数是负载均衡故障转移 (LBFO) 团队的任何成员可用的最小队列数。 此标志仅适用于 LBFO 筛选器。 未为微型端口设置此标志。

NDIS_RECEIVE_FILTER_IMPLAT_SUM_OF_QUEUES_MODE

指示可用的 VM 队列数是 LBFO 团队的每个成员可用的所有队列的总和。 此标志仅适用于 LBFO 筛选器。 未为微型端口设置此标志。

NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE

网络适配器支持 NDIS 数据包合并。 仅在网络适配器的默认接收队列上支持数据包合并。 此接收队列的标识符为 NDIS_DEFAULT_RECEIVE_QUEUE_ID。

注意 NDIS 6.30 及更高版本中支持此标志。
 

SupportedFilterTests

指定微型端口驱动程序支持的测试操作的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED

网络适配器支持测试所选标头字段,以确定它是否等于给定值。

注意 如果微型端口驱动程序支持 VMQ 或 SR-IOV 接口,则必须设置此标志。
 

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

网络适配器支持屏蔽 (,即按位和) 所选标头字段,以确定结果是否等于指定值。

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED

网络适配器支持测试所选标头字段,以确定它是否不等于指定的值。

注意 NDIS 6.30 及更高版本中支持此标志。
 

SupportedHeaders

指定微型端口驱动程序可以检查的网络数据包标头类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED

网络适配器可以检查网络数据包 (MAC) 标头的媒体访问控制。 SupportedMacHeaderFields 成员定义 MAC 标头中可检查的各种字段。

NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED

网络适配器可以检查地址解析协议 (网络数据包的 ARP) 标头。 SupportedArpHeaderFields 成员定义 ARP 标头中可检查的各种字段。

注意 NDIS 6.30 及更高版本中支持此标志。
 

NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED

网络适配器可以检查 IP 版本 4 (IPv4) 网络数据包的标头。 SupportedIPv4HeaderFields 成员定义 IPv4 标头中可检查的各种字段。

注意 NDIS 6.30 及更高版本中支持此标志。
 

NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED

网络适配器可以检查 IP 版本 6 (IPv6) 网络数据包的标头。 SupportedIPv6HeaderFields 成员定义 IPv6 标头中可检查的各种字段。

注意 NDIS 6.30 及更高版本中支持此标志。
 

NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED

网络适配器可以检查网络数据包 (UDP) 标头的用户数据报协议。 SupportedIPv6HeaderFields 成员定义 UDP 标头中可检查的各种字段。

注意 NDIS 6.30 及更高版本中支持此标志。
 

SupportedMacHeaderFields

指定微型端口驱动程序可以检查的 MAC 标头字段类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED

网络适配器支持基于 MAC 标头中的目标 MAC 地址进行检查和筛选。

注意 从 NDIS 6.30 开始,支持 VMQ 或 SR-IOV 接口的微型端口驱动程序必须设置此标志。
 

NDIS_RECEIVE_FILTER_MAC_HEADER_SOURCE_ADDR_SUPPORTED

网络适配器支持基于 MAC 标头中的源 MAC 地址的检查和筛选。

NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED

网络适配器支持基于 MAC 标头中的 EtherType 标识符的检查和筛选。 例如,IPv4 数据包的 EtherType 标识符0x0800。

NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED

网络适配器支持基于 MAC 标头中的 VLAN 标识符的检查和筛选。

注意 从 NDIS 6.30 开始,此标志是可选的。 如果微型端口驱动程序未设置此标志,网络适配器应检查并筛选指定的 MAC 地址字段。 如果接收的数据包中存在 VLAN 标记,则网络适配器必须将其从数据包数据中删除。 微型端口驱动程序必须将 VLAN 标记放在 与数据包NET_BUFFER_LIST 结构关联的 NDIS_NET_BUFFER_LIST_8021Q_INFO 结构中。
 

NDIS_RECEIVE_FILTER_MAC_HEADER_PRIORITY_SUPPORTED

网络适配器支持基于 MAC 标头中的优先级标记的检查和筛选。

NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

网络适配器支持基于 802.3 MAC 标头中 IEEE 802.2 子网访问协议 (SNAP) 标头的数据包类型字段进行检查和筛选。

注意 NDIS 6.30 及更高版本中支持此标志。
 

MaxMacHeaderFilters

微型端口驱动程序支持的 MAC 标头筛选器的最大数目。

MaxQueueGroups

此成员是为 NDIS 保留的。

MaxQueuesPerQueueGroup

此成员是为 NDIS 保留的。

MinLookaheadSplitSize

网络适配器支持的查找头数据包缓冲区的最小大小(以字节为单位)。

注意 从 NDIS 6.30 开始,不再支持将数据包数据拆分到单独的观察头缓冲区。 支持此版本的 NDIS 的微型端口驱动程序必须将此成员设置为零。
 

MaxLookaheadSplitSize

网络适配器支持查找头数据包缓冲区的最大大小(以字节为单位)。

注意 从 NDIS 6.30 开始,不再支持将数据包数据拆分到单独的观察头缓冲区。 支持此版本的 NDIS 的微型端口驱动程序必须将此成员设置为零。
 

SupportedARPHeaderFields

指定微型端口驱动程序可以检查的 ARP 标头字段类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED

网络适配器支持对 ARP 操作字段进行接收筛选。

NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED

网络适配器支持对 ARP 源协议地址 (SPA) 字段进行接收筛选。

NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

网络适配器支持对 ARP 目标协议地址 (TPA) 字段进行接收筛选。

SupportedIPv4HeaderFields

指定微型端口驱动程序可以检查的 IPv4 标头字段类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

网络适配器支持对 IPv4 协议字段进行接收筛选。

SupportedIPv6HeaderFields

指定微型端口驱动程序可以检查的 IPv6 标头字段类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

网络适配器支持对 IPv6 协议字段进行接收筛选。

SupportedUdpHeaderFields

指定微型端口驱动程序可以检查的 IPv6 标头字段类型的按位 OR 标志。 定义了以下标志:

NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

网络适配器支持对 UDP 目标端口字段进行接收筛选。

注意 如果收到的 UDP 数据包包含 IPv4 选项或 IPv6 扩展标头,则网络适配器可以自动删除收到的数据包,并将其视为未通过 UDP 筛选器测试。
 

MaxFieldTestsPerPacketCoalescingFilter

可以为单个数据包合并筛选器指定的数据包标头字段的最大测试数。 有关数据包合并的详细信息,请参阅 NDIS 数据包合并

注意 支持数据包合并的网络适配器必须支持五个或五个以上的数据包标头字段,这些字段可为单个数据包合并筛选器指定。 如果适配器不支持数据包合并,微型端口驱动程序必须将此值设置为零。
 

MaxPacketCoalescingFilters

网络适配器支持的最大数据包合并接收筛选器数。

注意 支持数据包合并的网络适配器必须支持十个或多个数据包合并筛选器。 如果适配器不支持数据包合并,微型端口驱动程序必须将此值设置为零。
 

NdisReserved

保留。 设置为 0。

注解

NDIS_RECEIVE_FILTER_CAPABILITIES 结构用于 的 ReceiveFilterCapabilities 成员 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES NDIS_FILTER_ATTACH_PARAMETERS,NDIS_BIND_PARAMETERS 结构和 返回结果 OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES OID 查询。

仅当启用微型端口驱动程序以使用 VMQ 或 SR-IOV 接口时, NDIS_RECEIVE_FILTER_CAPABILITIES 结构的许多成员和标志设置才有效。 微型端口驱动程序可以通过标准化 INF 关键字使用这些接口。 有关详细信息,请参阅 处理 SR-IOV、VMQ 和 RSS 标准化 INF 关键字

要求

要求
最低受支持的客户端 在 NDIS 6.20 及更高版本中受支持。
标头 ntddndis.h (包括 Ndis.h)

另请参阅

NDIS_BIND_PARAMETERS

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

NDIS_RECEIVE_QUEUE_INFO

NDIS_RECEIVE_QUEUE_PARAMETERS

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES