Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi IP Helper Functions (IpHlpApi) für Vista? (https://www.delphipraxis.net/131167-ip-helper-functions-iphlpapi-fuer-vista.html)

CodeX 19. Mär 2009 23:46


IP Helper Functions (IpHlpApi) für Vista?
 
Ich benötige einige IPv6 Funktionen, die mit Vista neu hinzugekommen sind und in der IpHlpApi vorhanden sind.
Leider scheint bei den Jedis noch die alte Version der JwaIpHlpApi.pas zu bestehen, wo die neuen Funktionen und Datentypen fehlen.

Also konkret geht es beispielsweise um folgende Funktionen:
CreateAnycastIpAddressEntry
CreateUnicastIpAddressEntry
DeleteAnycastIpAddressEntry
DeleteUnicastIpAddressEntry
GetAnycastIpAddressEntry
GetAnycastIpAddressTable
GetMulticastIpAddressEntry
GetMulticastIpAddressTable
GetUnicastIpAddressEntry
GetUnicastIpAddressTable
InitializeUnicastIpAddressEntry
NotifyStableUnicastIpAddressTable
SetUnicastIpAddressEntry

siehe MSDN IP Helper Functions


Ich habe auch versucht, die Sachen selber zu übersetzen, scheitere aber aufgrund mangelnder Erfahrung darin.

Also irgendwie so in der Art nehme ich an:
Code:
NETIOAPI_API CreateUnicastIpAddressEntry(
  __in const MIB_UNICASTIPADDRESS_ROW *Row
);
Delphi-Quellcode:
function CreateUnicastIpAddressEntry(const Row: MIB_UNICASTIPADDRESS_ROW): NETIOAPI_API; stdcall;
{$EXTERNALSYM CreateUnicastIpAddressEntry}
Wobei ich weder weiß, was ich mit dem *Row machen soll, noch wo ich die Datentypen hernehmen soll.

Daher meine Fragen:
1. Gibt es irgendwo eine aktuelle (Jwa)IpHlpApi.pas, wo diese Funktionen und Datentypen enthalten sind? Oder hat sich jemand schon mal die Mühe gemacht und diese Sachen übersetzt?
2. Falls nicht, kann mir jemand beim Übersetzen von ein paar der Funktionen helfen?

jaenicke 20. Mär 2009 00:09

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Die Datentypen musst du natürlich ebenfalls übersetzen. Das * steht für einen Pointer auf den Datentyp. In Delphi also:
Delphi-Quellcode:
PMIB_UNICASTIPADDRESS_ROW = ^MIB_UNICASTIPADDRESS_ROW;

function CreateUnicastIpAddressEntry(const Row: PMIB_UNICASTIPADDRESS_ROW): NETIOAPI_API; stdcall;
Gab es da nicht auch ein automatisches Übersetzungstool, in das du nur die Headerdatei aus dem SDK füttern musst? Danach sind dann zwar immer noch Feinheiten zu erledigen, aber vieles macht das Tool.
Ich schau mal, ob ich das finde, was ich meine.

CodeX 20. Mär 2009 00:47

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Das wäre natürlich schön, wenns automatisch gehen würde. Denn mit den Datentypen wird das ja noch verworrener. SOCKADDR_INET, NET_LUID, NL_PREFIX_ORIGIN, ...? Ach herrje...

jaenicke 20. Mär 2009 00:55

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Als Vorlage benutzt du doch hoffentlich die SDK-Header und nicht die Dokumentation? Denn da hast du ja direkt alles aus einen Blick.

CodeX 20. Mär 2009 01:48

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Das SDK (6.1.6000.16384.10) habe ich sogar installiert, aber habe keinen Mehrwert gesehen, das dort nachzuschauen statt bei MSDN. Hm, ist mir dadurch jetzt viel entgangen?

jaenicke 20. Mär 2009 02:53

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Entgangen nicht, aber da hast du alles auf einen Blick. Möglich ist natürlich auch die Dokumentation als Quelle, aber ich finde das ist sehr viel umständlicher als das einfach aus der Datei zu kopieren und zu übersetzen. ;-)

CodeX 20. Mär 2009 03:07

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Hey, Kopieren krieg ich hin! :D Am Übersetzen scheiterts... :(

Jetzt wollte ich das auch im SDK anchauen, finde aber die Datei Netioapi.h nicht und in der Iphlpapi.h stehen die nicht. Fehlt mir was oder habe ich doch nicht das aktuellste SDK? Die .NET Docu habe ich nicht mitinstalliert, aber das wird ja hoffentlich nicht der Grund sein...

jaenicke 20. Mär 2009 03:42

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Dann hast du nicht die Version für Windows Vista. Diese bekommst du hier (Windows SDK for Windows Server 2008 and .NET Framework 3.5, ca. 1,3 GiB):
http://www.microsoft.com/downloads/d...displaylang=en

// EDIT:
Informationen zur Übersetzung findest du hier, zusammen mit dem entsprechenden Tool (ganz unten auf der Seite):
http://www.delphi-jedi.org/api-howto.html

CodeX 20. Mär 2009 22:24

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Also ich komme leider nicht weiter. Das Tool zum Headerübersetzen tuts irgendwie nicht so wirklich. Habe mal versucht netioapi.h damit zu übersetzen. Im Ergebnis sind die ersten paar Zeilen vorhanden, dann ungefähr 90% leere Zeilen und dann am Schluss noch die implementation mit der procedure LoadDLL;. Kannst Du das bestätigen?

Manuell komme ich auch nach langem Suchen und Probieren nicht weiter. :(

Delphi-Quellcode:
type
  PMIB_UNICASTIPADDRESS_ROW = ^MIB_UNICASTIPADDRESS_ROW;
  MIB_UNICASTIPADDRESS_ROW = record
  Address           : SOCKADDR_INET;
  InterfaceLuid     : NET_LUID;
  InterfaceIndex    : NET_IFINDEX;
  PrefixOrigin      : NL_PREFIX_ORIGIN;
  SuffixOrigin      : NL_SUFFIX_ORIGIN;
  ValidLifetime     : ULONG;
  PreferredLifetime : ULONG;
  OnLinkPrefixLength : UINT8;
  SkipAsSource      : BOOLEAN;
  DadState          : NL_DAD_STATE;
  ScopeId           : array [0..MAX_SCOPE_ID_LEN + 3] of Char; // SCOPE_ID;
  CreationTimeStamp : LARGE_INTEGER;
  end;

function CreateUnicastIpAddressEntry(const Row: PMIB_UNICASTIPADDRESS_ROW): NETIOAPI_API; stdcall;
Was ist denn nun NETIOAPI_API? Und was SOCKADDR_INET, NET_LUID, NET_IFINDEX, NL_PREFIX_ORIGIN, NL_SUFFIX_ORIGIN, NL_DAD_STATE?
Ich habe keine Ahnung, wo ich diese Deklarationen herzaubern soll. Hilfe...

jaenicke 21. Mär 2009 00:32

Re: IP Helper Functions (IpHlpApi) für Vista?
 
Schau einfach oben nach welche Headerdateien eingebunden wurden, in einer davon steht das dann. Mit einer C++-IDE lässt sich das auch direkt verfolgen.
Du kannst auch einfach mit Notepad++ z.B. in allen Dateien im Include Verzeichnis nach einer Definition suchen.

SOCKADDR_INET ist z.B. in ws2ipdef.h definiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz