枚举 VMQ 上的筛选器

若要获取在接收队列上设置的所有筛选器的列表,过度分配驱动程序和应用程序可以使用 OID_RECEIVE_FILTER_ENUM_FILTERS 方法对象标识符 (OID) 请求。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员最初包含指向NDIS_RECEIVE_FILTER_INFO_ARRAY结构的指针。 当格式化 NDIS_RECEIVE_FILTER_INFO_ARRAY 结构时,过度的驱动程序或应用程序必须将 QueueId 成员设置为接收队列的标识符 (ID) 。 接收队列 ID 按以下方式获取:

  • 过度分配驱动程序从OID_RECEIVE_FILTER_ALLOCATE_QUEUE或OID_RECEIVE_FILTER_ENUM_QUEUES的早期 OID 方法请求中获取了接收队列 ID 值。 驱动程序还可以为默认接收队列指定 NDIS_DEFAULT_RECEIVE_QUEUE_ID

  • 应用程序从 OID_RECEIVE_FILTER_ENUM_QUEUES 的早期 OID 方法请求中获取了接收队列 ID 值。 应用程序还可以为默认接收队列指定 NDIS_DEFAULT_RECEIVE_QUEUE_ID

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

过度分配驱动程序或应用程序可以使用 OID_RECEIVE_FILTER_PARAMETERS OID 方法请求来获取接收队列上特定筛选器的参数。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员最初包含指向NDIS_RECEIVE_FILTER_PARAMETERS结构的指针。 过度的驱动程序或应用程序通过将 FilterId 成员设置为要返回其参数的筛选器的非零 ID 值来格式化NDIS_RECEIVE_FILTER_PARAMETERS结构。

注意过度分配驱动程序从OID_RECEIVE_FILTER_SET_FILTER或OID_RECEIVE_FILTER_ENUM_FILTERS的早期 OID 方法请求中获取了筛选器 ID。 应用程序只能从 OID_RECEIVE_FILTER_ENUM_FILTERS 的早期 OID 方法请求中获取筛选器 ID。

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