Поделиться через


Управление IP-адресами с помощью AddIPAddress, DeleteIPAddress

Функция AddIPAddress добавляет указанный IPv4-адрес в указанный адаптер. Функция DeleteIPAddress удаляет указанный IPv4-адрес из указанного адаптера. Эти функции можно использовать для добавления и удаления IPv4-адресов в сетевом адаптере.

IPv4-адрес, добавленный функцией AddIPAddress , не является постоянным. IPv4-адрес существует только до тех пор, пока существует объект адаптера. Перезагрузка компьютера приводит к удалению IPv4-адреса, как и при сбросе сетевого интерфейса вручную карта (NIC).

После успешного вызова AddIPAddress dhcp будет отключен для добавленного IP-адреса. Таким образом, такие функции, как IpReleaseAddress, для которых требуется включить DHCP, не будут работать на добавленном IP-адресе. Для удаления добавленного IPv4-адреса можно использовать функцию DeleteIPAddress .

Примечание

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

 

Использование AddIPAddress

  1. Объявите переменные ULONG с именами NTEContext и NTEInstance, инициализированные нулевым значением.

    Примечание

    Переменная NTEContext является единственным параметром функции DeleteIPAddress . Чтобы удалить добавленный IP-адрес, NTEContext необходимо сохранить и не изменить.

     

        ULONG NTEContext = 0;
        ULONG NTEInstance = 0;
    
    

    Примечание

     

  2. Объявите переменные для структур IPAddr и IPMask с именами iaIPAddress и iaIPMaskсоответственно. Эти значения являются просто целыми числами без знака. Инициализируйте iaIPAddress переменные и iaIPMask с помощью функции inet_addr .

    UINT iaIPAddress;
    UINT iaIPMask;
    
    iaIPAddress = inet_addr("192.168.0.5");
    iaIPMask    = inet_addr("255.255.255.0");
    
  3. Вызовите функцию AddIPAddress , чтобы добавить IPv4-адрес. Проверьте наличие ошибок и верните значение ошибки в переменную dwRetValDWORD (для более тщательной проверки ошибок).

    dwRetVal = AddIPAddress(iaIPAddress, iaIPMask, pIPAddrTable->table[0].dwIndex, 
                                 &NTEContext, &NTEInstance);
    if (dwRetVal != NO_ERROR) {
        printf("AddIPAddress call failed with %d\n", dwRetVal);
    }
    

    Примечание

    Третий параметр — индекс адаптера, который можно получить, вызвав функцию GetIpAddrTable . Предполагается, что переменная, возвращаемая этой функцией, называется pIPAddrTable. Сведения о функции GetIpAddrTable см. в разделе Управление IP-адресом с помощью GetIpAddrTable.

     

Использование DeleteIpAddress

  • Вызовите функцию DeleteIPAddress , передав переменную в NTEContext качестве параметра . Проверьте наличие ошибок и верните значение ошибки в переменную dwRetValDWORD (для более тщательной проверки ошибок).
    dwRetVal = DeleteIPAddress(NTEContext);
    if (dwRetVal != NO_ERROR) {
            printf("\tDeleteIPAddress failed with error: %d\n", dwRetVal);
    } 
    

Примечание

Чтобы использовать DeleteIPAddress, сначала необходимо вызвать AddIPAddress , чтобы получить дескриптор NTEContext. В предыдущей процедуре предполагается, что AddIPAddress уже был вызван в коде и NTEContext был сохранен и остается некоррупированным.

 

Следующий шаг . Получение сведений с помощью GetIpStatistics

Предыдущий шаг. Управление арендами DHCP с помощью IpReleaseAddress и IpRenewAddress