Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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.
Geschrieben

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

Geschrieben
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.
Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...