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 GetAdaptersInfo-Funktion füllt einen Zeiger auf eine IP_ADAPTER_INFO-Struktur mit Informationen zu den Netzwerkadaptern, die dem System zugeordnet sind.
So verwenden Sie GetAdaptersInfo
Deklarieren Sie einen Zeiger auf eine IP_ADAPTER_INFO Variable namens pAdapterInfo und eine ULONG-Variable namens ulOutBufLen. Diese Variablen werden als Parameter an die GetAdaptersInfo-Funktion übergeben. Erstellen Sie auch eine DWORD-Variable namens dwRetVal (zur Fehlerüberprüfung).
IP_ADAPTER_INFO *pAdapterInfo; ULONG ulOutBufLen; DWORD dwRetVal;Zuordnen von Arbeitsspeicher für die Strukturen.
pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) ); ulOutBufLen = sizeof(IP_ADAPTER_INFO);Führen Sie einen ersten Aufruf von GetAdaptersInfo durch, um die erforderliche Größe für die ulOutBufLen-Variable abzurufen.
Hinweis
Dieser Aufruf der -Funktion soll fehlschlagen und wird verwendet, um sicherzustellen, dass die UlOutBufLen-Variable eine Größe angibt, die ausreicht, um alle an pAdapterInfo zurückgegebenen Informationen zu speichern. Dies ist ein gängiges Programmiermodell für Datenstrukturen und Funktionen dieses Typs.
if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) { free (pAdapterInfo); pAdapterInfo = (IP_ADAPTER_INFO *) malloc ( ulOutBufLen ); }Führen Sie einen zweiten Aufruf von GetAdaptersInfo durch, übergeben Sie pAdapterInfo und ulOutBufLen als Parameter, und führen Sie eine allgemeine Fehlerüberprüfung durch. Geben Sie den Wert an die DWORD-VariabledwRetVal zurück (für eine umfangreichere Fehlerüberprüfung).
if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) != ERROR_SUCCESS) { printf("GetAdaptersInfo call failed with %d\n", dwRetVal); }Wenn der Aufruf erfolgreich war, greifen Sie auf einige der Daten in der pAdapterInfo-Struktur zu.
PIP_ADAPTER_INFO pAdapter = pAdapterInfo; while (pAdapter) { printf("Adapter Name: %s\n", pAdapter->AdapterName); printf("Adapter Desc: %s\n", pAdapter->Description); printf("\tAdapter Addr: \t"); for (UINT i = 0; i < pAdapter->AddressLength; i++) { if (i == (pAdapter->AddressLength - 1)) printf("%.2X\n",(int)pAdapter->Address[i]); else printf("%.2X-",(int)pAdapter->Address[i]); } printf("IP Address: %s\n", pAdapter->IpAddressList.IpAddress.String); printf("IP Mask: %s\n", pAdapter->IpAddressList.IpMask.String); printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String); printf("\t***\n"); if (pAdapter->DhcpEnabled) { printf("\tDHCP Enabled: Yes\n"); printf("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String); } else printf("\tDHCP Enabled: No\n"); pAdapter = pAdapter->Next; }Geben Sie den für die pAdapterInfo-Struktur zugewiesenen Arbeitsspeicher frei.
if (pAdapterInfo) free(pAdapterInfo);
Nächster Schritt: Verwalten von Schnittstellen mithilfe von GetInterfaceInfo
Vorheriger Schritt: Abrufen von Informationen mithilfe von GetNetworkParams