Управление IP-адресами с помощью AddIPAddress, DeleteIPAddress
Функция AddIPAddress добавляет указанный IPv4-адрес в указанный адаптер. Функция DeleteIPAddress удаляет указанный IPv4-адрес из указанного адаптера. Эти функции можно использовать для добавления и удаления IPv4-адресов в сетевом адаптере.
IPv4-адрес, добавленный функцией AddIPAddress , не является постоянным. IPv4-адрес существует только до тех пор, пока существует объект адаптера. Перезагрузка компьютера приводит к удалению IPv4-адреса, как и при сбросе сетевого интерфейса вручную карта (NIC).
После успешного вызова AddIPAddress dhcp будет отключен для добавленного IP-адреса. Таким образом, такие функции, как IpReleaseAddress, для которых требуется включить DHCP, не будут работать на добавленном IP-адресе. Для удаления добавленного IPv4-адреса можно использовать функцию DeleteIPAddress .
Примечание
Групповые политики, корпоративные политики и другие ограничения сети могут препятствовать успешному выполнению этих функций. Прежде чем пытаться использовать эти функции, убедитесь, что у приложения есть необходимые сетевые разрешения.
Использование AddIPAddress
Объявите переменные ULONG с именами
NTEContext
иNTEInstance
, инициализированные нулевым значением.Примечание
Переменная
NTEContext
является единственным параметром функции DeleteIPAddress . Чтобы удалить добавленный IP-адрес,NTEContext
необходимо сохранить и не изменить.ULONG NTEContext = 0; ULONG NTEInstance = 0;
Примечание
Объявите переменные для структур 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");
Вызовите функцию AddIPAddress , чтобы добавить IPv4-адрес. Проверьте наличие ошибок и верните значение ошибки в переменную
dwRetVal
DWORD (для более тщательной проверки ошибок).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
качестве параметра . Проверьте наличие ошибок и верните значение ошибки в переменнуюdwRetVal
DWORD (для более тщательной проверки ошибок).dwRetVal = DeleteIPAddress(NTEContext); if (dwRetVal != NO_ERROR) { printf("\tDeleteIPAddress failed with error: %d\n", dwRetVal); }
Примечание
Чтобы использовать DeleteIPAddress, сначала необходимо вызвать AddIPAddress , чтобы получить дескриптор NTEContext
. В предыдущей процедуре предполагается, что AddIPAddress уже был вызван в коде и NTEContext
был сохранен и остается некоррупированным.
Следующий шаг . Получение сведений с помощью GetIpStatistics
Предыдущий шаг. Управление арендами DHCP с помощью IpReleaseAddress и IpRenewAddress