Verwalten von DHCP-Leases mit IpReleaseAddress, IpRenewAddress
Die Funktionen IpReleaseAddress und IpRenewAddress werden verwendet, um die aktuelle DHCP-Lease (Dynamic Host Configuration Protocol) freizugeben und zu erneuern. Die IpReleaseAddress-Funktion gibt eine IPv4-Adresse frei, die zuvor über DHCP abgerufen wurde. Die IpRenewAddress-Funktion erneuert eine Lease für eine IPv4-Adresse, die zuvor über DHCP abgerufen wurde. Es ist üblich, diese beiden Funktionen zusammen zu verwenden, indem zuerst die Lease mit einem Aufruf von IpReleaseAddress freigegeben und dann die Lease mit einem Aufruf der IpRenewAddress-Funktion erneuert wird.
Wenn ein DHCP-Client zuvor eine DHCP-Lease abgerufen hat und IpReleaseAddress nicht vor der IpRenewAddress-Funktion aufgerufen wird, wird die DHCP-Clientanforderung an den DHCP-Server gesendet, der die anfängliche DHCP-Lease ausgestellt hat. Dieser DHCP-Server ist möglicherweise nicht verfügbar, oder die DHCP-Anforderung schlägt fehl. Wenn ein Host zuvor eine DHCP-Lease abgerufen hat und IpReleaseAddress vor der IpRenewAddress-Funktion aufgerufen wird, gibt der DHCP-Client zuerst die abgerufene IP-Adresse frei und sendet eine DHCP-Clientanforderung für eine Antwort von einem beliebigen verfügbaren DHCP-Server.
Hinweis
Die Funktionen IpReleaseAddress und IpRenewAddress erfordern, dass DHCP aktiviert ist, um ordnungsgemäß ausgeführt zu werden.
Die IpReleaseAddress-Funktion verwendet einen Zeiger auf eine IP_ADAPTER_INDEX_MAP-Struktur als einzigen Parameter. Um diesen Parameter abzurufen, rufen Sie zuerst GetInterfaceInfo auf. Hilfe zur GetInterfaceInfo-Funktion finden Sie unter Verwalten von Schnittstellen mithilfe von GetInterfaceInfo.
So verwenden Sie IpReleaseAddress
Rufen Sie mithilfe der GetInterfaceInfo-Funktion einen Zeiger auf eine IP_ADAPTER_INDEX_MAP-Struktur ab. (Hilfe zur GetInterfaceInfo-Funktion finden Sie unter Verwalten von Schnittstellen mithilfe von GetInterfaceInfo. Erstellen Sie ein DWORD-Objekt
dwRetVal
(wird für die Fehlerüberprüfung verwendet). Es wird davon ausgegangen, dass die von GetInterfaceInfo zurückgegebene Variable als bezeichnetpInfo
wird.DWORD dwRetVal;
Wenn DHCP aktiviert ist, rufen Sie die IpReleaseAddress-Funktion auf, und übergeben Sie die variable IP_ADAPTER_INDEX_MAP
Adapter
als Parameter. Suchen Sie nach allgemeinen Fehlern, und geben Sie ihren Wert an die DWORD-VariabledwRetVal
zurück (für eine umfangreichere Fehlerüberprüfung).Hinweis
Die GetAdaptersInfo-Funktion gibt einen Parameter zurück, mit dem überprüft werden kann, ob DHCP aktiviert ist, bevor diese Funktionen aufgerufen werden. Hilfe zu GetAdaptersInfo finden Sie unter Verwalten von Netzwerkadaptern mithilfe von GetAdaptersInfo.
if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Release succeeded.\n"); }
Hinweis
Es ist üblich, diese beiden Funktionen zusammen zu verwenden, indem sie die IpReleaseAddress-Funktion aufrufen und dann die IpRenewAddress-Funktion aufrufen und dieselbe Struktur wie der Parameter an beide Funktionen übergeben. Im folgenden Verfahren wird davon ausgegangen, dass die Funktionen nicht zusammen verwendet werden; Wenn die Funktionen jedoch zusammen verwendet werden, überspringen Sie Schritt 1.
So verwenden Sie IpRenewAddress
Rufen Sie mithilfe der GetInterfaceInfo-Funktion einen Zeiger auf eine IP_ADAPTER_INDEX_MAP-Struktur ab. (Hilfe zur GetInterfaceInfo-Funktion finden Sie unter Verwalten von Schnittstellen mithilfe von GetInterfaceInfo. Deklarieren Sie ein DWORD-Objekt
dwRetVal
(für die Fehlerüberprüfung), wenn diese Variable nicht deklariert wurde. Es wird davon ausgegangen, dass die von GetInterfaceInfo zurückgegebene Variable als bezeichnetpInfo
wird.DWORD dwRetVal;
Rufen Sie die IpRenewAddress-Funktion auf, und übergeben Sie die variable IP_ADAPTER_INDEX_MAP
Adapter
als Parameter. Suchen Sie nach allgemeinen Fehlern, und geben Sie ihren Wert an die DWORD-VariabledwRetVal
zurück (für eine umfangreichere Fehlerüberprüfung).if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Renew succeeded.\n"); }
Nächster Schritt: Verwalten von IP-Adressen mithilfe von AddIPAddress und DeleteIPAddress
Vorheriger Schritt: Verwalten von IP-Adressen mithilfe von GetIpAddrTable