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 GetInterfaceInfo--Funktion füllt einen Zeiger auf eine IP_INTERFACE_INFO--Struktur mit Informationen über die Schnittstellen, die dem System zugeordnet sind.
So verwenden Sie getInterfaceInfo
Deklarieren Sie einen Zeiger auf ein IP_INTERFACE_INFO-Objekt, genannt
pInfo, und ein ULONG--Objekt, genanntulOutBufLen. Deklarieren Sie außerdem ein DWORD--Objekt, das alsdwRetValbezeichnet wird (wird für die Fehlerüberprüfung verwendet).ULONG ulOutBufLen; DWORD dwRetVal; unsigned int i; IP_INTERFACE_INFO* pInterfaceInfo;Weisen Sie Speicher für die Strukturen zu.
Anmerkung
Die Größe der
ulOutBufLenreicht nicht aus, um die Informationen zu enthalten. Weitere Informationen finden Sie im nächsten Schritt.pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(sizeof (IP_INTERFACE_INFO)); ulOutBufLen = sizeof(IP_INTERFACE_INFO);Rufen Sie zunächst GetInterfaceInfo- auf, um die erforderliche Größe in die variable
ulOutBufLenabzurufen.Anmerkung
Dieser Aufruf der Funktion soll fehlschlagen und wird verwendet, um sicherzustellen, dass die
ulOutBufLenVariable eine Größe angibt, die ausreicht, um alle anpInfozurückgegebenen Informationen zu halten. Dies ist ein gängiges Programmiermodell in der IP-Hilfsfunktion für Datenstrukturen und Funktionen dieses Typs.if (GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { free(pInterfaceInfo); pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(ulOutBufLen); }Rufen Sie GetInterfaceInfo ein zweites Mal mit allgemeiner Fehlerüberprüfung auf, und geben Sie den Wert an die DWORD- Variable
dwRetValzurück (für eine erweiterte Fehlerüberprüfung).if ((dwRetVal = GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen)) != NO_ERROR) { printf(" GetInterfaceInfo failed with error: %d\n", dwRetVal); }Wenn der Aufruf erfolgreich war, greifen Sie auf die Daten aus der
pInfoDatenstruktur zu.printf(" GetInterfaceInfo succeeded.\n"); printf(" Num Adapters: %ld\n\n", pInterfaceInfo->NumAdapters); for (i = 0; i < (unsigned int) pInterfaceInfo->NumAdapters; i++) { printf(" Adapter Index[%d]: %ld\n", i, pInterfaceInfo->Adapter[i].Index); printf(" Adapter Name[%d]: %ws\n\n", i, pInterfaceInfo->Adapter[i].Name); } }Anmerkung
Die %ws in der ersten Zeile kennzeichnet einen breiten String. Dies wird verwendet, da das Name Attribut der IP_ADAPTER_INDEX_MAP Struktur
Adapterein WCHAR-ist, bei dem es sich um eine Unicode-Zeichenfolge handelt.Geben Sie alle speicherzuweisungen für die pInfo--Struktur frei.
if (pInterfaceInfo) { free(pInterfaceInfo); pInterfaceInfo = NULL; }
Nächster Schritt: Verwalten von IP-Adressen mithilfe von GetIpAddrTable-
Vorheriger Schritt: Verwalten von Netzwerkadaptern mithilfe von GetAdaptersInfo-