枚举虚拟端口上的接收筛选器
在网络适配器的 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 标识符:
从以前的 OID 方法请求 OID_NIC_SWITCH_CREATE_VPORT。
从以前的 OID 方法请求 OID_NIC_SWITCH_ENUM_VPORTS。
注意 仅当驱动程序或应用程序在 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_FILTER 或 OID_RECEIVE_FILTER_ENUM_FILTERS获取筛选器标识符。 应用程序只能从OID_RECEIVE_FILTER_ENUM_FILTERS的早期 OID 方法请求中获取筛选器标识符。
QueueId 成员必须设置为 NDIS_DEFAULT_RECEIVE_QUEUE_ID。
VPortId 成员必须设置为与 VPort 关联的标识符。 过度配置驱动程序通过以下方法之一获取 VPort 标识符:
从以前的 OID 方法请求 OID_NIC_SWITCH_CREATE_VPORT。
从以前的 OID 方法请求 OID_NIC_SWITCH_ENUM_VPORTS。
NDIS 处理微型端口驱动程序 的OID_RECEIVE_FILTER_ENUM_FILTERS 和 OID_RECEIVE_FILTER_PARAMETERS 方法 OID 请求。 NDIS 从它从 OID_RECEIVE_FILTER_SET_FILTER OID 请求接收的数据的内部缓存中获取信息。