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


Управление арендой 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

  1. Получите указатель на структуру IP_ADAPTER_INDEX_MAP с помощью функции GetInterfaceInfo. (Дополнительные сведения о функции GetInterfaceInfo см. в статье Управление интерфейсами с помощью GetInterfaceInfo). Создайте объект DWORDdwRetVal (используется для проверки ошибок). Предполагается, что переменная, возвращаемая GetInterfaceInfo, называется pInfo.

    DWORD dwRetVal;
    
    
  2. Если DHCP включен, вызовите функцию ipReleaseAddress, передав переменную IP_ADAPTER_INDEX_MAPAdapter в качестве параметра. Проверьте общие ошибки и верните значение в переменную DWORD dwRetVal (для более обширной проверки ошибок).

    Заметка

    Функция GetAdaptersInfo возвращает параметр, который можно использовать для проверки включения DHCP перед вызовом этих функций. Сведения о GetAdaptersInfoсм. в статье Управление сетевыми адаптерами с помощью GetAdaptersInfo.

     

    if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) {
        printf("Ip Release succeeded.\n");
    }
    
    

Заметка

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

 

Чтобы использовать ipRenewAddress

  1. Получите указатель на структуру IP_ADAPTER_INDEX_MAP с помощью функции GetInterfaceInfo. (Чтобы получить справку по функции GetInterfaceInfo, смотрите статью "Руководство по управлению интерфейсами с использованием GetInterfaceInfo"). Объявите объект DWORD dwRetVal (используется для проверки ошибок), если эта переменная не объявлена. Предполагается, что переменная, возвращаемая GetInterfaceInfo, называется pInfo.

    DWORD dwRetVal;
    
    
  2. Вызовите функциюIpRenewAddress, передав переменную IP_ADAPTER_INDEX_MAPAdapter в качестве параметра. Проверьте наличие общих ошибок и верните значение в переменную DWORDdwRetVal (для более детальной проверки ошибок).

    if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) {
        printf("Ip Renew succeeded.\n");
    }
    

Следующий шаг: управление IP-адресами с помощью AddIPAddress и DeleteIPAddress

Предыдущий шаг: управление IP-адресами с помощью GetIpAddrTable