Hi Conor Check out this link http://rvelthuis.de/articles/articles-convert.html
Have you considered using h2pas in Free Pascal? or SWIG for Delphi http://www.wmhelp.com/download/swig-delphi.rar Todd. > I'm needing to call a Windows API function introduced in Vista from my > Delphi app, but I don't have any Delphi headers which describe the > function. > > Related functions are already documented in the JEDI Windows API > library, but not this function. > > My C++ is almost non-existent, and I'm struggling to work out the Delphi > definitions that correspond to the function and it's parameter as > documented on MSDN. > >>From http://msdn.microsoft.com/en-us/library/aa814417.aspx > > NETIOAPI_API GetIpInterfaceEntry( > __inout PMIB_IPINTERFACE_ROW Row > ); > > typedef struct _MIB_IPINTERFACE_ROW { > ADDRESS_FAMILY Family; > NET_LUID InterfaceLuid; > NET_IFINDEX InterfaceIndex; > ULONG MaxReassemblySize; > ULONG64 InterfaceIdentifier; > ULONG MinRouterAdvertisementInterval; > ULONG MaxRouterAdvertisementInterval; > BOOLEAN AdvertisingEnabled; > BOOLEAN ForwardingEnabled; > BOOLEAN WeakHostSend; > BOOLEAN WeakHostReceive; > BOOLEAN UseAutomaticMetric; > BOOLEAN UseNeighborUnreachabilityDetection; > BOOLEAN ManagedAddressConfigurationSupported; > BOOLEAN OtherStatefulConfigurationSupported; > BOOLEAN AdvertiseDefaultRoute; > NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior; > ULONG DadTransmits; > ULONG BaseReachableTime; > ULONG RetransmitTime; > ULONG PathMtuDiscoveryTimeout; > NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior; > ULONG LinkLocalAddressTimeout; > ULONG ZoneIndices[ScopeLevelCount]; > ULONG SitePrefixLength; > ULONG Metric; > ULONG NlMtu; > BOOLEAN Connected; > BOOLEAN SupportsWakeUpPatterns; > BOOLEAN SupportsNeighborDiscovery; > BOOLEAN SupportsRouterDiscovery; > ULONG ReachableTime; > NL_INTERFACE_OFFLOAD_ROD TransmitOffload; > NL_INTERFACE_OFFLOAD_ROD ReceiveOffload; > BOOLEAN DisableDefaultRoutes; > }MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW; > > Among other bits, the bit I'm struggling with at the minute is the > ZoneIndices[ScopeLevelCount] field; I can't work out what size the array > is supposed to be. > > This is what I've defined so far, although I haven't worked out the > enums in the original C++ definition yet. I'll be explicitly loading > the Windows DLL on Vista and getting the address of the new function to > call. > > PMIB_IPINTERFACE_ROW = ^MIB_IPINTERFACE_ROW; > {$EXTERNALSYM PMIB_IPINTERFACE_ROW} > _MIB_IPINTERFACE_ROW = record > Family: ADDRESS_FAMILY; > InterfaceLuid: NET_LUID; > InterfaceIndex: NET_IFINDEX; > MaxReassemblySize, > InterfaceIdentifier, > MinRouterAdvertisementInterval, > MaxRouterAdvertisementInterval: Cardinal; > AdvertisingEnabled, > ForwardingEnabled, > WeakHostSend, > WeakHostReceive, > UseAutomaticMetric, > UseNeighborUnreachabilityDetection, > ManagedAddressConfigurationSupported, > OtherStatefulConfigurationSupported, > AdvertiseDefaultRoute: LongBool; > RouterDiscoveryBehavior: NL_ROUTER_DISCOVERY_BEHAVIOR; > DadTransmits, > BaseReachableTime, > RetransmitTime, > PathMtuDiscoveryTimeout: Cardinal; > LinkLocalAddressBehavior: NL_LINK_LOCAL_ADDRESS_BEHAVIOR; > LinkLocalAddressTimeout, > ZoneIndices[ScopeLevelCount], > SitePrefixLength, > Metric, > NlMtu: Cardinal; > Connected, > SupportsWakeUpPatterns, > SupportsNeighborDiscovery, > SupportsRouterDiscovery: LongBool; > ReachableTime: Cardinal; > TransmitOffload: NL_INTERFACE_OFFLOAD_ROD; > ReceiveOffload: NL_INTERFACE_OFFLOAD_ROD; > DisableDefaultRoutes: LongBool; > end; > {$EXTERNALSYM _MIB_IPINTERFACE_ROW} > MIB_IPINTERFACE_ROW = _MIB_IPINTERFACE_ROW; > {$EXTERNALSYM MIB_IPINTERFACE_ROW} > TMibIpInterfaceRow = MIB_IPINTERFACE_ROW; > PMibIpInterfaceRow = PMIB_IPINTERFACE_ROW; > > const > iphlpapilib = 'iphlpapi.dll'; > > var > HIpHlpApi: THandle = 0; > GetIpInterfaceEntry: function(const pArpEntry: MIB_IPINTERFACE_ROW): > LongInt; stdcall; > {$EXTERNALSYM GetIpInterfaceEntry} > > Does anybody out there have suggestions or tips/tricks for translating a > function definition like this? > > Many thanks, > > Conor > > > _______________________________________________ > NZ Borland Developers Group - Delphi mailing list > Post: delphi@delphi.org.nz > Admin: http://delphi.org.nz/mailman/listinfo/delphi > Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: > unsubscribe > _______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe