自学内容网 自学内容网

WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析五

上一篇:WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析四
如果有错误欢迎指正批评,在此只作为科普和参考。

文章目录

GetOwnerModuleFromPidAndInfo:检索与特定进程 ID (PID) 和网络信息关联的模块的所有者信息

//
// Because this function isn't marked with WINAPI, it is not marked with
// IPHLPAPI_DLL_LINKAGE in order to prevent build breaks with managed projects.
//
DWORD
GetOwnerModuleFromPidAndInfo(
    _In_                     ULONG                         ulPid,
    _In_                     ULONGLONG                     *pInfo,
    _In_                     TCPIP_OWNER_MODULE_INFO_CLASS Class,
    _Out_writes_bytes_(*pdwSize)   PVOID                         pBuffer,
    _Inout_                  PDWORD                        pdwSize
    );

函数 GetOwnerModuleFromPidAndInfo 是 Windows IP Helper API 的一部分,用于检索与特定进程 ID (PID) 和网络信息关联的模块的所有者信息。这个函数可以帮助确定哪个进程或模块拥有特定的网络端点(例如 TCP 或 UDP 连接)。

下面是该函数的参数说明:

  • ulPid:一个 ULONG 类型的值,指定了要查询的进程的进程 ID (PID)。

  • pInfo:一个指向 ULONGLONG 类型的指针,该值包含了额外的网络端点信息,如连接 ID 或其他标识符,这取决于 Class 参数指定的信息类别。

  • Class:一个 TCPIP_OWNER_MODULE_INFO_CLASS 枚举值,指定了要检索的模块信息的类别。这个枚举可以有不同的值,例如 TcpipOwnerModuleInfoBasicTcpipOwnerModuleInfoEx,这取决于需要的信息级别。

  • pBuffer:一个指向缓冲区的指针,该缓冲区用于接收关于模块的所有者信息。根据 Class 参数的值,这个缓冲区可能包含不同类型的结构。

  • pdwSize:一个指向 DWORD 的指针,该 DWORD 在函数调用前指定了 pBuffer 缓冲区的大小。在函数返回时,它指定了写入 pBuffer 的数据的大小。

函数返回一个 DWORD 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

请注意,这个函数没有被标记为 WINAPI,这意味着它不是以标准 Windows 函数的方式导出的,因此没有 IPHLPAPI_DLL_LINKAGE 宏。这样做是为了防止与托管项目(如 C# 或其他 .NET 语言编写的项目)的构建中断。

这个函数的使用场景包括但不限于网络安全监控、网络连接分析、或者在需要确定特定网络活动的所有者时调用。通过这个函数,开发者可以获取到哪个进程或模块负责特定的网络端点,这对于网络管理和调试是非常有用的信息。

GetIpStatistics:检索当前 IP 协议的统计信息

//
//                                                                          //
// Gets IP/ICMP/TCP/UDP Statistics                                          //
//                                                                          //
//

#if (NTDDI_VERSION >= NTDDI_WIN2K)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetIpStatistics(
    _Out_ PMIB_IPSTATS Statistics
    );
#endif

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

函数 GetIpStatistics 是 Windows IP Helper API 的一部分,它用于检索当前 IP 协议的统计信息,包括 IPv4 和 IPv6 的统计数据。这个函数可以为网络管理工具和网络监控应用程序提供网络层面的关键性能指标。

下面是该函数的参数说明:

  • Statistics:一个指向 MIB_IPSTATS 结构的指针,该结构在函数成功返回时将被填充为当前 IP 协议的统计信息。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_IPSTATS 结构体包含了广泛的 IP 协议统计数据

包括但不限于:

  • dwForwarding:指示是否启用了 IP 转发。
  • dwDefaultTTL:IP 包的默认生存时间(Time To Live,TTL)。
  • dwInReceives:接收到的 IP 包总数。
  • dwInHdrErrors:由于头部错误而被丢弃的 IP 包数。
  • dwInAddrErrors:由于地址错误而被丢弃的 IP 包数。
  • dwForwDatagrams:成功转发的 IP 数据报数。
  • dwInUnknownProtos:由于未知协议而被丢弃的 IP 数据报数。
  • dwInDiscards:由于各种非头部错误而被丢弃的 IP 包数。
  • dwInDelivers:成功交付给上层协议的 IP 包数。
  • dwOutRequests:发送的 IP 数据报数。
  • dwRoutingDiscards:由于路由表问题而被丢弃的 IP 数据报数。
  • dwDiscards:由于各种错误而被丢弃的 IP 包数。
  • dwOutDiscards:由于各种错误而被发送方丢弃的 IP 包数。
  • dwOutNoRoutes:由于找不到路由而被丢弃的 IP 数据报数。
  • 以及其他许多统计数据成员,涵盖了 IP 协议的各个方面。

