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


Управление арендой 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. Создайте объект dwRetValDWORD (используется для проверки ошибок). Предполагается, что переменная, возвращаемая Методом GetInterfaceInfo , называется pInfo.

    DWORD dwRetVal;
    
    
  2. Если dhcp включен, вызовите функцию IpReleaseAddress , передав переменнуюAdapter IP_ADAPTER_INDEX_MAP в качестве параметра. Проверьте наличие общих ошибок и верните его значение в переменную dwRetValDWORD (для более подробной проверки ошибок).

    Примечание

    Функция 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. Объявите объект dwRetValDWORD (используемый для проверки ошибок), если эта переменная не была объявлена. Предполагается, что переменная, возвращаемая Методом GetInterfaceInfo , называется pInfo.

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

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

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

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