![]() |
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 ![]() 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:
Wobei ich weder weiß, was ich mit dem *Row machen soll, noch wo ich die Datentypen hernehmen soll.
function CreateUnicastIpAddressEntry(const Row: MIB_UNICASTIPADDRESS_ROW): NETIOAPI_API; stdcall;
{$EXTERNALSYM CreateUnicastIpAddressEntry} 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? |
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:
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.
PMIB_UNICASTIPADDRESS_ROW = ^MIB_UNICASTIPADDRESS_ROW;
function CreateUnicastIpAddressEntry(const Row: PMIB_UNICASTIPADDRESS_ROW): NETIOAPI_API; stdcall; Ich schau mal, ob ich das finde, was ich meine. |
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
![]() |
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.
|
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?
|
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. ;-)
|
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... |
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):
![]() // EDIT: Informationen zur Übersetzung findest du hier, zusammen mit dem entsprechenden Tool (ganz unten auf der Seite): ![]() |
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:
Was ist denn nun NETIOAPI_API? Und was SOCKADDR_INET, NET_LUID, NET_IFINDEX, NL_PREFIX_ORIGIN, NL_SUFFIX_ORIGIN, NL_DAD_STATE?
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; Ich habe keine Ahnung, wo ich diese Deklarationen herzaubern soll. Hilfe... |
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 08:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz