使用 AddIPAddress、DeleteIPAddress 管理 IP 地址

AddIPAddress 函数将指定的 IPv4 地址添加到指定的适配器。 DeleteIPAddress 函数从指定的适配器中删除指定的 IPv4 地址。 这些函数可用于向网络适配器添加和删除 IPv4 地址。

AddIPAddress 函数添加的 IPv4 地址不是永久性的。 只要适配器对象存在,IPv4 地址才存在。 重新启动计算机会破坏 IPv4 地址,手动重置网络接口卡 (NIC) 。

成功调用 AddIPAddress 后,将为添加的 IP 地址禁用 DHCP。 因此,需要启用 DHCP 的 IpReleaseAddress 等函数将无法在添加的 IP 地址上正常工作。 DeleteIPAddress 函数可用于删除添加的 IPv4 地址。

注意

组策略、企业策略和网络上的其他限制可能会阻止这些功能成功完成。 在尝试使用这些函数之前,请确保应用程序具有必要的网络权限。

 

使用 AddIPAddress

  1. 声明名为 NTEContextNTEInstanceULONG 变量,两者都初始化为零。

    注意

    变量 NTEContextDeleteIPAddress 函数的唯一参数;若要删除添加的 IP 地址, NTEContext 必须存储且保持不变。

     

        ULONG NTEContext = 0;
        ULONG NTEInstance = 0;
    
    

    注意

     

  2. 分别声明名为 iaIPAddress 和 的 IPAddr 和 iaIPMaskIPMask 结构的变量。 这些值只是无符号整数。 iaIPAddress使用 inet_addr 函数初始化 和 iaIPMask 变量。

    UINT iaIPAddress;
    UINT iaIPMask;
    
    iaIPAddress = inet_addr("192.168.0.5");
    iaIPMask    = inet_addr("255.255.255.0");
    
  3. 调用 AddIPAddress 函数以添加 IPv4 地址。 检查错误并将错误值返回到 DWORD 变量 dwRetVal (进行更广泛的错误检查) 。

    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 函数的帮助,请参阅 使用 GetIpAddrTable 管理 IP 地址

     

使用 DeleteIpAddress

  • 调用 DeleteIPAddress 函数,将 NTEContext 变量作为其参数传递。 检查错误并将错误值返回到 DWORD 变量 dwRetVal (进行更广泛的错误检查) 。
    dwRetVal = DeleteIPAddress(NTEContext);
    if (dwRetVal != NO_ERROR) {
            printf("\tDeleteIPAddress failed with error: %d\n", dwRetVal);
    } 
    

注意

若要使用 DeleteIPAddress,必须先调用 AddIPAddress 以获取句柄 NTEContext。 前面的过程假定 AddIPAddress 已在代码中的某个位置调用,并且 NTEContext 已保存且未损坏。

 

下一步: 使用 GetIpStatistics 检索信息

上一步: 使用 IpReleaseAddress 和 IpRenewAddress 管理 DHCP 租约