tcAddFlow 函数 (traffic.h)
TcAddFlow 函数在指定的接口上添加新流。 请注意,成功添加流并不一定表示处理流量的方式发生了变化;通过使用 TcAddFilter 函数将筛选器附加到添加的流,可影响流量处理更改。
已注册 AddFlowComplete 处理程序的流量控制客户端 (允许流量控制调用 ClAddFlowComplete 回调函数的机制,以便提醒客户端已完成的流添加,) 预期返回值为 ERROR_SIGNAL_PENDING。 有关详细信息,请参阅 流量控制对象。
语法
ULONG TcAddFlow(
[in] HANDLE IfcHandle,
[in] HANDLE ClFlowCtx,
[in] ULONG Flags,
[in] PTC_GEN_FLOW pGenericFlow,
[out] PHANDLE pFlowHandle
);
参数
[in] IfcHandle
与要添加流的接口关联的句柄。 此句柄是通过以前对 TcOpenInterface 函数的调用获取的。
[in] ClFlowCtx
客户端提供的流上下文句柄。 随后在引用添加的流时由流量控制使用。
[in] Flags
保留供将来使用。 必须设置为零。
[in] pGenericFlow
指向所安装流说明的指针。
[out] pFlowHandle
指向流量控制将返回流句柄的位置的指针。 应在后续调用流量控制时使用此流句柄来引用已安装的流。
返回值
添加流的请求可能被拒绝的原因有很多。 提供调用 TcAddFlow 时流量控制返回的错误代码,以帮助确定拒绝的原因。
返回代码 | 说明 |
---|---|
|
执行函数时未出错。 |
|
函数正在异步执行;添加流或进程完成后,将通过客户端公开的 ClAddFlowComplete 函数回调客户端。 |
|
接口句柄无效。 |
|
系统内存不足。 |
|
参数无效。 |
|
提供了未指定或错误的 INTSERV 服务类型。 |
|
提供了未指定或错误的 TOKENRATE 值。 |
|
PEAKBANDWIDTH 值无效。 |
|
SHAPEDISCARDMODE 无效。 |
|
优先级值无效。 |
|
流量类值无效。 |
|
没有足够的资源来容纳请求的流。 |
|
为 TC 对象指定的长度不正确。 |
|
适用于 Diffserv 流。 指示使用无效参数传递 QOS_DIFFSERV 对象。 |
|
适用于 Diffserv 流。 指示TC_GEN_FLOW中指定的 QOS_DIFFSERV_RULE 已应用于接口上的现有流。 |
|
QOS_SHAPING_RATE 对象是使用无效的 ShapingRate 成员传递的。 |
|
QOS_DS_CLASS无效。 |
|
网线未插入适配器。 |
注解
如果 TcAddFlow 函数返回ERROR_SIGNAL_PENDING,则将在与调用 TcAddFlow 函数的线程不同的线程上调用 ClAddFlowComplete 函数。
只有添加筛选器会影响流量控制。 但是,添加流将导致在流量控制组件中提交资源。 这样,流量控制就可以为处理添加的流上的流量做好准备。
流量控制可能会出于各种原因删除流,包括由于带宽限制而无法容纳流,以及调整的策略要求。 客户端通过 ClNotifyHandler 回调函数收到已删除流的通知,其中包含 TC_NOTIFY_FLOW_CLOSE 事件。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | traffic.h |
Library | Traffic.lib |
DLL | Traffic.dll |