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

返回值

返回代码 说明
NO_ERROR
执行函数时未出错。
ERROR_INVALID_HANDLE
接口句柄无效。
ERROR_INVALID_PARAMETER
其中一个指针为 NULL,或者 pFlowCountpBufSize 设置为零。
ERROR_INSUFFICIENT_BUFFER
缓冲区太小,甚至无法存储单个流的信息和附加的筛选器。
ERROR_NOT_ENOUGH_MEMORY
系统内存不足。
ERROR_INVALID_DATA
枚举令牌不再有效。

注解

请勿请求零流,或将大小等于零的缓冲区或指针传递给 NULL

如果由于删除流) 而导致流量控制 (使枚举令牌指针失效,则不允许继续枚举流,并且调用将返回ERROR_INVALID_DATA。 在这种情况下,枚举过程必须从头开始。 在枚举正在进行时删除要枚举的下一个流时,可能会出现这种情况。

若要获取给定接口的流总数,请调用 TcQueryInterface 并指定 GUID_QOS_FLOW_COUNT

注意 使用 TcEnumerateFlows 函数需要管理权限。
 

要求

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

另请参阅

TcOpenInterface

TcQueryInterface