使用 AddIPAddress、DeleteIPAddress 管理 IP 地址
AddIPAddress 函数将指定的 IPv4 地址添加到指定的适配器。 DeleteIPAddress 函数从指定的适配器中删除指定的 IPv4 地址。 这些函数可用于向网络适配器添加和删除 IPv4 地址。
AddIPAddress 函数添加的 IPv4 地址不是永久性的。 只要适配器对象存在,IPv4 地址才存在。 重新启动计算机会破坏 IPv4 地址,手动重置网络接口卡 (NIC) 。
成功调用 AddIPAddress 后,将为添加的 IP 地址禁用 DHCP。 因此,需要启用 DHCP 的 IpReleaseAddress 等函数将无法在添加的 IP 地址上正常工作。 DeleteIPAddress 函数可用于删除添加的 IPv4 地址。
注意
组策略、企业策略和网络上的其他限制可能会阻止这些功能成功完成。 在尝试使用这些函数之前,请确保应用程序具有必要的网络权限。
使用 AddIPAddress
声明名为
NTEContext
和NTEInstance
的 ULONG 变量,两者都初始化为零。注意
变量
NTEContext
是 DeleteIPAddress 函数的唯一参数;若要删除添加的 IP 地址,NTEContext
必须存储且保持不变。ULONG NTEContext = 0; ULONG NTEInstance = 0;
注意
分别声明名为
iaIPAddress
和 的 IPAddr 和iaIPMask
IPMask 结构的变量。 这些值只是无符号整数。iaIPAddress
使用 inet_addr 函数初始化 和iaIPMask
变量。UINT iaIPAddress; UINT iaIPMask; iaIPAddress = inet_addr("192.168.0.5"); iaIPMask = inet_addr("255.255.255.0");
调用 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
已保存且未损坏。
上一步: 使用 IpReleaseAddress 和 IpRenewAddress 管理 DHCP 租约