枚举虚拟端口上的接收筛选器

在网络适配器的 NIC 交换机上创建虚拟端口 (VPort) 后,过度使用驱动程序和用户应用程序可以执行以下操作:

有关如何创建 VPort 的详细信息,请参阅 创建虚拟端口

枚举接收筛选器

若要获取在 NIC 交换机 (VPort) 虚拟端口上设置的所有接收筛选器的列表,过度分配驱动程序和应用程序可以发出 OID_RECEIVE_FILTER_ENUM_FILTERS的 OID) 方法请求 (对象标识符。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员最初包含指向NDIS_RECEIVE_FILTER_INFO_ARRAY结构的指针。

在过度分配的驱动程序或用户应用程序发出此 OID 方法请求之前,它必须初始化 NDIS_RECEIVE_FILTER_INFO_ARRAY 结构,并按以下方式设置此结构的成员:

  • QueueId 成员必须设置为 NDIS_DEFAULT_RECEIVE_QUEUE_ID。

  • VPortId 成员必须设置为与 VPort 关联的标识符。 过度配置驱动程序通过以下方法之一获取 VPort 标识符:

    注意 仅当驱动程序或应用程序在 Flags 成员中设置NDIS_RECEIVE_FILTER_INFO_ARRAY_VPORT_ID_SPECIFIED标志时,此成员才有效。 如果未设置此标志,则返回在 NIC 交换机上每个 VPort 上设置的接收筛选器。

OID_RECEIVE_FILTER_ENUM_FILTERS 的 OID 方法请求成功返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向更新NDIS_RECEIVE_FILTER_INFO_ARRAY结构的指针,该结构后跟一个或多个NDIS_RECEIVE_FILTER_INFO结构。 每个 NDIS_RECEIVE_FILTER_INFO 结构指定在指定 VPort 上设置的接收筛选器的唯一标识符。

查询特定接收筛选器

过度分配驱动程序或应用程序可能会发出 OID_RECEIVE_FILTER_PARAMETERS 的 OID 方法请求,以获取 VPort 上特定筛选器的参数。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员最初包含指向NDIS_RECEIVE_FILTER_PARAMETERS结构的指针。

在过度分配的驱动程序或用户应用程序发出此 OID 方法请求之前,它必须初始化 NDIS_RECEIVE_FILTER_PARAMETERS 结构,并按以下方式设置此结构的成员:

  • FilterId 成员必须设置为要返回其参数的筛选器的非零标识符值。

    注意 过度分配驱动程序从较早的 OID 方法请求 OID_RECEIVE_FILTER_SET_FILTEROID_RECEIVE_FILTER_ENUM_FILTERS获取筛选器标识符。 应用程序只能从OID_RECEIVE_FILTER_ENUM_FILTERS的早期 OID 方法请求中获取筛选器标识符。

  • QueueId 成员必须设置为 NDIS_DEFAULT_RECEIVE_QUEUE_ID。

  • VPortId 成员必须设置为与 VPort 关联的标识符。 过度配置驱动程序通过以下方法之一获取 VPort 标识符:

NDIS 处理微型端口驱动程序 的OID_RECEIVE_FILTER_ENUM_FILTERSOID_RECEIVE_FILTER_PARAMETERS 方法 OID 请求。 NDIS 从它从 OID_RECEIVE_FILTER_SET_FILTER OID 请求接收的数据的内部缓存中获取信息。