GetExtendedTcpTable (iphlpapi.dll) возвращает недокументированный код ошибки -1073741823 - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь получить таблицу windows tcp, в то время как соединения tcp интенсивно устанавливаются параллельно.

В примере кода одна задача - установить много соединений tcp и не освобождать их, что в конечном итоге приведет к SocketException, а другой читает таблицу tcp с iphlpapi.dll параллельно. Когда SocketException в первой задаче происходит, все предыдущие соединения освобождаются, и тот же цикл повторяется.

Итак, на моем компьютере tcp таблица читается хорошо, и никаких исключений не выдается. Но на другом наборе машин тот же код заставляет GetExtendedTcpTable возвращать недокументированный код ошибки -1073741823, вызывая сброс кода на строку 98 .

Что это за код ошибки и почему он возникает толькона конкретных машинах?

Проблема не гуглится хорошо. Я обнаружил только одну связанную проблему поднятую, и нет комментариев, объясняющих такое происхождение кода ошибки.

1 Ответ

3 голосов
/ 08 октября 2019

Может быть STATUS_UNSUCCESSFUL , что довольно универсально, и эти коды NTSTATUS на самом деле не должны возвращаться такими функциями WinAPI, как этот.

Я бы предложил, чтобы вы просто повторили неудачный вызов, когдаВы получаете эту ошибку. Поскольку это немного неизвестно, вы не должны повторяться вечно, сдавайтесь через x количество попыток и / или секунд.

Для GetTcpTable MSDN говорит :

STATUS_UNSUCCESSFUL :

Если вы получили этот код возврата, то позвонивфункции снова обычно достаточно, чтобы очистить проблему и получить желаемый результат. Этот код возврата может быть следствием высокой загрузки системы. Например, если размер таблицы соединений TCP изменяется более чем на 2 дополнительных элемента 3 раза подряд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...