这个函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析这些统计数据,可以识别网络中的瓶颈、错误和异常行为。

GetIcmpStatistics:检索当前 Internet 控制消息协议(ICMP)的统计信息

#pragma region Application Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)

#if (NTDDI_VERSION >= NTDDI_WIN2K)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetIcmpStatistics(
    _Out_ PMIB_ICMP Statistics
    );
#endif

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

函数 GetIcmpStatistics 是 Windows IP Helper API 的一部分,它用于检索当前 Internet 控制消息协议(ICMP)的统计信息。ICMP 用于在 IP 主机、路由器之间传递控制消息,例如,当一个数据包不能到达目的地时,ICMP 可以发送错误消息。

下面是该函数的参数说明:

  • Statistics:一个指向 MIB_ICMP 结构的指针,该结构在函数成功返回时将被填充为当前 ICMP 协议的统计信息。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_ICMP 结构体包含了 ICMP 协议的统计数据

包括但不限于:

  • dwMsgs:发送和接收的 ICMP 消息总数。
  • dwErrors:发送和接收的 ICMP 错误消息总数。
  • dwDestUnreachs:目的地不可达消息的数量。
  • dwTimeExcds:时间超过消息的数量。
  • dwParmProbs:参数问题消息的数量。
  • dwSrcQuenchs:源抑制消息的数量。
  • dwRedirects:重定向消息的数量。
  • dwEchos:回显请求和回显应答消息的数量。
  • dwEchoReplies:回显应答消息的数量。
  • dwTimestamps:时间戳请求和时间戳应答消息的数量。
  • dwTimestampReplies:时间戳应答消息的数量。
  • dwAddrMasks:地址掩码请求和地址掩码应答消息的数量。
  • dwAddrMaskReplies:地址掩码应答消息的数量。

这个函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 ICMP 统计数据,可以识别网络中的瓶颈、错误和异常行为,例如,大量的目的地不可达消息可能表明路由问题。

GetTcpStatistics&GetUdpStatistics:检索当前 TCP(传输控制协议)和 UDP(用户数据报协议)的统计信息

#pragma region Desktop Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)

#if (NTDDI_VERSION >= NTDDI_WIN2K)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetTcpStatistics(
    _Out_ PMIB_TCPSTATS Statistics
    );

IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetUdpStatistics(
    _Out_ PMIB_UDPSTATS Stats
    );
#endif

这两个函数,GetTcpStatisticsGetUdpStatistics,是 Windows IP Helper API 的一部分,用于检索当前 TCP(传输控制协议)和 UDP(用户数据报协议)的统计信息。这些统计信息可以帮助了解网络通信的性能和状态。

GetTcpStatistics 函数:

  • 用途:检索当前 TCP 协议的统计信息。
  • 参数
    • Statistics:一个指向 MIB_TCPSTATS 结构的指针,该结构在函数成功返回时将被填充为当前 TCP 协议的统计信息。
  • 返回值:返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_TCPSTATS 结构体包含了广泛的 TCP 协议统计数据

包括但不限于:

  • dwRtoAlgorithm:计算 RTO(往返时间)的算法。
  • dwRtoMin:最小 RTO 的值。
  • dwRtoMax:最大 RTO 的值。
  • dwMaxConn:同时打开的连接的最大数量。
  • dwActiveOpens:主动打开连接的次数。
  • dwPassiveOpens:被动打开连接的次数。
  • dwAttemptFails:连接尝试失败的次数。
  • dwEstabResets:重置已建立连接的次数。
  • dwCurrEstab:当前已建立连接的数量。
  • dwInSegs:接收到的 TCP 段的数量。
  • dwOutSegs:发送的 TCP 段的数量。
  • 以及其他许多统计数据成员,涵盖了 TCP 协议的各个方面。

