Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

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.

[

Du hast anscheinend Iphlpapi.lib nicht hinzu gelinkt. Das kannst du über die Projekteinstellungen oder ein #pragma comment(lib, "Iphlpapi.lib") machen.

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

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.

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.