使用 IpReleaseAddress、IpRenewAddress 管理 DHCP 租约

IpReleaseAddressIpRenewAddress 函数用于发布和续订当前动态主机配置协议 (DHCP) 租约。 IpReleaseAddress 函数释放以前通过 DHCP 获取的 IPv4 地址。 IpRenewAddress 函数续订以前通过 DHCP 获取的 IPv4 地址的租约。 通常结合使用这两个函数,首先通过调用 IpReleaseAddress 释放租约,然后通过调用 IpRenewAddress 函数续订租约。

如果 DHCP 客户端以前已获取 DHCP 租约,并且未在 IpRenewAddress 函数之前调用 IpReleaseAddress ,则 DHCP 客户端请求将发送到发出初始 DHCP 租约的 DHCP 服务器。 此 DHCP 服务器可能不可用,或者 DHCP 请求可能会失败。 如果主机之前已获取 DHCP 租约,并在 IpRenewAddress 函数之前调用 IpReleaseAddress ,则 DHCP 客户端将首先释放获取的 IP 地址,并发送 DHCP 客户端请求以获取来自任何可用 DHCP 服务器的响应。

注意

IpReleaseAddressIpRenewAddress 函数要求启用 DHCP 才能正确执行。

 

IpReleaseAddress 函数将指向 IP_ADAPTER_INDEX_MAP 结构的指针作为其唯一参数。 若要获取此参数,请首先调用 GetInterfaceInfo。 有关 GetInterfaceInfo 函数的帮助,请参阅 使用 GetInterfaceInfo 管理接口

使用 IpReleaseAddress

  1. 使用 GetInterfaceInfo 函数获取指向IP_ADAPTER_INDEX_MAP结构的指针。 (有关 GetInterfaceInfo 函数的帮助,请参阅 使用 GetInterfaceInfo) 管理接口 。 创建用于错误检查) (DWORD 对象 dwRetVal 。 假定 GetInterfaceInfo 返回的变量名为 pInfo

    DWORD dwRetVal;
    
    
  2. 如果 DHCP 已启用,请调用 IpReleaseAddress 函数,并将 IP_ADAPTER_INDEX_MAP 变量 Adapter 作为其参数传递。 检查一般错误并将其值返回到 DWORD 变量 dwRetVal (,以便) 进行更广泛的错误检查。

    注意

    GetAdaptersInfo 函数返回一个参数,可用于在调用这些函数之前检查 DHCP 是否已启用。 有关 GetAdaptersInfo 的帮助,请参阅 使用 GetAdaptersInfo 管理网络适配器

     

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

注意

通常将这两个函数一起使用,即调用 IpReleaseAddress 函数,然后调用 IpRenewAddress 函数,并将与 参数相同的结构传递给这两个函数。 以下过程假定函数不一起使用:但是,如果函数一起使用,请跳过步骤 1。

 

使用 IpRenewAddress

  1. 使用 GetInterfaceInfo 函数获取指向IP_ADAPTER_INDEX_MAP结构的指针。 (有关 GetInterfaceInfo 函数的帮助,请参阅 使用 GetInterfaceInfo) 管理接口 。 声明 一个 DWORD 对象 dwRetVal (用于错误检查) (如果尚未声明此变量)。 假定 GetInterfaceInfo 返回的变量名为 pInfo

    DWORD dwRetVal;
    
    
  2. 调用 IpRenewAddress 函数,将 IP_ADAPTER_INDEX_MAP 变量 Adapter 作为其参数传递。 检查一般错误并将其值返回到 DWORD 变量 dwRetVal (,以便) 进行更广泛的错误检查。

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

下一步: 使用 AddIPAddress 和 DeleteIPAddress 管理 IP 地址

上一步: 使用 GetIpAddrTable 管理 IP 地址