GetUdpStatistics 函数:

  • 用途:检索当前 UDP 协议的统计信息。
  • 参数
    • Stats:一个指向 MIB_UDPSTATS 结构的指针,该结构在函数成功返回时将被填充为当前 UDP 协议的统计信息。
  • 返回值:返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_UDPSTATS 结构体包含了 UDP 协议的统计数据

包括但不限于:

  • dwInDatagrams:接收到的 UDP 数据报的数量。
  • dwNoPorts:因没有应用程序监听而丢弃的 UDP 数据报的数量。
  • dwInErrors:由于各种错误而被丢弃的 UDP 数据报的数量。
  • dwOutDatagrams:发送的 UDP 数据报的数量。
  • 以及其他统计数据成员,涵盖了 UDP 协议的各个方面。

这些函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 TCP 和 UDP 的统计数据,可以识别网络中的瓶颈、错误和异常行为。

SetIpStatisticsEx:设置 IP 协议的统计信息

#if (NTDDI_VERSION >= NTDDI_WINXP)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
SetIpStatisticsEx(
    _In_ PMIB_IPSTATS Statistics,
    _In_ ULONG Family
    );
#endif

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

函数 SetIpStatisticsEx 是 Windows IP Helper API 的一部分,它用于设置 IP 协议的统计信息。与 GetIpStatistics 函数相比,SetIpStatisticsEx 允许修改 IP 协议的统计数据,这通常用于调试或测试目的。

下面是该函数的参数说明:

  • Statistics:一个指向 MIB_IPSTATS 结构的指针,该结构包含了要设置的新统计信息。

  • Family:一个 ULONG 类型的值,指定地址族。通常,这个参数可以是 AF_INET(IPv4)或 AF_INET6(IPv6),表示要设置统计信息的地址族。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_IPSTATS 结构体包含了广泛的 IP 协议统计数据

例如:

  • dwForwarding:指示是否启用了 IP 转发。
  • dwDefaultTTL:IP 数据包的默认生存时间(TTL)。
  • dwInReceives:接收到的 IP 数据包总数。
  • dwInHdrErrors:由于头部错误而被丢弃的 IP 数据包数。
  • dwInAddrErrors:由于地址错误而被丢弃的 IP 数据包数。
  • dwForwDatagrams:成功转发的 IP 数据报数。
  • dwInUnknownProtos:由于未知协议而被丢弃的 IP 数据报数。
  • dwInDiscards:由于各种非头部错误而被丢弃的 IP 数据包数。
  • dwInDelivers:成功交付给上层协议的 IP 数据包数。
  • dwOutRequests:发送的 IP 数据报数。
  • dwRoutingDiscards:由于路由表问题而被丢弃的 IP 数据报数。
  • dwDiscards:由于各种错误而被丢弃的 IP 数据包数。
  • dwOutDiscards:由于各种错误而被发送方丢弃的 IP 数据包数。
  • dwOutNoRoutes:由于找不到路由而被丢弃的 IP 数据报数。

请注意,修改 IP 协议的统计信息可能会影响系统的网络性能和稳定性,因此通常不建议在生产环境中使用此函数,除非确实需要进行特定的调试或测试。

GetIpStatisticsEx:检索指定地址族(IPv4或IPv6)的 IP 协议的统计信息

#pragma region Application Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)

#if (NTDDI_VERSION >= NTDDI_WINXP)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetIpStatisticsEx(
    _Out_ PMIB_IPSTATS Statistics,
    _In_  ULONG Family
    );

函数 GetIpStatisticsEx 是 Windows IP Helper API 的一部分,它用于检索指定地址族(IPv4或IPv6)的 IP 协议的统计信息。这个函数提供了一种方式来获取更具体的网络统计数据,特别是当需要针对特定地址族进行网络监控和分析时。

下面是该函数的参数说明:

  • Statistics:这是一个指向 MIB_IPSTATS 结构的指针,该结构在函数成功返回时将被填充为指定地址族的 IP 协议的统计信息。

  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示IPv4)或 AF_INET6(表示IPv6)。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_IPSTATS 结构体包含了广泛的 IP 协议统计数据

