NDIS_RECEIVE_FILTER_CAPABILITIES 结构指定网络适配器的接收筛选功能。
NDIS 接收筛选器用于以下 NDIS 接口:
-
NDIS 数据包合并。 有关如何在此接口中使用接收筛选器的详细信息,请参阅 管理数据包合并接收筛选器。
-
单根 I/O 虚拟化(SR-IOV)。 有关如何在此接口中使用接收筛选器的详细信息,请参阅 在虚拟端口上设置接收筛选器。
-
虚拟机队列(VMQ)。 有关如何在此接口中使用接收筛选器的详细信息,请参阅 设置和清除 VMQ 筛选器。
语法
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 筛选器。
NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED
指定已启用 NDIS 数据包合并接收筛选器。
EnabledQueueTypes
指定启用的接收队列类型的按位 OR 标志。 以下队列类型标志有效。
NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED
指定已启用虚拟机(VM)队列。 启用微型端口驱动程序以使用 VMQ 接口时,将使用 VM 队列。
NumQueues
网络适配器支持的 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_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_RECEIVE_FILTER_INTERRUPT_VECTOR_COALESCING_SUPPORTED
网络适配器支持以下任一项上接收数据包的中断合并:
- VMQ 接口中的多个 VM 队列。
- 附加到 SR-IOV 接口中的 PF 的多个 VPort。
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。
SupportedFilterTests
指定微型端口驱动程序支持的测试作的按位 OR 标志。 定义了以下标志:
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
网络适配器支持测试所选标头字段,以确定它是否等于给定值。
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED
网络适配器支持所选标头字段的掩码(即按位 AND),以确定结果是否等于指定值。
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED
网络适配器支持测试所选标头字段,以确定它是否不等于指定的值。
SupportedHeaders
指定微型端口驱动程序可以检查的网络数据包标头类型的按位 OR 标志。 定义了以下标志:
NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED
网络适配器可以检查网络数据包的媒体访问控制 (MAC) 标头。 SupportedMacHeaderFields 成员定义可以检查的 MAC 标头中的各种字段。
NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED
网络适配器可以检查网络数据包的地址解析协议 (ARP) 标头。 SupportedArpHeaderFields 成员定义 ARP 标头中可以检查的各种字段。
NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED
网络适配器可以检查网络数据包的 IP 版本 4 (IPv4) 标头。 SupportedIPv4HeaderFields 成员定义可以检查的 IPv4 标头中的各种字段。
NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED
网络适配器可以检查网络数据包的 IP 版本 6 (IPv6) 标头。 SupportedIPv6HeaderFields 成员定义可以检查的 IPv6 标头中的各种字段。
NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED
网络适配器可以检查网络数据包的用户数据报协议 (UDP) 标头。 SupportedIPv6HeaderFields 成员定义 UDP 标头中可以检查的各种字段。
SupportedMacHeaderFields
指定微型端口驱动程序可以检查的 MAC 标头字段类型的按位 OR 标志。 定义了以下标志:
NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED
网络适配器支持检查和筛选基于 MAC 标头中目标 MAC 地址的筛选。
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_RECEIVE_FILTER_MAC_HEADER_PRIORITY_SUPPORTED
网络适配器支持检查和筛选,这些检查和筛选基于 MAC 标头中的优先级标记。
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED
网络适配器支持检查和筛选,这些字段基于 802.3 MAC 标头中 IEEE 802.2 子网访问协议 (SNAP) 标头的数据包类型字段。
MaxMacHeaderFilters
微型端口驱动程序支持的最大 MAC 标头筛选器数。
MaxQueueGroups
此成员保留为 NDIS。
MaxQueuesPerQueueGroup
此成员保留为 NDIS。
MinLookaheadSplitSize
网络适配器支持查找头数据包缓冲区的最小大小(以字节为单位)。
MaxLookaheadSplitSize
网络适配器支持查找头数据包缓冲区的最大大小(以字节为单位)。
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 目标端口字段上的接收筛选。
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) |