getExtendedUdpTable 函数 (iphlpapi.h)

GetExtendedUdpTable 函数检索包含应用程序可用的 UDP 终结点列表的表。

语法

IPHLPAPI_DLL_LINKAGE DWORD GetExtendedUdpTable(
  [out]     PVOID           pUdpTable,
  [in, out] PDWORD          pdwSize,
  [in]      BOOL            bOrder,
  [in]      ULONG           ulAf,
  [in]      UDP_TABLE_CLASS TableClass,
  [in]      ULONG           Reserved
);

parameters

[out] pUdpTable

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

[in, out] pdwSize

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

[in] bOrder

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

对 UDP 终结点进行排序时,将比较下列值:

  1. 本地 IP 地址
  2. ulAf 参数设置为 AF_INET6) 时,本地范围 ID (适用
  3. 本地 UDP 端口

[in] ulAf

UDP 终结点使用的 IP 版本。

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

[in] TableClass

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

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

UDP_TABLE_CLASS 枚举值与 ulAf 参数的值相结合,以确定要检索的扩展 UDP 信息。

[in] Reserved

保留。 此值必须为零。

返回值

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

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

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

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

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

注解

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

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

TableClass pUdpTable 结构
UDP_TABLE_BASIC MIB_UDPTABLE
UDP_TABLE_OWNER_MODULE MIB_UDPTABLE_OWNER_MODULE
UDP_TABLE_OWNER_PID MIB_UDPTABLE_OWNER_PID
 

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

TableClass pUdpTable 结构
UDP_TABLE_BASIC MIB_UDP6TABLE
UDP_TABLE_OWNER_MODULE MIB_UDP6TABLE_OWNER_MODULE
UDP_TABLE_OWNER_PID MIB_UDP6TABLE_OWNER_PID
 

调用 时 getExtendedUdpTable 函数,将 ulAf 参数设置为 AF_INET6并且 TableClass 设置为 UDP_TABLE_BASIC 仅在 Windows Vista 及更高版本上受支持。

在 Service Pack 1 (SP1) 的 Windows Server 2003 和 Service Pack 2 (SP2) 的 Windows XP 上,调用的 GetExtendedUdpTable 函数 将 ulAf 参数设置为 AF_INET6TableClass 设置为 UDP_TABLE_BASIC 失败并返回 ERROR_NOT_SUPPORTED

在针对 Windows Vista 及更高版本发布的 Windows SDK 上,头文件的组织方式已更改。 各种 MIB_UDPTABLE 结构在 Udpmib.h 头文件中定义,而不是 在 Iprtrmib.h 头文件中定义。 请注意,Udpmib.h 头文件会自动包含在 Iphlpapi.h 头文件中。Iprtrmib.h 中会自动包含该头文件。 不应直接使用 Udpmib.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_UDP6TABLE

MIB_UDP6TABLE_OWNER_MODULE

MIB_UDP6TABLE_OWNER_PID

MIB_UDPTABLE

MIB_UDPTABLE_OWNER_MODULE

MIB_UDPTABLE_OWNER_PID

UDP_TABLE_CLASS