例如:

  • dwForwarding:指示是否启用了 IP 转发。
  • dwDefaultTTL:IP 数据包的默认生存时间(TTL)。
  • dwInReceives:接收到的 IP 数据包总数。
  • dwInHdrErrors:由于头部错误而被丢弃的 IP 数据包数。
  • dwInAddrErrors:由于地址错误而被丢弃的 IP 数据包数。
  • dwForwDatagrams:成功转发的 IP 数据报数。
  • dwInUnknownProtos:由于未知协议而被丢弃的 IP 数据报数。
  • dwInDiscards:由于各种非头部错误而被丢弃的 IP 数据包数。
  • dwInDelivers:成功交付给上层协议的 IP 数据包数。
  • dwOutRequests:发送的 IP 数据报数。
  • dwRoutingDiscards:由于路由表问题而被丢弃的 IP 数据报数。
  • dwDiscards:由于各种错误而被丢弃的 IP 数据包数。
  • dwOutDiscards:由于各种错误而被发送方丢弃的 IP 数据包数。
  • dwOutNoRoutes:由于找不到路由而被丢弃的 IP 数据报数。

GetIcmpStatisticsEx:检索指定地址族(IPv4或IPv6)的 ICMP(Internet 控制消息协议)的统计信息

IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetIcmpStatisticsEx(
    _Out_ PMIB_ICMP_EX Statistics,
    _In_  ULONG Family
    );

函数 GetIcmpStatisticsEx 是 Windows IP Helper API 的一部分,它用于检索指定地址族(IPv4或IPv6)的 ICMP(Internet 控制消息协议)的统计信息。这个函数提供了一种方式来获取更具体的网络统计数据,特别是当需要针对特定地址族进行网络监控和分析时。

下面是该函数的参数说明:

  • Statistics:这是一个指向 MIB_ICMP_EX 结构的指针,该结构在函数成功返回时将被填充为指定地址族的 ICMP 协议的统计信息。MIB_ICMP_EX 结构包含了 ICMP 统计数据,但与 MIB_ICMP 结构相比,它为 IPv4 和 IPv6 提供了合并的统计数据。

  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示IPv4)或 AF_INET6(表示IPv6)。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_ICMP_EX 结构体包含了 ICMP 协议的统计数据

例如:

  • dwMsgs:发送和接收的 ICMP 消息总数。
  • dwErrors:发送和接收的 ICMP 错误消息总数。
  • dwDestUnreachs:目的地不可达消息的数量。
  • dwTimeExcds:时间超过消息的数量。
  • dwParmProbs:参数问题消息的数量。
  • dwSrcQuenchs:源抑制消息的数量。
  • dwRedirects:重定向消息的数量。
  • dwEchos:回显请求和回显应答消息的数量。
  • dwEchoReplies:回显应答消息的数量。
  • dwTimestamps:时间戳请求和时间戳应答消息的数量。
  • dwTimestampReplies:时间戳应答消息的数量。
  • dwAddrMasks:地址掩码请求和地址掩码应答消息的数量。
  • dwAddrMaskReplies:地址掩码应答消息的数量。
  • 以及针对 IPv4 和 IPv6 的额外统计数据。

此函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 ICMP 统计数据,可以识别网络中的瓶颈、错误和异常行为,例如,大量的目的地不可达消息可能表明路由问题。

GetTcpStatisticsEx:检索指定地址族(IPv4或IPv6)的 TCP(传输控制协议)的统计信息

IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetTcpStatisticsEx(
    _Out_ PMIB_TCPSTATS Statistics,
    _In_  ULONG Family
    );

函数 GetTcpStatisticsEx 是 Windows IP Helper API 的一部分,它用于检索指定地址族(IPv4或IPv6)的 TCP(传输控制协议)的统计信息。这个函数提供了一种方式来获取更具体的网络统计数据,特别是当需要针对特定地址族进行网络监控和分析时。

下面是该函数的参数说明:

  • Statistics:这是一个指向 MIB_TCPSTATS 结构的指针,该结构在函数成功返回时将被填充为指定地址族的 TCP 协议的统计信息。MIB_TCPSTATS 结构包含了 TCP 协议的各种统计数据。

  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示IPv4)或 AF_INET6(表示IPv6)。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_TCPSTATS 结构体包含了广泛的 TCP 协议统计数据

