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 GetIpAddrTable-Funktion füllt einen Zeiger auf eine MIB_IPADDRTABLE-Struktur mit Informationen zu den aktuellen IP-Adressen, die dem System zugeordnet sind.
So verwenden Sie GetIpAddrTable
Deklarieren Sie einen Zeiger auf ein MIB_IPADDRTABLE-Objekt namens pIPAddrTable und ein DWORD-Objekt namens dwSize. Diese Variablen werden als Parameter an die GetIpAddrTable-Funktion übergeben. Erstellen Sie auch eine DWORD-Variable namens dwRetVal (wird für die Fehlerüberprüfung verwendet).
MIB_IPADDRTABLE *pIPAddrTable; DWORD dwSize = 0; DWORD dwRetVal;Ordnen Sie Arbeitsspeicher für die Struktur zu.
Hinweis
Die Größe von dwSize reicht nicht aus, um die Informationen aufzunehmen. Mehr dazu finden Sie im nächsten Schritt.
pIPAddrTable = (MIB_IPADDRTABLE*) malloc( sizeof(MIB_IPADDRTABLE) );Führen Sie einen ersten Aufruf von GetIpAddrTable aus, um die erforderliche Größe in die dwSize-Variable abzurufen.
Hinweis
Dieser Aufruf der Funktion ist für einen Fehler gedacht und wird verwendet, um sicherzustellen, dass die dwSize-Variable eine Größe angibt, die ausreicht, um alle an pIPAddrTable zurückgegebenen Informationen zu speichern. Dies ist ein gängiges Programmiermodell für Datenstrukturen und Funktionen dieses Typs.
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) { free( pIPAddrTable ); pIPAddrTable = (MIB_IPADDRTABLE *) malloc ( dwSize ); }Führen Sie einen zweiten Aufruf von GetIpAddrTable mit allgemeiner Fehlerüberprüfung durch, und geben Sie ihren Wert an die DWORD-VariabledwRetVal zurück (für eine erweiterte Fehlerüberprüfung).
if ( (dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) != NO_ERROR ) { printf("GetIpAddrTable call failed with %d\n", dwRetVal); }Wenn der Aufruf erfolgreich war, greifen Sie über die Datenstruktur pIPAddrTable auf die Daten zu.
printf("IP Address: %ld\n", pIPAddrTable->table[0].dwAddr); printf("IP Mask: %ld\n", pIPAddrTable->table[0].dwMask); printf("IF Index: %ld\n", pIPAddrTable->table[0].dwIndex); printf("Broadcast Addr: %ld\n", pIPAddrTable->table[0].dwBCastAddr); printf("Re-assembly size: %ld\n", pIPAddrTable->table[0].dwReasmSize);Geben Sie den für die pIPAddrTable-Struktur zugewiesenen Arbeitsspeicher frei.
if (pIPAddrTable) free(pIPAddrTable);
Hinweis
Die DWORD-ObjektedwAddr und dwMask werden als numerische Werte in Hostbytereihenfolge und nicht als Netzwerkbytereihenfolge zurückgegeben. Diese Werte sind keine gepunkteten IP-Adressen.
Nächster Schritt: Verwalten von DHCP-Leases mithilfe von IpReleaseAddress und IpRenewAddress
Vorheriger Schritt: Verwalten von Schnittstellen mithilfe von GetInterfaceInfo