matthiasr Geschrieben 8. April 2004 Geschrieben 8. April 2004 Hallo, ich möchte mit VS6.0 und ner einfachen Konsonlenanwendung die IP-Adresse auslesen. Nun bin ich schon auf GetAdaptersInfo gestoßen und wollte die dazugehörigen Files einbinden Header: Declared in Iphlpapi.h Library: Use Iphlpapi.lib Leider finde ich diese aber weder auf meinen CD's noch auf meinem Rechener. Wie kann ich diese Funktion verfügbar machen? Danke Zitieren
Klotzkopp Geschrieben 8. April 2004 Geschrieben 8. April 2004 Diese Dateien sind Bestandteil des Platform SDK. Zitieren
matthiasr Geschrieben 9. April 2004 Autor Geschrieben 9. April 2004 Hallo, also, ich habe das SDK heruntergeladen und konnte den Header einbinden. Nun habe ich allerdings zwei Fragen. Leider konnte ich das SDK nicht "nur" herunterladen, nein es musste gleich installiert werden. Ich möchte dies natürlich nur einmal machen und möchte wissen was ich sichern muss um beim nächsten Aufsetzten das SDK wieder zu installieren. Zum zweiten habe ich nach dem einbinden einige Fehlermeldunge bekommen die ich mir nicht erkläaren kann. Die Fehlermeldungen treten bei der Funktion GetIcmpStatisticsEx( OUT PMIB_ICMP_EX pStats, IN DWORD dwFamily ); auf, und lauten "error C2065: 'PMIB_ICMP_EX' : nichtdeklarierter Bezeichner" "error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'pStats'" "warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert" "error C2059: Syntaxfehler : ')'" Diese Fehlermeldungen treten alle in der iphlpape.h auf, diese habe ich ja aber von Microsoft heruntergeladen??? Ich werde die Funktion fürs erste auskommentieren, aber das ist auch keine Lösung. Matthias Zitieren
Klotzkopp Geschrieben 9. April 2004 Geschrieben 9. April 2004 Original geschrieben von matthiasr Leider konnte ich das SDK nicht "nur" herunterladen, nein es musste gleich installiert werden. Ich möchte dies natürlich nur einmal machen und möchte wissen was ich sichern muss um beim nächsten Aufsetzten das SDK wieder zu installieren.Ich glaube nicht, dass das geht so einfach geht. Du kannst das PSDK aber auch komplett runterladen und dann lokal installieren: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm "error C2065: 'PMIB_ICMP_EX' : nichtdeklarierter Bezeichner" "error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'pStats'" "warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert" "error C2059: Syntaxfehler : ')'" Stehen die Platform SDK-Verzeichnisse ganz oben in der Liste der Include- und Bibliotheksverzeichnisse? Falls nicht, liegt es daran. Zitieren
matthiasr Geschrieben 9. April 2004 Autor Geschrieben 9. April 2004 Ok, die Fehlermeldungen habe ich weggebracht, aber was hat das verschieben gebracht? Nun habe ich allerdings die Fehlermeldungen Nichtaufgeloestes externes Symbol _GetAdaptersInfo@8 1 unaufgeloeste externe Verweise Wenn ich die Funktion GetAdaptersInfo auskommentiere, dann kommen die Fehlermeldungen nicht mehr? Vielleicht stelle ich mich nur an, aber ich weis mir keinen Rat. Danke Matthias Zitieren
Klotzkopp Geschrieben 9. April 2004 Geschrieben 9. April 2004 Original geschrieben von matthiasr Ok, die Fehlermeldungen habe ich weggebracht, aber was hat das verschieben gebracht?Das Platform SDK enthält nicht nur neue Dateien, sondern auch Ersatz bzw. Updates für bestehende Header und Bibliotheken. VC++ durchsucht die Verzeichnisse in der eingestellten Reihenfolge. Wenn du die PSDK-Verzeichnisse nicht nach oben schiebst, werden weiter die alten Versionen verwendet. Das führt zu solchen Fehlern wie dem, der bei dir aufgetreten ist. Nichtaufgeloestes externes Symbol _GetAdaptersInfo@8 1 unaufgeloeste externe Verweise Du hast anscheinend Iphlpapi.lib nicht hinzu gelinkt. Das kannst du über die Projekteinstellungen oder ein #pragma comment(lib, "Iphlpapi.lib") machen. Zitieren
matthiasr Geschrieben 9. April 2004 Autor Geschrieben 9. April 2004 [ Du hast anscheinend Iphlpapi.lib nicht hinzu gelinkt. Das kannst du über die Projekteinstellungen oder ein #pragma comment(lib, "Iphlpapi.lib") machen. Zitieren
matthiasr Geschrieben 9. April 2004 Autor Geschrieben 9. April 2004 Leider hakt es schon wieder. IP_ADAPTER_INFO *pAdapterInfo = 0; ULONG uSize = 10000; DWORD& dwResult = uSize; PULONG pOutBufLen = &uSize; dwResult = GetAdaptersInfo(pAdapterInfo, pOutBufLen); Dies ist mein Code. Nun bekomme ich allerdings immer einen ERROR_BUFFER_OVERFLOW bei der Funktion GetAdaptersInfo. Das ganze sieht vielleicht etwas unbeholfen aus abe soweit würde es ja auch funktionieren. Matthias Zitieren
Klotzkopp Geschrieben 9. April 2004 Geschrieben 9. April 2004 Du übergibst in pAdapterInfo einen Nullzeiger, behauptest aber, es sei ein Zeiger auf einen 10.000 Byte großen Puffer. Das kann nicht funktionieren. Mach's doch einfach so: char buffer[2000]; IP_ADAPTER_INFO* pAdapterInfo = reinterpret_cast<IP_ADAPTER_INFO*>(buffer); ULONG uSize = sizeof(buffer); DWORD dwResult = GetAdaptersInfo(pAdapterInfo, &uSize); [/CODE] Oder mach's wie in dem MSDN-Beispiel und reservier den Puffer mit malloc. Zitieren
matthiasr Geschrieben 10. April 2004 Autor Geschrieben 10. April 2004 Wenn ich die MSDN richtig verstanden habe, castest Du den Pointer, aber wieso von IP_ADAPTER_INFO* in IP_ADAPTER_INFO*, versteh ich nicht ganz. IP_ADAPTER_INFO* pAdapterInfo = reinterpret_cast<IP_ADAPTER_INFO*>(buffer); Oder mach's wie in dem MSDN-Beispiel und reservier den Puffer mit malloc. Zitieren
Guybrush Threepwood Geschrieben 10. April 2004 Geschrieben 10. April 2004 Das liegt daran das CurrentIpAddress im Moment nur für evtl. spätere Zwecke eingebaut ist und noch nicht verwendet wird. Versuch mal über IpAddressList an die IP zu kommen. Zitieren
matthiasr Geschrieben 11. April 2004 Autor Geschrieben 11. April 2004 Hallo, vielleicht umständlich, aber es hat gecklappt. DWORD dwResult = GetAdaptersInfo(pAdapterInfo, &uSize); char *cIP = (char*)&pAdapterInfo->IpAddressList.IpAddress; Wenn ich noch was verbessern könnte dann würde ich mich freuen wenn Ihr mir noch einen Tipp geben könntent. Ansonsten vielen Dank für Eure Hilfe, hoffe das ich auch mal was tun kann für andere. Matthias Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.