例如:

  • dwRtoAlgorithm:计算 RTO(往返时间)的算法。
  • dwRtoMin:最小 RTO 的值。
  • dwRtoMax:最大 RTO 的值。
  • dwMaxConn:同时打开的连接的最大数量。
  • dwActiveOpens:主动打开连接的次数。
  • dwPassiveOpens:被动打开连接的次数。
  • dwAttemptFails:连接尝试失败的次数。
  • dwEstabResets:重置已建立连接的次数。
  • dwCurrEstab:当前已建立连接的数量。
  • dwInSegs:接收到的 TCP 段的数量。
  • dwOutSegs:发送的 TCP 段的数量。
  • dwRetransSegs:重传的 TCP 段的数量。
  • dwInErrs:接收到的错误 TCP 段的数量。
  • dwOutRsts:发送的 TCP 重置段的数量。
  • 以及其他许多统计数据成员,涵盖了 TCP 协议的各个方面。

此函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 TCP 统计数据,可以识别网络中的瓶颈、错误和异常行为,例如,大量的重传或连接尝试失败可能表明网络不稳定或配置问题。

GetUdpStatisticsEx:检索指定地址族(IPv4或IPv6)的 UDP(用户数据报协议)的统计信息

IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetUdpStatisticsEx(
    _Out_ PMIB_UDPSTATS Statistics,
    _In_  ULONG Family
    );
#endif

函数 GetUdpStatisticsEx 是 Windows IP Helper API 的一部分,它用于检索指定地址族(IPv4或IPv6)的 UDP(用户数据报协议)的统计信息。这个函数提供了一种方式来获取特定地址族的 UDP 统计数据,这对于网络监控、性能分析和故障排除非常有用。

下面是该函数的参数说明:

  • Statistics:这是一个指向 MIB_UDPSTATS 结构的指针,该结构在函数成功返回时将被填充为指定地址族的 UDP 协议的统计信息。MIB_UDPSTATS 结构包含了 UDP 协议的各种统计数据。

  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示IPv4)或 AF_INET6(表示IPv6)。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_UDPSTATS 结构体包含了 UDP 协议的统计数据

例如:

  • dwInDatagrams:接收到的 UDP 数据报的数量。
  • dwNoPorts:因没有应用程序监听而丢弃的 UDP 数据报的数量。
  • dwInErrors:由于各种错误而被丢弃的 UDP 数据报的数量。
  • dwOutDatagrams:发送的 UDP 数据报的数量。
  • dwNumAddrs:UDP 端点的数量。

此函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 UDP 统计数据,可以识别网络中的瓶颈、错误和异常行为,例如,大量的因没有端口可用而被丢弃的数据报可能表明网络攻击或配置错误。

GetTcpStatisticsEx2:检索当前计算机的 TCP 统计信息

#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetTcpStatisticsEx2(
    _Out_ PMIB_TCPSTATS2 Statistics,
    _In_  ULONG Family
    );

函数 GetTcpStatisticsEx2 是 Windows IP Helper API 的一部分,它用于检索当前计算机的 TCP 统计信息,并且提供了比 GetTcpStatisticsEx 更详细的信息。这个函数特别适用于需要对 IPv4 或 IPv6 的 TCP 统计数据进行深入分析的场景。

参数说明

  • Statistics:这是一个指向 MIB_TCPSTATS2 结构的指针,该结构在函数成功返回时将被填充为当前 TCP 协议的统计信息。MIB_TCPSTATS2 结构包含了 TCP 协议的各种统计数据,包括连接数、错误数、重传数等详细统计信息。
  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示 IPv4)或 AF_INET6(表示 IPv6)。

返回值

  • 如果函数成功,则返回值 NO_ERROR
  • 如果函数失败,则返回值为以下错误代码之一,例如 ERROR_INVALID_PARAMETER 表示参数无效,或者 ERROR_NOT_SUPPORTED 表示操作系统不支持此函数。

此函数通常用于诊断网络问题、监控网络性能和优化网络配置。通过分析 TCP 统计数据,可以识别网络中的瓶颈、错误和异常行为。例如,大量的重传或连接尝试失败可能表明网络不稳定或配置问题。

MIB_TCPSTATS2 结构体是 MIB_TCPSTATS 结构体的一个扩展版本,它包含了64位的计数器,用于支持更大的数值范围

