Управление арендой DHCP с помощью IpReleaseAddress, IpRenewAddress
Функции IpReleaseAddress и IpRenewAddress используются для освобождения и продления текущей аренды протокола DHCP. Функция IpReleaseAddress освобождает IPv4-адрес, ранее полученный через DHCP. Функция IpRenewAddress продлевает аренду IPv4-адреса, ранее полученного через DHCP. Обычно эти две функции используются вместе, сначала освобождая аренду с помощью вызова IpReleaseAddress, а затем продлевая аренду с помощью вызова функции IpRenewAddress .
Если DHCP-клиент ранее получил аренду DHCP и IpReleaseAddress не вызывается перед функцией IpRenewAddress , запрос DHCP-клиента отправляется НА DHCP-сервер, выдающий первоначальную аренду DHCP. Этот DHCP-сервер может быть недоступен или DHCP-запрос может завершиться ошибкой. Если узел ранее получил аренду DHCP и вызывается IpReleaseAddress перед функцией IpRenewAddress , DHCP-клиент сначала освобождает полученный IP-адрес и отправляет запрос DHCP-клиента на ответ от любого доступного DHCP-сервера.
Примечание
Для правильной работы функций IpReleaseAddress и IpRenewAddress необходимо включить DHCP.
Функция IpReleaseAddress принимает указатель на структуру IP_ADAPTER_INDEX_MAP в качестве единственного параметра. Чтобы получить этот параметр, сначала вызовите GetInterfaceInfo. Дополнительные сведения о функции GetInterfaceInfo см. в разделе Управление интерфейсами с помощью GetInterfaceInfo.
Использование IpReleaseAddress
Получите указатель на структуру IP_ADAPTER_INDEX_MAP с помощью функции GetInterfaceInfo . (Справку по функции GetInterfaceInfo см. в разделе Управление интерфейсами с помощью GetInterfaceInfo. Создайте объект
dwRetVal
DWORD (используется для проверки ошибок). Предполагается, что переменная, возвращаемая Методом GetInterfaceInfo , называетсяpInfo
.DWORD dwRetVal;
Если dhcp включен, вызовите функцию IpReleaseAddress , передав переменную
Adapter
IP_ADAPTER_INDEX_MAP в качестве параметра. Проверьте наличие общих ошибок и верните его значение в переменнуюdwRetVal
DWORD (для более подробной проверки ошибок).Примечание
Функция GetAdaptersInfo возвращает параметр, который можно использовать для проверка включения DHCP перед вызовом этих функций. Справку по GetAdaptersInfo см. в статье Управление сетевыми адаптерами с помощью GetAdaptersInfo.
if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Release succeeded.\n"); }
Примечание
Обычно эти две функции используются вместе, вызывая функцию IpReleaseAddress , а затем вызывая функцию IpRenewAddress , передавая ту же структуру, что и параметр, в обе функции. В следующей процедуре предполагается, что функции не используются вместе. Однако если функции используются вместе, пропустите шаг 1.
Использование IpRenewAddress
Получите указатель на структуру IP_ADAPTER_INDEX_MAP с помощью функции GetInterfaceInfo . (Справку по функции GetInterfaceInfo см. в разделе Управление интерфейсами с помощью GetInterfaceInfo. Объявите объект
dwRetVal
DWORD (используемый для проверки ошибок), если эта переменная не была объявлена. Предполагается, что переменная, возвращаемая Методом GetInterfaceInfo , называетсяpInfo
.DWORD dwRetVal;
Вызовите функцию IpRenewAddress , передав переменную
Adapter
IP_ADAPTER_INDEX_MAP в качестве параметра. Проверьте наличие общих ошибок и верните его значение в переменнуюdwRetVal
DWORD (для более подробной проверки ошибок).if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Renew succeeded.\n"); }
Следующий шаг. Управление IP-адресами с помощью AddIPAddress и DeleteIPAddress
Предыдущий шаг. Управление IP-адресами с помощью GetIpAddrTable