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 结构。 驱动程序将 标头 指定为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 和后看头数据以分隔共享内存段。

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

NDIS_RECEIVE_FILTER_DYNAMIC_PROCESSOR_AFFINITY_CHANGE_SUPPORTED

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

  • VMQ 接口中 VM 队列的处理器关联。 通过 OID_RECEIVE_FILTER_QUEUE_PARAMETERS的 OID 集请求更改处理器相关性。
  • 在 SR-IOV 接口中创建的非默认虚拟端口(VPort)的处理器关联,并附加到网络适配器的 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 队列或 VPorts 接收中断。
注意 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

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

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 (include 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