MIB_TCPSTATS2 结构体是 MIB_TCPSTATS 结构体的一个扩展版本,它包含了64位的计数器,用于支持更大的数值范围。这个结构体提供了关于TCP协议的详细统计信息,适用于需要高精度统计数据的场景。以下是 MIB_TCPSTATS2 结构体包含的变量:

  • RtoAlgorithm:一个 DWORD 类型的成员,表示用于计算 TCP 连接的往返时间(RTO)的算法。可能的值包括 MIB_TCP_RTO_OTHERMIB_TCP_RTO_CONSTANTMIB_TCP_RTO_RSREMIB_TCP_RTO_VANJ 等 。

  • dwRtoMin:一个 DWORD 类型的成员,表示 TCP 连接的最小 RTO 值,单位为毫秒。

  • dwRtoMax:一个 DWORD 类型的成员,表示 TCP 连接的最大 RTO 值,单位为毫秒。

  • dwMaxConn:一个 DWORD 类型的成员,表示系统能够支持的最大同时连接数。如果此值为 -1,则表示最大连接数是可变的。

  • dwActiveOpens:一个 DWORD 类型的成员,表示主动打开的连接数,即由客户端发起的连接尝试。

  • dwPassiveOpens:一个 DWORD 类型的成员,表示被动打开的连接数,即由服务器端接受的连接请求。

  • dwAttemptFails:一个 DWORD 类型的成员,表示连接尝试失败的次数。

  • dwEstabResets:一个 DWORD 类型的成员,表示已建立的连接被重置的次数。

  • dwCurrEstab:一个 DWORD 类型的成员,表示当前已建立的连接数。

  • dw64InSegs:一个 DWORD64 类型的成员,表示接收到的 TCP 段数。

  • dw64OutSegs:一个 DWORD64 类型的成员,表示发送的 TCP 段数,不包括重传的段。

  • dwRetransSegs:一个 DWORD64 类型的成员,表示重传的 TCP 段数。

  • dwInErrs:一个 DWORD 类型的成员,表示接收到的错误 TCP 段数。

  • dwOutRsts:一个 DWORD 类型的成员,表示发送的 TCP 重置段数。

  • dwNumConns:一个 DWORD 类型的成员,表示系统中当前存在的连接数,包括所有状态的连接,但排除监听连接。

这个结构体提供了对 TCP 协议性能和状态的全面视图,非常适合用于网络监控、性能分析和故障排除。由于它使用 64 位计数器,因此能够支持更大的数值范围,这对于长时间运行的系统或者高负载的网络环境尤其重要。

GetUdpStatisticsEx2:检索指定地址族(IPv4或IPv6)的 UDP(用户数据报协议)的统计信息

IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetUdpStatisticsEx2(
    _Out_ PMIB_UDPSTATS2 Statistics,
    _In_  ULONG Family
    );
#endif

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

函数 GetUdpStatisticsEx2 是 Windows IP Helper API 的一部分,它用于检索指定地址族(IPv4或IPv6)的 UDP(用户数据报协议)的统计信息。这个函数提供了一种方式来获取特定地址族的 UDP 统计数据,这对于网络监控、性能分析和故障排除非常有用。

下面是该函数的参数说明:

  • Statistics:这是一个指向 MIB_UDPSTATS2 结构的指针,该结构在函数成功返回时将被填充为指定地址族的 UDP 协议的统计信息。MIB_UDPSTATS2 结构包含了 UDP 协议的各种统计数据,并且使用 64 位计数器,而不是 MIB_UDPSTATS 结构中的 32 位计数器。

  • Family:这是一个 ULONG 类型的值,指定要检索统计信息的地址族。通常,这个参数可以是 AF_INET(表示IPv4)或 AF_INET6(表示IPv6)。

函数返回一个 ULONG 类型的值,表示函数调用的结果。如果函数调用成功,返回值通常是 NO_ERROR(值为0)。如果函数调用失败,则返回值是一个错误代码,可以用于诊断问题。

MIB_UDPSTATS2 结构体包含了 UDP 协议的统计数据

例如:

  • dwInDatagrams:接收到的 UDP 数据报的数量。
  • dwNoPorts:因没有应用程序监听而丢弃的 UDP 数据报的数量。
  • dwInErrors:由于各种错误而被丢弃的 UDP 数据报的数量。
  • dwOutDatagrams:发送的 UDP 数据报的数量。
  • dwNumAddrs:UDP 端点的数量。

原文地址:https://blog.csdn.net/weixin_42964413/article/details/142999622

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!