修改数据包合并接收筛选器

若要修改支持数据包合并的微型端口驱动程序上的接收筛选器,过度分配协议或筛选器驱动程序执行以下步骤:

  1. 若要获取已下载到微型端口驱动程序的所有数据包合并接收筛选器的列表,超载驱动程序会发出 OID_RECEIVE_FILTER_ENUM_FILTERS的 OID 方法请求。 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_RECEIVE_FILTER_INFO_ARRAY结构的指针。

    注意 当过度的驱动程序或应用程序初始化 NDIS_RECEIVE_FILTER_INFO_ARRAY 结构时,必须将 QueueId 成员设置为 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) 。

  2. 若要获取下载到微型端口驱动程序的特定数据包合并接收筛选器的参数,过度分配的驱动程序会发出 OID_RECEIVE_FILTER_PARAMETERS的 OID 方法请求。 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_RECEIVE_FILTER_PARAMETERS结构的指针。 过度分配的驱动程序或应用程序通过将 FilterId 成员设置为要返回其参数的筛选器的非零 ID 值来初始化NDIS_RECEIVE_FILTER_PARAMETERS结构。

    从 OID 方法请求成功返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向缓冲区的指针。 此缓冲区的格式设置为包含以下内容:

  3. 过度的驱动程序修改接收筛选器以添加、删除或更改筛选器的测试条件集。 驱动程序通过添加、删除或修改 NDIS_RECEIVE_FILTER_PARAMETERS 结构指定的字段参数数组中的单个 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 结构来执行此操作。

    当过度驱动程序完成对测试条件的修改时,它必须更新 NDIS_RECEIVE_FILTER_PARAMETERS 结构的成员,以反映对接收筛选器所做的更改。 例如,覆盖驱动程序必须更新 FieldParametersArrayNumElements 成员,以包含数组中新数量的元素。

    有关详细信息,请参阅 指定数据包合并接收筛选器

  4. 超载驱动程序发出 OID_RECEIVE_FILTER_SET_FILTER 的 OID 方法请求,以将修改后的接收筛选器下载到微型端口驱动程序。

    有关详细信息,请参阅 设置数据包合并接收筛选器