getExtendedTcpTable 函数 (iphlpapi.h)

GetExtendedTcpTable 函数检索包含可用于应用程序的 TCP 终结点列表的表。

语法

IPHLPAPI_DLL_LINKAGE DWORD GetExtendedTcpTable(
  [out]     PVOID           pTcpTable,
  [in, out] PDWORD          pdwSize,
  [in]      BOOL            bOrder,
  [in]      ULONG           ulAf,
  [in]      TCP_TABLE_CLASS TableClass,
  [in]      ULONG           Reserved
);

参数

[out] pTcpTable

指向表结构的指针,该表结构包含可用于应用程序的筛选 TCP 终结点。 有关如何确定基于特定输入参数组合返回的表类型的信息,请参阅本文档后面的“备注”部分。

[in, out] pdwSize

pTcpTable 中返回的结构的估计大小(以字节为单位)。 如果此值设置得太小, 则此 函数返回ERROR_INSUFFICIENT_BUFFER,并且此字段将包含结构的正确大小。

[in] bOrder

一个 值,该值指定是否应对 TCP 连接表进行排序。 如果此参数设置为 TRUE,则表中的 TCP 终结点将按升序排序,从最低本地 IP 地址开始。 如果此参数设置为 FALSE,则表中的 TCP 终结点按检索顺序显示。

在对 TCP 终结点进行排序时,将 () 列出的 (比较以下值:

  1. 本地 IP 地址
  2. ulAf 参数设置为 AF_INET6) 时,本地范围 ID (适用
  3. 本地 TCP 端口
  4. 远程 IP 地址
  5. ulAf 参数设置为 AF_INET6) 时,远程范围 ID (适用
  6. 远程 TCP 端口

[in] ulAf

TCP 终结点使用的 IP 版本。

含义
AF_INET
使用 IPv4。
AF_INET6
使用 IPv6。

[in] TableClass

要检索的 TCP 表结构的类型。 此参数可以是 TCP_TABLE_CLASS 枚举中的值之一。

在为 Windows Vista 及更高版本发布的Windows SDK上,头文件的组织已更改,TCP_TABLE_CLASS枚举在 Iprtrmib.h 头文件中定义,而不是在 Iphlpapi.h 头文件中定义。

TCP_TABLE_CLASS 枚举值与 ulAf 参数的值组合在一起,以确定要检索的扩展 TCP 信息。

[in] Reserved

保留。 此值必须为零。

返回值

如果调用成功,则返回 值 NO_ERROR

如果函数失败,则返回值为以下错误代码之一。

返回代码 说明
ERROR_INSUFFICIENT_BUFFER
为表分配的空间不足。 表的大小在 pdwSize 参数中返回,并且必须在后续调用此函数时使用,以便成功检索表。

如果 pTcpTable 参数为 NULL,也会返回此错误。

ERROR_INVALID_PARAMETER
向该函数传递了无效参数。 如果 TableClass 参数包含未在 TCP_TABLE_CLASS 枚举中定义的值,则返回此错误。

注解

此函数返回的表类型取决于 ulAf 参数和 TableClass 参数的特定组合。

ulAf 参数设置为 AF_INET 时,下表指示每个可能的 TableClass 值的 pTcpTable 参数指向的结构中要检索的 TCP 表类型。

TableClass pTcpTable 结构
TCP_TABLE_BASIC_ALL MIB_TCPTABLE
TCP_TABLE_BASIC_CONNECTIONS MIB_TCPTABLE
TCP_TABLE_BASIC_LISTENER MIB_TCPTABLE
TCP_TABLE_OWNER_MODULE_ALL MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_CONNECTIONS MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_LISTENER MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_PID_ALL MIB_TCPTABLE_OWNER_PID
TCP_TABLE_OWNER_PID_CONNECTIONS MIB_TCPTABLE_OWNER_PID
TCP_TABLE_OWNER_PID_LISTENER MIB_TCPTABLE_OWNER_PID
 

ulAf 参数设置为 AF_INET6 时,下表指示每个可能的 TableClass 值的 pTcpTable 参数指向的结构中要检索的 TCP 表类型。

TableClass pTcpTable 结构
TCP_TABLE_OWNER_MODULE_ALL MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_CONNECTIONS MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_LISTENER MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_PID_ALL MIB_TCP6TABLE_OWNER_PID
TCP_TABLE_OWNER_PID_CONNECTIONS MIB_TCP6TABLE_OWNER_PID
TCP_TABLE_OWNER_PID_LISTENER MIB_TCP6TABLE_OWNER_PID
 

不支持将 ulAf 参数设置为 AF_INET6TableClass 设置为 TCP_TABLE_BASIC_LISTENERTCP_TABLE_BASIC_CONNECTIONSTCP_TABLE_BASIC_ALL 调用的 GetExtendedTcpTable 函数,并返回ERROR_NOT_SUPPORTED

在为 Windows Vista 及更高版本发布的Windows SDK上,头文件的组织已更改。 各种 MIB_TCPTABLE 结构在 Tcpmib.h 头文件中定义,而不是 在 Iprtrmib.h 头文件中定义。 请注意, Tcpmib.h 头文件自动包含在 Iprtrmib.h 中,它自动包含在 Iphlpapi.h 头文件中。 不应直接使用 Tcpmib.hIprtrmib.h 头文件。

要求

要求
最低受支持的客户端 Windows Vista、Windows XP SP2 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008、Windows Server 2003 SP1 [桌面应用 |UWP 应用]
目标平台 Windows
标头 iphlpapi.h
Library Iphlpapi.lib
DLL Iphlpapi.dll

另请参阅

MIB_TCP6TABLE

MIB_TCP6TABLE_OWNER_MODULE

MIB_TCP6TABLE_OWNER_PID

MIB_TCPTABLE

MIB_TCPTABLE_OWNER_MODULE

MIB_TCPTABLE_OWNER_PID

TCP_TABLE_CLASS