TcAddFilter 函数 (traffic.h)

TcAddFilter 函数将新筛选器与现有流相关联,该流允许将与筛选器匹配的数据包定向到关联的流。

筛选器包括模式和掩码。 模式指定特定的参数值,而掩码指定哪些参数和参数子字段应用于给定筛选器。 将模式/掩码组合应用于一组数据包时,匹配的数据包将定向到相应筛选器所关联的流。

流量控制在 pFilterHandle 参数中向新添加的筛选器返回句柄,客户端可以通过该句柄引用添加的筛选器。 挂起的流(例如处理回调例程尚未完成的 TcAddFlowTcModifyFlow 请求的流)无法关联筛选器;只有已完成且稳定的流才能应用关联的筛选器。

筛选器和流之间的关系是多对一的。 可将多个筛选器应用于单个流;但是,筛选器只能应用于一个流。 例如,流 A 可以应用筛选器 X、Y 和 Z,但只要流 A 处于活动状态,筛选器 X、Y 和 Z 就不能应用于任何其他流。

语法

ULONG TcAddFilter(
  [in]  HANDLE         FlowHandle,
  [in]  PTC_GEN_FILTER pGenericFilter,
  [out] PHANDLE        pFilterHandle
);

参数

[in] FlowHandle

流的句柄,与之前对 TcAddFlow 函数的调用一样。

[in] pGenericFilter

指向要安装的筛选器说明的指针。

[out] pFilterHandle

指向流量控制返回筛选器句柄的缓冲区的指针。 客户端在后续调用中使用此筛选器句柄来引用添加的筛选器。

返回值

返回代码 说明
NO_ERROR
执行函数时未出错。
ERROR_INVALID_HANDLE
流句柄无效。
ERROR_INVALID_PARAMETER
参数无效。
ERROR_INVALID_ADDRESS_TYPE
提供的地址类型无效。
ERROR_DUPLICATE_FILTER
此接口上的流上存在相同的筛选器。
注意 在 Windows Vista 中,不会返回此代码。
 
ERROR_FILTER_CONFLICT
此接口上的流上存在冲突的筛选器。
注意 在 Windows Vista 中,不会返回此代码。
 
ERROR_NOT_ENOUGH_MEMORY
系统内存不足。
ERROR_NOT READY
正在安装、修改或删除流,并且未处于接受筛选器的状态。

注解

筛选器可以是不同类型的筛选器。 它们通常用于筛选属于不同网络层的数据包。 接口上安装的筛选器类型通常对应于与接口关联的网络层地址的地址类型。 应在筛选器结构中指定地址类型。

筛选器可能因各种原因而被拒绝,包括可能与请求的筛选器冲突,以及已与流关联的筛选器。 提供特定于流量控制的错误代码,以帮助用户诊断拒绝 TcAddFilter 函数背后的原因。

注意 使用 TcAddFilter 函数需要管理权限。
 
在 Windows Vista 中,可以创建重叠和相同的筛选器。 在这些情况下,更具体的筛选器优先。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 traffic.h
Library Traffic.lib
DLL Traffic.dll

另请参阅

TcAddFlow