GetExtendedTcpTable(iphlpapi.dll)返回未记录的错误代码-1073741823

时间:2019-10-08 13:54:26

标签: .net windows winapi networking

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

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

因此,在我的计算机上,tcp表已被很好地读取,并且未引发任何异常。但是在其他机器上,相同的代码使GetExtendedTcpTable返回未记录的错误代码-1073741823,从而使代码抛出在line 98上。

此错误代码是什么,为什么它仅在特定计算机上出现?

问题无法很好地进行搜索。我发现只提出了一个相关的issue,也没有任何评论解释这种错误代码的起源。

1 个答案:

答案 0 :(得分:3)

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

我建议您在收到此错误时仅重试失败的呼叫。由于未知,您不应该永远重试,在x次尝试和/或几秒钟后放弃。

对于GetTcpTable MSDN says

  

STATUS_UNSUCCESSFUL

     

如果收到此返回码,则再次调用该函数通常足以解决问题并获得所需的结果。此返回码可能是系统承受高负载的结果。例如,如果TCP连接表的大小连续3次更改了2个以上的附加项。