使用 IpReleaseAddress、IpRenewAddress 管理 DHCP 租用
IpReleaseAddress和IpRenewAddress函式可用來發行和更新目前的動態主機設定通訊協定 (DHCP) 租用。 IpReleaseAddress函式會釋放先前透過 DHCP 取得的 IPv4 位址。 IpRenewAddress函式會在先前透過 DHCP 取得的 IPv4 位址上更新租用。 通常一起使用這兩個函式,先使用 對 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
使用GetInterfaceInfo函式取得IP_ADAPTER_INDEX_MAP結構的指標。 (如需 GetInterfaceInfo 函式的說明,請參閱 使用 GetInterfaceInfo 管理介面) 。 建立用於錯誤檢查) 的 DWORD 物件
dwRetVal
(。 假設 GetInterfaceInfo 傳回的變數稱為pInfo
。DWORD dwRetVal;
如果已啟用 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
使用GetInterfaceInfo函式取得IP_ADAPTER_INDEX_MAP結構的指標。 (如需 GetInterfaceInfo 函式的說明,請參閱 使用 GetInterfaceInfo 管理介面) 。 宣告 DWORD 物件
dwRetVal
(在尚未宣告此變數時用於錯誤檢查) 。 假設 GetInterfaceInfo 傳回的變數稱為pInfo
。DWORD dwRetVal;
呼叫 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 位址