TcEnumerateFlows 函数 (traffic.h)
TcEnumerateFlows 函数枚举接口上已安装的流及其关联的筛选器。
返回流枚举的过程通常包括对 TcEnumerateFlows 函数的 多次调用。 从 TcEnumerateFlows 接收流信息的过程可以与在多个位置中阅读一本书进行比较,其中一次读取一定数量的页,书签放置在阅读停止的位置,在书签处继续阅读,并一直持续到书籍完成。
TcEnumerateFlows 函数使用缓冲区可以容纳的流枚举填充 Buffer 参数,然后在 pEnumToken 参数中返回一个句柄,该句柄在内部将枚举停止的位置添加书签。 随后对 TcEnumerateFlows 的 调用必须传递返回的 pEnumToken 值,以指示流量控制在何处恢复流枚举信息。 枚举所有流后, pEnumToken 将为 NULL。
语法
ULONG TcEnumerateFlows(
[in] HANDLE IfcHandle,
[in, out] PHANDLE pEnumHandle,
[in, out] PULONG pFlowCount,
[in, out] PULONG pBufSize,
[out] PENUMERATION_BUFFER Buffer
);
参数
[in] IfcHandle
与要枚举流的接口关联的句柄。 此句柄是通过以前调用 TcOpenInterface 函数获取的。
[in, out] pEnumHandle
指向枚举令牌的指针,流量控制在内部用于维护返回的流信息状态。
对于 对 TcEnumerateFlows 的初始调用的输入,应将 pEnumToken 设置为 NULL。 对于后续调用的输入,pEnumToken 必须是从对 TcEnumerateFlows 的直接调用中作为 pEnumToken OUT 参数返回的值。
对于输出, pEnumToken 是刷新的枚举令牌,必须在对 TcEnumerateFlows 的以下调用中使用。
[in, out] pFlowCount
指向请求或返回的流数的指针。 对于输入,此参数指定请求的流数,也可以将其设置为 0xFFFF 以请求所有流。 对于输出, pFlowCount 返回 缓冲区中实际返回的流数。
[in, out] pBufSize
指向客户端提供的缓冲区大小或流量控制使用的字节数的指针。 对于输入,指向 缓冲区的大小(以字节为单位)。 对于输出,指向实际缓冲区空间量,以字节为单位,写入或需要流枚举。
[out] Buffer
指向包含流枚举的缓冲区的指针。 有关流枚举的详细信息 ,请参阅ENUMERATION_BUFFER 。
返回值
返回代码 | 说明 |
---|---|
|
执行函数时未出错。 |
|
接口句柄无效。 |
|
其中一个指针为 NULL,或者 pFlowCount 或 pBufSize 设置为零。 |
|
缓冲区太小,甚至无法存储单个流的信息和附加的筛选器。 |
|
系统内存不足。 |
|
枚举令牌不再有效。 |
注解
请勿请求零流,或将大小等于零的缓冲区或指针传递给 NULL。
如果由于删除流) 而导致流量控制 (使枚举令牌指针失效,则不允许继续枚举流,并且调用将返回ERROR_INVALID_DATA。 在这种情况下,枚举过程必须从头开始。 在枚举正在进行时删除要枚举的下一个流时,可能会出现这种情况。
若要获取给定接口的流总数,请调用 TcQueryInterface 并指定 GUID_QOS_FLOW_COUNT。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | traffic.h |
Library | Traffic.lib |
DLL | Traffic.dll |