Функция DeleteIPAddress работает, но вызывает отключение - PullRequest
1 голос
/ 22 мая 2019

У меня есть небольшое приложение, которое временно добавляет несколько (3-4) IP-адресов с помощью функции AddIPAddress из IP Helper.Через несколько секунд (2-3) он удаляет эти адреса с помощью функции DeleteIPAddress.

Функция DeleteIPAddress работает и не возвращает ошибок, но иногда (один раз в 3 или 4 раунда добавления и удаления) запускает событие отключения интерфейса (точно так же, как отключение и подключение кабеля).

Я хочу избежать этих отключений, так как они обрезают все соединения, осуществляемые в том же интерфейсе, но я не вижу ничего в документации, касающейся этого поведения.

Вот как я добавляю каждый IP-адрес:

auto dwRetVal = AddIPAddress(iaIPAddress, iaIPMask, _idx, &NTEContext, &NTEInstance);
    if (dwRetVal == ERROR)
    {
      std::cout << "Error on AddIPAddress" << std::endl;
    }

И вот как я их удаляю:

auto dwRetVal = DeleteIPAddress(ipContext);
    if (dwRetVal != NO_ERROR)
    {
      std::cout << "Error on DeleteIPAddress" << std::endl;
    }

Я что-то упустил?

1 Ответ

0 голосов
/ 22 мая 2019

Вы не проверяете возвращаемое значение из AddIPAddress правильно, вы должны проверить != ERROR_SUCCESS.

Если AddIPAddress не удастся, вы не должны вызывать delete.

...