Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die IpRenewAddress-Funktion erneuert eine Lease für eine IPv4-Adresse, die zuvor über dhcp (Dynamic Host Configuration Protocol) abgerufen wurde.
Syntax
IPHLPAPI_DLL_LINKAGE DWORD IpRenewAddress(
[in] PIP_ADAPTER_INDEX_MAP AdapterInfo
);
Parameter
[in] AdapterInfo
Ein Zeiger auf eine IP_ADAPTER_INDEX_MAP-Struktur , die den Adapter angibt, der der zu erneuernden IP-Adresse zugeordnet ist.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird der Rückgabewert NO_ERROR.
Wenn die Funktion fehlschlägt, verwenden Sie FormatMessage , um die Nachrichtenzeichenfolge für den zurückgegebenen Fehler abzurufen.
| Rückgabecode | Beschreibung |
|---|---|
|
Einer der Parameter ist ungültig. Dieser Fehler wird zurückgegeben, wenn der AdapterInfo-ParameterNULL ist oder wenn der Name-Member der PIP_ADAPTER_INDEX_MAP Struktur, auf die vom AdapterInfo-Parameter verwiesen wird, ungültig ist. |
|
Während der Anforderung an DHCP für die Verlängerung der IPv4-Adresse ist eine Ausnahme aufgetreten. |
|
Verwenden Sie FormatMessage , um die Nachrichtenzeichenfolge für den zurückgegebenen Fehler abzurufen. |
Hinweise
Die IpRenewAddress-Funktion ist IPv4-spezifisch und erneuert nur eine IPv4-Adresse, die zuvor über das Dynamic Host Configuration Protocol (DHCP) abgerufen wurde. Das Name-Element der IP_ADAPTER_INDEX_MAP Struktur, auf die der AdapterInfo-Parameter verweist, ist das einzige Element, das verwendet wird, um die zu erneuernde DHCP-Adresse zu bestimmen.
Ein Array von IP_ADAPTER_INDEX_MAP Strukturen wird in der IP_INTERFACE_INFO-Struktur von der GetInterfaceInfo-Funktion zurückgegeben. Die vonGetInterfaceInfo zurückgegebene IP_INTERFACE_INFO-Struktur enthält mindestens eine IP_ADAPTER_INDEX_MAP-Struktur , auch wenn das NumAdapters-Element der IP_INTERFACE_INFO-Struktur angibt, dass keine Netzwerkadapter mit IPv4 aktiviert sind. Wenn das NumAdapters-Element der vonGetInterfaceInfo zurückgegebenen IP_INTERFACE_INFO-Struktur 0 ist, ist der Wert der Elemente der einzelnen IP_ADAPTER_INDEX_MAP Struktur, die in der IP_INTERFACE_INFO-Struktur zurückgegeben werden, undefiniert.
Wenn das Name-Element der IP_ADAPTER_INDEX_MAP Struktur, auf die vom AdapterInfo-Parameter verwiesen wird , NULL ist, gibt die IpRenewAddress-FunktionERROR_INVALID_PARAMETER zurück.
Es sind keine Funktionen zum Freigeben oder Verlängern einer IPv6-Adresse verfügbar. Dies kann nur durch Ausführen des Befehls Ipconfig erfolgen:
ipconfig /release6
ipconfig /renew6
Beispiele
Im folgenden Beispiel wird die Liste der Netzwerkadapter abgerufen, für die IPv4 auf dem lokalen System aktiviert ist. Anschließend wird die IPv4-Adresse für den ersten Adapter in der Liste freigegeben und erneuert.
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment(lib, "iphlpapi.lib")
/* Note: could also use malloc() and free() */
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
void main()
{
// Before calling IpReleaseAddress and IpRenewAddress we use
// GetInterfaceInfo to retrieve a handle to the adapter
PIP_INTERFACE_INFO pInfo;
pInfo = (IP_INTERFACE_INFO *) MALLOC( sizeof(IP_INTERFACE_INFO) );
ULONG ulOutBufLen = 0;
DWORD dwRetVal = 0;
// Make an initial call to GetInterfaceInfo to get
// the necessary size into the ulOutBufLen variable
if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) {
FREE(pInfo);
pInfo = (IP_INTERFACE_INFO *) MALLOC (ulOutBufLen);
}
// Make a second call to GetInterfaceInfo to get the
// actual data we want
if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) {
printf("\tAdapter Name: %ws\n", pInfo->Adapter[0].Name);
printf("\tAdapter Index: %ld\n", pInfo->Adapter[0].Index);
printf("\tNum Adapters: %ld\n", pInfo->NumAdapters);
}
else if (dwRetVal == ERROR_NO_DATA) {
printf("There are no network adapters with IPv4 enabled on the local system\n");
FREE(pInfo);
pInfo = NULL;
return;
}
else {
printf("GetInterfaceInfo failed.\n");
LPVOID lpMsgBuf;
if (FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwRetVal,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL )) {
printf("\tError: %s", lpMsgBuf);
}
LocalFree( lpMsgBuf );
return;
}
// Call IpReleaseAddress and IpRenewAddress to release and renew
// the IP address on the first network adapter returned
// by the call to GetInterfaceInfo.
if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) {
printf("IP release succeeded.\n");
}
else {
printf("IP release failed.\n");
}
if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) {
printf("IP renew succeeded.\n");
}
else {
printf("IP renew failed.\n");
}
/* Free allocated memory no longer needed */
if (pInfo) {
FREE(pInfo);
pInfo = NULL;
}
}
Anforderungen
| Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
| Zielplattform | Windows |
| Kopfzeile | iphlpapi.h |
| Bibliothek | Iphlpapi.lib |
| DLL | Iphlpapi.dll |