IpReleaseAddress、IpRenewAddress を使用して DHCP リースを管理する
IpReleaseAddress 関数と IpRenewAddress 関数は、現在の動的ホスト構成プロトコル (DHCP) リースを解放および更新するために使用されます。 IpReleaseAddress 関数は、DHCP によって以前に取得した IPv4 アドレスを解放します。 IpRenewAddress 関数は、DHCP によって以前に取得した IPv4 アドレスのリースを更新します。 これらの 2 つの関数を一緒に使用するのが一般的です。まず 、IpReleaseAddress の呼び出しでリースを解放してから、 IpRenewAddress 関数の呼び出しでリースを更新します。
DHCP クライアントが以前に DHCP リースを取得していて、IpRenewAddress 関数の前に IpReleaseAddress が呼び出されない場合、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"); }
注意
これらの 2 つの関数を一緒に使用し、 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 アドレスの管理