【问题标题】:GetExtendedTcpTable (iphlpapi.dll) returns undocumented error code -1073741823GetExtendedTcpTable (iphlpapi.dll) 返回未记录的错误代码 -1073741823
【发布时间】:2019-10-08 13:54:26
【问题描述】:

我尝试在并行密集建立 tcp 连接时检索 windows tcp 表。

code example中,一个任务是建立了许多tcp连接并且没有释放它们,最终导致SocketException,另一个是与iphlpapi.dll并行读取tcp表。当第一个任务中的SocketException 发生时,之前的所有连接都会被释放,并重复相同的循环。

所以,在我的机器上,tcp 表被很好地读取并且没有抛出异常。但在其他机器上,相同的代码使GetExtendedTcpTable 返回未记录的错误代码-1073741823,使代码抛出line 98

这个错误代码是什么?为什么它只出现在特定的机器上?

这个问题不是很好用谷歌搜索。我发现只提出了一个相关的issue,并且没有 cmets 解释此类错误代码的来源。

【问题讨论】:

    标签: .net windows winapi networking


    【解决方案1】:

    可能是STATUS_UNSUCCESSFUL,这是相当通用的,这些 NTSTATUS 代码实际上不应该由这样的 WinAPI 函数返回。

    我建议您在收到此错误时重试失败的调用。因为它有点未知,所以你不应该永远重试,在 x 次尝试和/或秒后放弃。

    对于GetTcpTableMSDN says

    STATUS_UNSUCCESSFUL

    如果您收到此返回码,则再次调用该函数通常足以清除问题并获得所需的结果。此返回代码可能是系统处于高负载下的结果。例如,如果 TCP 连接表的大小连续 3 次变化超过 2 个附加项。

    【讨论】:

      猜你喜欢
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2011-12-04
      相关资源
      最近更新 更多