jwaiphlpapi.pas 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232
  1. {******************************************************************************}
  2. { }
  3. { Internet Protocol Helper API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: iphlpapi.h, released August 2000. The original Pascal }
  9. { code is: IpHlpApi.pas, released September 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Contributor(s): John C. Penman (jcp att craiglockhart dott com) }
  16. { Vladimir Vassiliev (voldemarv att hotpop dott com) }
  17. { }
  18. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  19. { }
  20. { You may retrieve the latest version of this file at the Project JEDI }
  21. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  22. { }
  23. { The contents of this file are used with permission, subject to the Mozilla }
  24. { Public License Version 1.1 (the "License"); you may not use this file except }
  25. { in compliance with the License. You may obtain a copy of the License at }
  26. { http://www.mozilla.org/MPL/MPL-1.1.html }
  27. { }
  28. { Software distributed under the License is distributed on an "AS IS" basis, }
  29. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  30. { the specific language governing rights and limitations under the License. }
  31. { }
  32. { Alternatively, the contents of this file may be used under the terms of the }
  33. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  34. { provisions of the LGPL License are applicable instead of those above. }
  35. { If you wish to allow use of your version of this file only under the terms }
  36. { of the LGPL License and not to allow others to use your version of this file }
  37. { under the MPL, indicate your decision by deleting the provisions above and }
  38. { replace them with the notice and other provisions required by the LGPL }
  39. { License. If you do not delete the provisions above, a recipient may use }
  40. { your version of this file under either the MPL or the LGPL License. }
  41. { }
  42. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  43. { }
  44. {******************************************************************************}
  45. // $Id: JwaIpHlpApi.pas,v 1.11 2007/09/05 11:58:50 dezipaitor Exp $
  46. {$IFNDEF JWA_OMIT_SECTIONS}
  47. {$IFNDEF FPC_DOTTEDUNITS}
  48. unit JwaIpHlpApi;
  49. {$ENDIF FPC_DOTTEDUNITS}
  50. {$WEAKPACKAGEUNIT}
  51. {$ENDIF JWA_OMIT_SECTIONS}
  52. {$HPPEMIT ''}
  53. {$HPPEMIT '#include "iphlpapi.h"'}
  54. {$HPPEMIT ''}
  55. {$IFNDEF JWA_OMIT_SECTIONS}
  56. {$I jediapilib.inc}
  57. {$I jedi.inc} //used for D5 compiling
  58. interface
  59. {$IFDEF FPC_DOTTEDUNITS}
  60. uses
  61. WinApi.Jedi.Ipexport, WinApi.Jedi.Iprtrmib, WinApi.Jedi.Iptypes, WinApi.Jedi.Wintype, WinApi.Jedi.Winbase, WinApi.Jedi.Winsock;
  62. {$ELSE FPC_DOTTEDUNITS}
  63. uses
  64. JwaIpExport, JwaIpRtrMib, JwaIpTypes, JwaWinType, JwaWinBase, JwaWinSock;
  65. {$ENDIF FPC_DOTTEDUNITS}
  66. {$ENDIF JWA_OMIT_SECTIONS}
  67. {$IFNDEF JWA_IMPLEMENTATIONSECTION}
  68. //////////////////////////////////////////////////////////////////////////////
  69. // //
  70. // IPRTRMIB.H has the definitions of the strcutures used to set and get //
  71. // information //
  72. // //
  73. //////////////////////////////////////////////////////////////////////////////
  74. // #include <iprtrmib.h>
  75. // #include <ipexport.h>
  76. // #include <iptypes.h>
  77. //////////////////////////////////////////////////////////////////////////////
  78. // //
  79. // The GetXXXTable APIs take a buffer and a size of buffer. If the buffer //
  80. // is not large enough, the APIs return ERROR_INSUFFICIENT_BUFFER and //
  81. // *pdwSize is the required buffer size //
  82. // The bOrder is a BOOLEAN, which if TRUE sorts the table according to //
  83. // MIB-II (RFC XXXX) //
  84. // //
  85. //////////////////////////////////////////////////////////////////////////////
  86. //////////////////////////////////////////////////////////////////////////////
  87. // //
  88. // Retrieves the number of interfaces in the system. These include LAN and //
  89. // WAN interfaces //
  90. // //
  91. //////////////////////////////////////////////////////////////////////////////
  92. function GetNumberOfInterfaces(var pdwNumIf: DWORD): DWORD; stdcall;
  93. {$EXTERNALSYM GetNumberOfInterfaces}
  94. //////////////////////////////////////////////////////////////////////////////
  95. // //
  96. // Gets the MIB-II ifEntry //
  97. // The dwIndex field of the MIB_IFROW should be set to the index of the //
  98. // interface being queried //
  99. // //
  100. //////////////////////////////////////////////////////////////////////////////
  101. function GetIfEntry(pIfRow: PMIB_IFROW): DWORD; stdcall;
  102. {$EXTERNALSYM GetIfEntry}
  103. //////////////////////////////////////////////////////////////////////////////
  104. // //
  105. // Gets the MIB-II IfTable //
  106. // //
  107. //////////////////////////////////////////////////////////////////////////////
  108. function GetIfTable(pIfTable: PMIB_IFTABLE; var pdwSize: ULONG; bOrder: BOOL): DWORD; stdcall;
  109. {$EXTERNALSYM GetIfTable}
  110. //////////////////////////////////////////////////////////////////////////////
  111. // //
  112. // Gets the Interface to IP Address mapping //
  113. // //
  114. //////////////////////////////////////////////////////////////////////////////
  115. function GetIpAddrTable(pIpAddrTable: PMIB_IPADDRTABLE; var pdwSize: ULONG; bOrder: BOOL): DWORD; stdcall;
  116. {$EXTERNALSYM GetIpAddrTable}
  117. //////////////////////////////////////////////////////////////////////////////
  118. // //
  119. // Gets the current IP Address to Physical Address (ARP) mapping //
  120. // //
  121. //////////////////////////////////////////////////////////////////////////////
  122. function GetIpNetTable(pIpNetTable: PMIB_IPNETTABLE; var pdwSize: ULONG; bOrder: BOOL): DWORD; stdcall;
  123. {$EXTERNALSYM GetIpNetTable}
  124. //////////////////////////////////////////////////////////////////////////////
  125. // //
  126. // Gets the IP Routing Table (RFX XXXX) //
  127. // //
  128. //////////////////////////////////////////////////////////////////////////////
  129. function GetIpForwardTable(pIpForwardTable: PMIB_IPFORWARDTABLE; var pdwSize: ULONG;
  130. bOrder: BOOL): DWORD; stdcall;
  131. {$EXTERNALSYM GetIpForwardTable}
  132. //////////////////////////////////////////////////////////////////////////////
  133. // //
  134. // Gets TCP Connection/UDP Listener Table //
  135. // //
  136. //////////////////////////////////////////////////////////////////////////////
  137. function GetTcpTable(pTcpTable: PMIB_TCPTABLE; var pdwSize: DWORD; bOrder: BOOL): DWORD; stdcall;
  138. {$EXTERNALSYM GetTcpTable}
  139. function GetUdpTable(pUdpTable: PMIB_UDPTABLE; var pdwSize: DWORD; bOrder: BOOL): DWORD; stdcall;
  140. {$EXTERNALSYM GetUdpTable}
  141. //////////////////////////////////////////////////////////////////////////////
  142. // //
  143. // Gets IP/ICMP/TCP/UDP Statistics //
  144. // //
  145. //////////////////////////////////////////////////////////////////////////////
  146. function GetIpStatistics(var pStats: MIB_IPSTATS): DWORD; stdcall;
  147. {$EXTERNALSYM GetIpStatistics}
  148. function GetIpStatisticsEx(pStats: PMIB_IPSTATS; dwFamily: DWORD): DWORD; stdcall;
  149. {$EXTERNALSYM GetIpStatisticsEx}
  150. function GetIcmpStatistics(var pStats: MIB_ICMP): DWORD; stdcall;
  151. {$EXTERNALSYM GetIcmpStatistics}
  152. function GetIcmpStatisticsEx(pStats: PMIB_ICMP_EX; dwFamily: DWORD): DWORD; stdcall;
  153. {$EXTERNALSYM GetIcmpStatisticsEx}
  154. function GetTcpStatistics(var pStats: MIB_TCPSTATS): DWORD; stdcall;
  155. {$EXTERNALSYM GetTcpStatistics}
  156. function GetTcpStatisticsEx(pStats: PMIB_TCPSTATS; dwFamily: DWORD): DWORD; stdcall;
  157. {$EXTERNALSYM GetTcpStatisticsEx}
  158. function GetUdpStatistics(var pStats: MIB_UDPSTATS): DWORD; stdcall;
  159. {$EXTERNALSYM GetUdpStatistics}
  160. function GetUdpStatisticsEx(pStats: PMIB_UDPSTATS; dwFamily: DWORD): DWORD; stdcall;
  161. {$EXTERNALSYM GetUdpStatisticsEx}
  162. //////////////////////////////////////////////////////////////////////////////
  163. // //
  164. // Used to set the ifAdminStatus on an interface. The only fields of the //
  165. // MIB_IFROW that are relevant are the dwIndex (index of the interface //
  166. // whose status needs to be set) and the dwAdminStatus which can be either //
  167. // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN //
  168. // //
  169. //////////////////////////////////////////////////////////////////////////////
  170. function SetIfEntry(const pIfRow: MIB_IFROW): DWORD; stdcall;
  171. {$EXTERNALSYM SetIfEntry}
  172. //////////////////////////////////////////////////////////////////////////////
  173. // //
  174. // Used to create, modify or delete a route. In all cases the //
  175. // dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and //
  176. // dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused //
  177. // and MUST BE 0. //
  178. // For a set, the complete MIB_IPFORWARDROW structure must be specified //
  179. // //
  180. //////////////////////////////////////////////////////////////////////////////
  181. function CreateIpForwardEntry(const pRoute: MIB_IPFORWARDROW): DWORD; stdcall;
  182. {$EXTERNALSYM CreateIpForwardEntry}
  183. function SetIpForwardEntry(const pRoute: MIB_IPFORWARDROW): DWORD; stdcall;
  184. {$EXTERNALSYM SetIpForwardEntry}
  185. function DeleteIpForwardEntry(const pRoute: MIB_IPFORWARDROW): DWORD; stdcall;
  186. {$EXTERNALSYM DeleteIpForwardEntry}
  187. //////////////////////////////////////////////////////////////////////////////
  188. // //
  189. // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is //
  190. // allowed) and to set the defaultTTL. If only one of the fields needs to //
  191. // be modified and the other needs to be the same as before the other field //
  192. // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as //
  193. // the case may be //
  194. // //
  195. //////////////////////////////////////////////////////////////////////////////
  196. function SetIpStatistics(const pIpStats: MIB_IPSTATS): DWORD; stdcall;
  197. {$EXTERNALSYM SetIpStatistics}
  198. //////////////////////////////////////////////////////////////////////////////
  199. // //
  200. // Used to set the defaultTTL. //
  201. // //
  202. //////////////////////////////////////////////////////////////////////////////
  203. function SetIpTTL(nTTL: UINT): DWORD; stdcall;
  204. {$EXTERNALSYM SetIpTTL}
  205. //////////////////////////////////////////////////////////////////////////////
  206. // //
  207. // Used to create, modify or delete an ARP entry. In all cases the dwIndex //
  208. // dwAddr field MUST BE SPECIFIED. //
  209. // For a set, the complete MIB_IPNETROW structure must be specified //
  210. // //
  211. //////////////////////////////////////////////////////////////////////////////
  212. function CreateIpNetEntry(const pArpEntry: MIB_IPNETROW): DWORD; stdcall;
  213. {$EXTERNALSYM CreateIpNetEntry}
  214. function SetIpNetEntry(const pArpEntry: MIB_IPNETROW): DWORD; stdcall;
  215. {$EXTERNALSYM SetIpNetEntry}
  216. function DeleteIpNetEntry(const pArpEntry: MIB_IPNETROW): DWORD; stdcall;
  217. {$EXTERNALSYM DeleteIpNetEntry}
  218. function FlushIpNetTable(dwIfIndex: DWORD): DWORD; stdcall;
  219. {$EXTERNALSYM FlushIpNetTable}
  220. //////////////////////////////////////////////////////////////////////////////
  221. // //
  222. // Used to create or delete a Proxy ARP entry. The dwIndex is the index of //
  223. // the interface on which to PARP for the dwAddress. If the interface is //
  224. // of a type that doesnt support ARP, e.g. PPP, then the call will fail //
  225. // //
  226. //////////////////////////////////////////////////////////////////////////////
  227. function CreateProxyArpEntry(dwAddress, dwMask, dwIfIndex: DWORD): DWORD; stdcall;
  228. {$EXTERNALSYM CreateProxyArpEntry}
  229. function DeleteProxyArpEntry(dwAddress, dwMask, dwIfIndex: DWORD): DWORD; stdcall;
  230. {$EXTERNALSYM DeleteProxyArpEntry}
  231. //////////////////////////////////////////////////////////////////////////////
  232. // //
  233. // Used to set the state of a TCP Connection. The only state that it can be //
  234. // set to is MIB_TCP_STATE_DELETE_TCB. The complete MIB_TCPROW structure //
  235. // MUST BE SPECIFIED //
  236. // //
  237. //////////////////////////////////////////////////////////////////////////////
  238. function SetTcpEntry(const pTcpRow: MIB_TCPROW): DWORD; stdcall;
  239. {$EXTERNALSYM SetTcpEntry}
  240. function GetInterfaceInfo(pIfTable: PIP_INTERFACE_INFO; var dwOutBufLen: ULONG): DWORD; stdcall;
  241. {$EXTERNALSYM GetInterfaceInfo}
  242. function GetUniDirectionalAdapterInfo(pIPIfInfo: PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
  243. var dwOutBufLen: ULONG): DWORD; stdcall;
  244. {$EXTERNALSYM GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo}
  245. function NhpAllocateAndGetInterfaceInfoFromStack(out ppTable: PIP_INTERFACE_NAME_INFO;
  246. pdwCount: PDWORD; bOrder: BOOL; hHeap: HANDLE; dwFlags: DWORD): DWORD; stdcall;
  247. {$EXTERNALSYM NhpAllocateAndGetInterfaceInfoFromStack}
  248. //////////////////////////////////////////////////////////////////////////////
  249. // //
  250. // Gets the "best" outgoing interface for the specified destination address //
  251. // //
  252. //////////////////////////////////////////////////////////////////////////////
  253. function GetBestInterface(dwDestAddr: IPAddr; var pdwBestIfIndex: DWORD): DWORD; stdcall;
  254. {$EXTERNALSYM GetBestInterface}
  255. function GetBestInterfaceEx(pDestAddr: PSockAddr; var pdwBestIfIndex: DWORD): DWORD; stdcall;
  256. {$EXTERNALSYM GetBestInterfaceEx}
  257. //////////////////////////////////////////////////////////////////////////////
  258. // //
  259. // Gets the best (longest matching prefix) route for the given destination //
  260. // If the source address is also specified (i.e. is not 0x00000000), and //
  261. // there are multiple "best" routes to the given destination, the returned //
  262. // route will be one that goes out over the interface which has an address //
  263. // that matches the source address //
  264. // //
  265. //////////////////////////////////////////////////////////////////////////////
  266. function GetBestRoute(dwDestAddr, dwSourceAddr: DWORD; pBestRoute: PMIB_IPFORWARDROW): DWORD; stdcall;
  267. {$EXTERNALSYM GetBestRoute}
  268. function NotifyAddrChange(var Handle: THandle; overlapped: POVERLAPPED): DWORD; stdcall;
  269. {$EXTERNALSYM NotifyAddrChange}
  270. function NotifyRouteChange(var Handle: THandle; overlapped: POVERLAPPED): DWORD; stdcall;
  271. {$EXTERNALSYM NotifyRouteChange}
  272. function CancelIPChangeNotify(notifyOverlapped: LPOVERLAPPED): BOOL; stdcall;
  273. {$EXTERNALSYM CancelIPChangeNotify}
  274. function GetAdapterIndex(AdapterName: LPWSTR; var IfIndex: ULONG): DWORD; stdcall;
  275. {$EXTERNALSYM GetAdapterIndex}
  276. function AddIPAddress(Address: IPAddr; IpMask: IPMask; IfIndex: DWORD;
  277. var NTEContext, NTEInstance: ULONG): DWORD; stdcall;
  278. {$EXTERNALSYM AddIPAddress}
  279. function DeleteIPAddress(NTEContext: ULONG): DWORD; stdcall;
  280. {$EXTERNALSYM DeleteIPAddress}
  281. function GetNetworkParams(pFixedInfo: PFIXED_INFO; var pOutBufLen: ULONG): DWORD; stdcall;
  282. {$EXTERNALSYM GetNetworkParams}
  283. function GetAdaptersInfo(pAdapterInfo: PIP_ADAPTER_INFO; var pOutBufLen: ULONG): DWORD; stdcall;
  284. {$EXTERNALSYM GetAdaptersInfo}
  285. function GetAdapterOrderMap: PIP_ADAPTER_ORDER_MAP; stdcall;
  286. {$EXTERNALSYM GetAdapterOrderMap}
  287. //
  288. // The following functions require Winsock2.
  289. //
  290. function GetAdaptersAddresses(Family: ULONG; Flags: DWORD; Reserved: PVOID;
  291. pAdapterAddresses: PIP_ADAPTER_ADDRESSES; pOutBufLen: PULONG): DWORD; stdcall;
  292. {$EXTERNALSYM GetAdaptersAddresses}
  293. function GetPerAdapterInfo(IfIndex: ULONG; pPerAdapterInfo: PIP_PER_ADAPTER_INFO;
  294. var pOutBufLen: ULONG): DWORD; stdcall;
  295. {$EXTERNALSYM GetPerAdapterInfo}
  296. function IpReleaseAddress(const AdapterInfo: IP_ADAPTER_INDEX_MAP): DWORD; stdcall;
  297. {$EXTERNALSYM IpReleaseAddress}
  298. function IpRenewAddress(const AdapterInfo: IP_ADAPTER_INDEX_MAP): DWORD; stdcall;
  299. {$EXTERNALSYM IpRenewAddress}
  300. function SendARP(const DestIP, SrcIP: IPAddr; pMacAddr: PULONG; var PhyAddrLen: ULONG): DWORD; stdcall;
  301. {$EXTERNALSYM SendARP}
  302. function GetRTTAndHopCount(DestIpAddress: IPAddr; var HopCount: ULONG;
  303. MaxHops: ULONG; var RTT: ULONG): BOOL; stdcall;
  304. {$EXTERNALSYM GetRTTAndHopCount}
  305. function GetFriendlyIfIndex(IfIndex: DWORD): DWORD; stdcall;
  306. {$EXTERNALSYM GetFriendlyIfIndex}
  307. function EnableRouter(var pHandle: THandle; pOverlapped: POVERLAPPED): DWORD; stdcall;
  308. {$EXTERNALSYM EnableRouter}
  309. function UnenableRouter(pOverlapped: POVERLAPPED; lpdwEnableCount: LPDWORD): DWORD; stdcall;
  310. {$EXTERNALSYM UnenableRouter}
  311. function DisableMediaSense(var pHandle: HANDLE; pOverLapped: POVERLAPPED): DWORD; stdcall;
  312. {$EXTERNALSYM DisableMediaSense}
  313. function RestoreMediaSense(pOverlapped: POVERLAPPED; lpdwEnableCount: LPDWORD): DWORD; stdcall;
  314. {$EXTERNALSYM RestoreMediaSense}
  315. function GetIpErrorString(ErrorCode: IP_STATUS; Buffer: PWCHAR; var Size: DWORD): DWORD; stdcall;
  316. {$EXTERNALSYM GetIpErrorString}
  317. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  318. {$IFNDEF JWA_OMIT_SECTIONS}
  319. implementation
  320. //uses ...
  321. {$ENDIF JWA_OMIT_SECTIONS}
  322. {$IFNDEF JWA_INTERFACESECTION}
  323. {$IFNDEF JWA_INCLUDEMODE}
  324. const
  325. iphlpapilib = 'iphlpapi.dll';
  326. {$ENDIF JWA_INCLUDEMODE}
  327. {$IFDEF DYNAMIC_LINK}
  328. var
  329. _GetNumberOfInterfaces: Pointer;
  330. function GetNumberOfInterfaces;
  331. begin
  332. GetProcedureAddress(_GetNumberOfInterfaces, iphlpapilib, 'GetNumberOfInterfaces');
  333. asm
  334. MOV ESP, EBP
  335. POP EBP
  336. JMP [_GetNumberOfInterfaces]
  337. end;
  338. end;
  339. var
  340. _GetIfEntry: Pointer;
  341. function GetIfEntry;
  342. begin
  343. GetProcedureAddress(_GetIfEntry, iphlpapilib, 'GetIfEntry');
  344. asm
  345. MOV ESP, EBP
  346. POP EBP
  347. JMP [_GetIfEntry]
  348. end;
  349. end;
  350. var
  351. _GetIfTable: Pointer;
  352. function GetIfTable;
  353. begin
  354. GetProcedureAddress(_GetIfTable, iphlpapilib, 'GetIfTable');
  355. asm
  356. MOV ESP, EBP
  357. POP EBP
  358. JMP [_GetIfTable]
  359. end;
  360. end;
  361. var
  362. _GetIpAddrTable: Pointer;
  363. function GetIpAddrTable;
  364. begin
  365. GetProcedureAddress(_GetIpAddrTable, iphlpapilib, 'GetIpAddrTable');
  366. asm
  367. MOV ESP, EBP
  368. POP EBP
  369. JMP [_GetIpAddrTable]
  370. end;
  371. end;
  372. var
  373. _GetIpNetTable: Pointer;
  374. function GetIpNetTable;
  375. begin
  376. GetProcedureAddress(_GetIpNetTable, iphlpapilib, 'GetIpNetTable');
  377. asm
  378. MOV ESP, EBP
  379. POP EBP
  380. JMP [_GetIpNetTable]
  381. end;
  382. end;
  383. var
  384. _GetIpForwardTable: Pointer;
  385. function GetIpForwardTable;
  386. begin
  387. GetProcedureAddress(_GetIpForwardTable, iphlpapilib, 'GetIpForwardTable');
  388. asm
  389. MOV ESP, EBP
  390. POP EBP
  391. JMP [_GetIpForwardTable]
  392. end;
  393. end;
  394. var
  395. _GetTcpTable: Pointer;
  396. function GetTcpTable;
  397. begin
  398. GetProcedureAddress(_GetTcpTable, iphlpapilib, 'GetTcpTable');
  399. asm
  400. MOV ESP, EBP
  401. POP EBP
  402. JMP [_GetTcpTable]
  403. end;
  404. end;
  405. var
  406. _GetUdpTable: Pointer;
  407. function GetUdpTable;
  408. begin
  409. GetProcedureAddress(_GetUdpTable, iphlpapilib, 'GetUdpTable');
  410. asm
  411. MOV ESP, EBP
  412. POP EBP
  413. JMP [_GetUdpTable]
  414. end;
  415. end;
  416. var
  417. _GetIpStatistics: Pointer;
  418. function GetIpStatistics;
  419. begin
  420. GetProcedureAddress(_GetIpStatistics, iphlpapilib, 'GetIpStatistics');
  421. asm
  422. MOV ESP, EBP
  423. POP EBP
  424. JMP [_GetIpStatistics]
  425. end;
  426. end;
  427. var
  428. _GetIpStatisticsEx: Pointer;
  429. function GetIpStatisticsEx;
  430. begin
  431. GetProcedureAddress(_GetIpStatisticsEx, iphlpapilib, 'GetIpStatisticsEx');
  432. asm
  433. MOV ESP, EBP
  434. POP EBP
  435. JMP [_GetIpStatisticsEx]
  436. end;
  437. end;
  438. var
  439. _GetIcmpStatistics: Pointer;
  440. function GetIcmpStatistics;
  441. begin
  442. GetProcedureAddress(_GetIcmpStatistics, iphlpapilib, 'GetIcmpStatistics');
  443. asm
  444. MOV ESP, EBP
  445. POP EBP
  446. JMP [_GetIcmpStatistics]
  447. end;
  448. end;
  449. var
  450. _GetIcmpStatisticsEx: Pointer;
  451. function GetIcmpStatisticsEx;
  452. begin
  453. GetProcedureAddress(_GetIcmpStatisticsEx, iphlpapilib, 'GetIcmpStatisticsEx');
  454. asm
  455. MOV ESP, EBP
  456. POP EBP
  457. JMP [_GetIcmpStatisticsEx]
  458. end;
  459. end;
  460. var
  461. _GetTcpStatistics: Pointer;
  462. function GetTcpStatistics;
  463. begin
  464. GetProcedureAddress(_GetTcpStatistics, iphlpapilib, 'GetTcpStatistics');
  465. asm
  466. MOV ESP, EBP
  467. POP EBP
  468. JMP [_GetTcpStatistics]
  469. end;
  470. end;
  471. var
  472. _GetTcpStatisticsEx: Pointer;
  473. function GetTcpStatisticsEx;
  474. begin
  475. GetProcedureAddress(_GetTcpStatisticsEx, iphlpapilib, 'GetTcpStatisticsEx');
  476. asm
  477. MOV ESP, EBP
  478. POP EBP
  479. JMP [_GetTcpStatisticsEx]
  480. end;
  481. end;
  482. var
  483. _GetUdpStatistics: Pointer;
  484. function GetUdpStatistics;
  485. begin
  486. GetProcedureAddress(_GetUdpStatistics, iphlpapilib, 'GetUdpStatistics');
  487. asm
  488. MOV ESP, EBP
  489. POP EBP
  490. JMP [_GetUdpStatistics]
  491. end;
  492. end;
  493. var
  494. _GetUdpStatisticsEx: Pointer;
  495. function GetUdpStatisticsEx;
  496. begin
  497. GetProcedureAddress(_GetUdpStatisticsEx, iphlpapilib, 'GetUdpStatisticsEx');
  498. asm
  499. MOV ESP, EBP
  500. POP EBP
  501. JMP [_GetUdpStatisticsEx]
  502. end;
  503. end;
  504. var
  505. _SetIfEntry: Pointer;
  506. function SetIfEntry;
  507. begin
  508. GetProcedureAddress(_SetIfEntry, iphlpapilib, 'SetIfEntry');
  509. asm
  510. MOV ESP, EBP
  511. POP EBP
  512. JMP [_SetIfEntry]
  513. end;
  514. end;
  515. var
  516. _CreateIpForwardEntry: Pointer;
  517. function CreateIpForwardEntry;
  518. begin
  519. GetProcedureAddress(_CreateIpForwardEntry, iphlpapilib, 'CreateIpForwardEntry');
  520. asm
  521. MOV ESP, EBP
  522. POP EBP
  523. JMP [_CreateIpForwardEntry]
  524. end;
  525. end;
  526. var
  527. _SetIpForwardEntry: Pointer;
  528. function SetIpForwardEntry;
  529. begin
  530. GetProcedureAddress(_SetIpForwardEntry, iphlpapilib, 'SetIpForwardEntry');
  531. asm
  532. MOV ESP, EBP
  533. POP EBP
  534. JMP [_SetIpForwardEntry]
  535. end;
  536. end;
  537. var
  538. _DeleteIpForwardEntry: Pointer;
  539. function DeleteIpForwardEntry;
  540. begin
  541. GetProcedureAddress(_DeleteIpForwardEntry, iphlpapilib, 'DeleteIpForwardEntry');
  542. asm
  543. MOV ESP, EBP
  544. POP EBP
  545. JMP [_DeleteIpForwardEntry]
  546. end;
  547. end;
  548. var
  549. _SetIpStatistics: Pointer;
  550. function SetIpStatistics;
  551. begin
  552. GetProcedureAddress(_SetIpStatistics, iphlpapilib, 'SetIpStatistics');
  553. asm
  554. MOV ESP, EBP
  555. POP EBP
  556. JMP [_SetIpStatistics]
  557. end;
  558. end;
  559. var
  560. _SetIpTTL: Pointer;
  561. function SetIpTTL;
  562. begin
  563. GetProcedureAddress(_SetIpTTL, iphlpapilib, 'SetIpTTL');
  564. asm
  565. MOV ESP, EBP
  566. POP EBP
  567. JMP [_SetIpTTL]
  568. end;
  569. end;
  570. var
  571. _CreateIpNetEntry: Pointer;
  572. function CreateIpNetEntry;
  573. begin
  574. GetProcedureAddress(_CreateIpNetEntry, iphlpapilib, 'CreateIpNetEntry');
  575. asm
  576. MOV ESP, EBP
  577. POP EBP
  578. JMP [_CreateIpNetEntry]
  579. end;
  580. end;
  581. var
  582. _SetIpNetEntry: Pointer;
  583. function SetIpNetEntry;
  584. begin
  585. GetProcedureAddress(_SetIpNetEntry, iphlpapilib, 'SetIpNetEntry');
  586. asm
  587. MOV ESP, EBP
  588. POP EBP
  589. JMP [_SetIpNetEntry]
  590. end;
  591. end;
  592. var
  593. _DeleteIpNetEntry: Pointer;
  594. function DeleteIpNetEntry;
  595. begin
  596. GetProcedureAddress(_DeleteIpNetEntry, iphlpapilib, 'DeleteIpNetEntry');
  597. asm
  598. MOV ESP, EBP
  599. POP EBP
  600. JMP [_DeleteIpNetEntry]
  601. end;
  602. end;
  603. var
  604. _FlushIpNetTable: Pointer;
  605. function FlushIpNetTable;
  606. begin
  607. GetProcedureAddress(_FlushIpNetTable, iphlpapilib, 'FlushIpNetTable');
  608. asm
  609. MOV ESP, EBP
  610. POP EBP
  611. JMP [_FlushIpNetTable]
  612. end;
  613. end;
  614. var
  615. _CreateProxyArpEntry: Pointer;
  616. function CreateProxyArpEntry;
  617. begin
  618. GetProcedureAddress(_CreateProxyArpEntry, iphlpapilib, 'CreateProxyArpEntry');
  619. asm
  620. MOV ESP, EBP
  621. POP EBP
  622. JMP [_CreateProxyArpEntry]
  623. end;
  624. end;
  625. var
  626. _DeleteProxyArpEntry: Pointer;
  627. function DeleteProxyArpEntry;
  628. begin
  629. GetProcedureAddress(_DeleteProxyArpEntry, iphlpapilib, 'DeleteProxyArpEntry');
  630. asm
  631. MOV ESP, EBP
  632. POP EBP
  633. JMP [_DeleteProxyArpEntry]
  634. end;
  635. end;
  636. var
  637. _SetTcpEntry: Pointer;
  638. function SetTcpEntry;
  639. begin
  640. GetProcedureAddress(_SetTcpEntry, iphlpapilib, 'SetTcpEntry');
  641. asm
  642. MOV ESP, EBP
  643. POP EBP
  644. JMP [_SetTcpEntry]
  645. end;
  646. end;
  647. var
  648. _GetInterfaceInfo: Pointer;
  649. function GetInterfaceInfo;
  650. begin
  651. GetProcedureAddress(_GetInterfaceInfo, iphlpapilib, 'GetInterfaceInfo');
  652. asm
  653. MOV ESP, EBP
  654. POP EBP
  655. JMP [_GetInterfaceInfo]
  656. end;
  657. end;
  658. var
  659. _GetUniDirectionalAdapterInfo: Pointer;
  660. function GetUniDirectionalAdapterInfo;
  661. begin
  662. GetProcedureAddress(_GetUniDirectionalAdapterInfo, iphlpapilib, 'GetUniDirectionalAdapterInfo');
  663. asm
  664. MOV ESP, EBP
  665. POP EBP
  666. JMP [_GetUniDirectionalAdapterInfo]
  667. end;
  668. end;
  669. var
  670. {$IFDEF SUPPORT_LONG_VARNAMES}
  671. _NhpAllocateAndGetInterfaceInfoFromStack: Pointer;
  672. {$ELSE}
  673. _NhpAllocateAGIIFrStack: Pointer;
  674. {$ENDIF}
  675. function NhpAllocateAndGetInterfaceInfoFromStack;
  676. begin
  677. {$IFDEF SUPPORT_LONG_VARNAMES}
  678. GetProcedureAddress(_NhpAllocateAndGetInterfaceInfoFromStack,iphlpapilib, 'NhpAllocateAndGetInterfaceInfoFromStack');
  679. {$ELSE}
  680. GetProcedureAddress(_NhpAllocateAGIIFrStack,iphlpapilib, 'NhpAllocateAndGetInterfaceInfoFromStack');
  681. {$ENDIF}
  682. asm
  683. MOV ESP, EBP
  684. POP EBP
  685. {$IFDEF SUPPORT_LONG_VARNAMES}
  686. JMP [_NhpAllocateAndGetInterfaceInfoFromStack]
  687. {$ELSE}
  688. JMP [_NhpAllocateAGIIFrStack]
  689. {$ENDIF}
  690. end;
  691. end;
  692. var
  693. _GetBestInterface: Pointer;
  694. function GetBestInterface;
  695. begin
  696. GetProcedureAddress(_GetBestInterface, iphlpapilib, 'GetBestInterface');
  697. asm
  698. MOV ESP, EBP
  699. POP EBP
  700. JMP [_GetBestInterface]
  701. end;
  702. end;
  703. var
  704. _GetBestInterfaceEx: Pointer;
  705. function GetBestInterfaceEx;
  706. begin
  707. GetProcedureAddress(_GetBestInterfaceEx, iphlpapilib, 'GetBestInterfaceEx');
  708. asm
  709. MOV ESP, EBP
  710. POP EBP
  711. JMP [_GetBestInterfaceEx]
  712. end;
  713. end;
  714. var
  715. _GetBestRoute: Pointer;
  716. function GetBestRoute;
  717. begin
  718. GetProcedureAddress(_GetBestRoute, iphlpapilib, 'GetBestRoute');
  719. asm
  720. MOV ESP, EBP
  721. POP EBP
  722. JMP [_GetBestRoute]
  723. end;
  724. end;
  725. var
  726. _NotifyAddrChange: Pointer;
  727. function NotifyAddrChange;
  728. begin
  729. GetProcedureAddress(_NotifyAddrChange, iphlpapilib, 'NotifyAddrChange');
  730. asm
  731. MOV ESP, EBP
  732. POP EBP
  733. JMP [_NotifyAddrChange]
  734. end;
  735. end;
  736. var
  737. _NotifyRouteChange: Pointer;
  738. function NotifyRouteChange;
  739. begin
  740. GetProcedureAddress(_NotifyRouteChange, iphlpapilib, 'NotifyRouteChange');
  741. asm
  742. MOV ESP, EBP
  743. POP EBP
  744. JMP [_NotifyRouteChange]
  745. end;
  746. end;
  747. var
  748. _CancelIPChangeNotify: Pointer;
  749. function CancelIPChangeNotify;
  750. begin
  751. GetProcedureAddress(_CancelIPChangeNotify, iphlpapilib, 'CancelIPChangeNotify');
  752. asm
  753. MOV ESP, EBP
  754. POP EBP
  755. JMP [_CancelIPChangeNotify]
  756. end;
  757. end;
  758. var
  759. _GetAdapterIndex: Pointer;
  760. function GetAdapterIndex;
  761. begin
  762. GetProcedureAddress(_GetAdapterIndex, iphlpapilib, 'GetAdapterIndex');
  763. asm
  764. MOV ESP, EBP
  765. POP EBP
  766. JMP [_GetAdapterIndex]
  767. end;
  768. end;
  769. var
  770. _AddIPAddress: Pointer;
  771. function AddIPAddress;
  772. begin
  773. GetProcedureAddress(_AddIPAddress, iphlpapilib, 'AddIPAddress');
  774. asm
  775. MOV ESP, EBP
  776. POP EBP
  777. JMP [_AddIPAddress]
  778. end;
  779. end;
  780. var
  781. _DeleteIPAddress: Pointer;
  782. function DeleteIPAddress;
  783. begin
  784. GetProcedureAddress(_DeleteIPAddress, iphlpapilib, 'DeleteIPAddress');
  785. asm
  786. MOV ESP, EBP
  787. POP EBP
  788. JMP [_DeleteIPAddress]
  789. end;
  790. end;
  791. var
  792. _GetNetworkParams: Pointer;
  793. function GetNetworkParams;
  794. begin
  795. GetProcedureAddress(_GetNetworkParams, iphlpapilib, 'GetNetworkParams');
  796. asm
  797. MOV ESP, EBP
  798. POP EBP
  799. JMP [_GetNetworkParams]
  800. end;
  801. end;
  802. var
  803. _GetAdaptersInfo: Pointer;
  804. function GetAdaptersInfo;
  805. begin
  806. GetProcedureAddress(_GetAdaptersInfo, iphlpapilib, 'GetAdaptersInfo');
  807. asm
  808. MOV ESP, EBP
  809. POP EBP
  810. JMP [_GetAdaptersInfo]
  811. end;
  812. end;
  813. var
  814. _GetAdapterOrderMap: Pointer;
  815. function GetAdapterOrderMap;
  816. begin
  817. GetProcedureAddress(_GetAdapterOrderMap, iphlpapilib, 'GetAdapterOrderMap');
  818. asm
  819. MOV ESP, EBP
  820. POP EBP
  821. JMP [_GetAdapterOrderMap]
  822. end;
  823. end;
  824. var
  825. _GetAdaptersAddresses: Pointer;
  826. function GetAdaptersAddresses;
  827. begin
  828. GetProcedureAddress(_GetAdaptersAddresses, iphlpapilib, 'GetAdaptersAddresses');
  829. asm
  830. MOV ESP, EBP
  831. POP EBP
  832. JMP [_GetAdaptersAddresses]
  833. end;
  834. end;
  835. var
  836. _GetPerAdapterInfo: Pointer;
  837. function GetPerAdapterInfo;
  838. begin
  839. GetProcedureAddress(_GetPerAdapterInfo, iphlpapilib, 'GetPerAdapterInfo');
  840. asm
  841. MOV ESP, EBP
  842. POP EBP
  843. JMP [_GetPerAdapterInfo]
  844. end;
  845. end;
  846. var
  847. _IpReleaseAddress: Pointer;
  848. function IpReleaseAddress;
  849. begin
  850. GetProcedureAddress(_IpReleaseAddress, iphlpapilib, 'IpReleaseAddress');
  851. asm
  852. MOV ESP, EBP
  853. POP EBP
  854. JMP [_IpReleaseAddress]
  855. end;
  856. end;
  857. var
  858. _IpRenewAddress: Pointer;
  859. function IpRenewAddress;
  860. begin
  861. GetProcedureAddress(_IpRenewAddress, iphlpapilib, 'IpRenewAddress');
  862. asm
  863. MOV ESP, EBP
  864. POP EBP
  865. JMP [_IpRenewAddress]
  866. end;
  867. end;
  868. var
  869. _SendARP: Pointer;
  870. function SendARP;
  871. begin
  872. GetProcedureAddress(_SendARP, iphlpapilib, 'SendARP');
  873. asm
  874. MOV ESP, EBP
  875. POP EBP
  876. JMP [_SendARP]
  877. end;
  878. end;
  879. var
  880. _GetRTTAndHopCount: Pointer;
  881. function GetRTTAndHopCount;
  882. begin
  883. GetProcedureAddress(_GetRTTAndHopCount, iphlpapilib, 'GetRTTAndHopCount');
  884. asm
  885. MOV ESP, EBP
  886. POP EBP
  887. JMP [_GetRTTAndHopCount]
  888. end;
  889. end;
  890. var
  891. _GetFriendlyIfIndex: Pointer;
  892. function GetFriendlyIfIndex;
  893. begin
  894. GetProcedureAddress(_GetFriendlyIfIndex, iphlpapilib, 'GetFriendlyIfIndex');
  895. asm
  896. MOV ESP, EBP
  897. POP EBP
  898. JMP [_GetFriendlyIfIndex]
  899. end;
  900. end;
  901. var
  902. _EnableRouter: Pointer;
  903. function EnableRouter;
  904. begin
  905. GetProcedureAddress(_EnableRouter, iphlpapilib, 'EnableRouter');
  906. asm
  907. MOV ESP, EBP
  908. POP EBP
  909. JMP [_EnableRouter]
  910. end;
  911. end;
  912. var
  913. _UnenableRouter: Pointer;
  914. function UnenableRouter;
  915. begin
  916. GetProcedureAddress(_UnenableRouter, iphlpapilib, 'UnenableRouter');
  917. asm
  918. MOV ESP, EBP
  919. POP EBP
  920. JMP [_UnenableRouter]
  921. end;
  922. end;
  923. var
  924. _DisableMediaSense: Pointer;
  925. function DisableMediaSense;
  926. begin
  927. GetProcedureAddress(_DisableMediaSense, iphlpapilib, 'DisableMediaSense');
  928. asm
  929. MOV ESP, EBP
  930. POP EBP
  931. JMP [_DisableMediaSense]
  932. end;
  933. end;
  934. var
  935. _RestoreMediaSense: Pointer;
  936. function RestoreMediaSense;
  937. begin
  938. GetProcedureAddress(_RestoreMediaSense, iphlpapilib, 'RestoreMediaSense');
  939. asm
  940. MOV ESP, EBP
  941. POP EBP
  942. JMP [_RestoreMediaSense]
  943. end;
  944. end;
  945. var
  946. _GetIpErrorString: Pointer;
  947. function GetIpErrorString;
  948. begin
  949. GetProcedureAddress(_GetIpErrorString, iphlpapilib, 'GetIpErrorString');
  950. asm
  951. MOV ESP, EBP
  952. POP EBP
  953. JMP [_GetIpErrorString]
  954. end;
  955. end;
  956. {$ELSE}
  957. function GetNumberOfInterfaces; external iphlpapilib name 'GetNumberOfInterfaces';
  958. function GetIfEntry; external iphlpapilib name 'GetIfEntry';
  959. function GetIfTable; external iphlpapilib name 'GetIfTable';
  960. function GetIpAddrTable; external iphlpapilib name 'GetIpAddrTable';
  961. function GetIpNetTable; external iphlpapilib name 'GetIpNetTable';
  962. function GetIpForwardTable; external iphlpapilib name 'GetIpForwardTable';
  963. function GetTcpTable; external iphlpapilib name 'GetTcpTable';
  964. function GetUdpTable; external iphlpapilib name 'GetUdpTable';
  965. function GetIpStatistics; external iphlpapilib name 'GetIpStatistics';
  966. function GetIpStatisticsEx; external iphlpapilib name 'GetIpStatisticsEx';
  967. function GetIcmpStatistics; external iphlpapilib name 'GetIcmpStatistics';
  968. function GetIcmpStatisticsEx; external iphlpapilib name 'GetIcmpStatisticsEx';
  969. function GetTcpStatistics; external iphlpapilib name 'GetTcpStatistics';
  970. function GetTcpStatisticsEx; external iphlpapilib name 'GetTcpStatisticsEx';
  971. function GetUdpStatistics; external iphlpapilib name 'GetUdpStatistics';
  972. function GetUdpStatisticsEx; external iphlpapilib name 'GetUdpStatisticsEx';
  973. function SetIfEntry; external iphlpapilib name 'SetIfEntry';
  974. function CreateIpForwardEntry; external iphlpapilib name 'CreateIpForwardEntry';
  975. function SetIpForwardEntry; external iphlpapilib name 'SetIpForwardEntry';
  976. function DeleteIpForwardEntry; external iphlpapilib name 'DeleteIpForwardEntry';
  977. function SetIpStatistics; external iphlpapilib name 'SetIpStatistics';
  978. function SetIpTTL; external iphlpapilib name 'SetIpTTL';
  979. function CreateIpNetEntry; external iphlpapilib name 'CreateIpNetEntry';
  980. function SetIpNetEntry; external iphlpapilib name 'SetIpNetEntry';
  981. function DeleteIpNetEntry; external iphlpapilib name 'DeleteIpNetEntry';
  982. function FlushIpNetTable; external iphlpapilib name 'FlushIpNetTable';
  983. function CreateProxyArpEntry; external iphlpapilib name 'CreateProxyArpEntry';
  984. function DeleteProxyArpEntry; external iphlpapilib name 'DeleteProxyArpEntry';
  985. function SetTcpEntry; external iphlpapilib name 'SetTcpEntry';
  986. function GetInterfaceInfo; external iphlpapilib name 'GetInterfaceInfo';
  987. function GetUniDirectionalAdapterInfo; external iphlpapilib name 'GetUniDirectionalAdapterInfo';
  988. function NhpAllocateAndGetInterfaceInfoFromStack; external iphlpapilib name 'NhpAllocateAndGetInterfaceInfoFromStack';
  989. function GetBestInterface; external iphlpapilib name 'GetBestInterface';
  990. function GetBestInterfaceEx; external iphlpapilib name 'GetBestInterfaceEx';
  991. function GetBestRoute; external iphlpapilib name 'GetBestRoute';
  992. function NotifyAddrChange; external iphlpapilib name 'NotifyAddrChange';
  993. function NotifyRouteChange; external iphlpapilib name 'NotifyRouteChange';
  994. function CancelIPChangeNotify; external iphlpapilib name 'CancelIPChangeNotify';
  995. function GetAdapterIndex; external iphlpapilib name 'GetAdapterIndex';
  996. function AddIPAddress; external iphlpapilib name 'AddIPAddress';
  997. function DeleteIPAddress; external iphlpapilib name 'DeleteIPAddress';
  998. function GetNetworkParams; external iphlpapilib name 'GetNetworkParams';
  999. function GetAdaptersInfo; external iphlpapilib name 'GetAdaptersInfo';
  1000. function GetAdapterOrderMap; external iphlpapilib name 'GetAdapterOrderMap';
  1001. function GetAdaptersAddresses; external iphlpapilib name 'GetAdaptersAddresses';
  1002. function GetPerAdapterInfo; external iphlpapilib name 'GetPerAdapterInfo';
  1003. function IpReleaseAddress; external iphlpapilib name 'IpReleaseAddress';
  1004. function IpRenewAddress; external iphlpapilib name 'IpRenewAddress';
  1005. function SendARP; external iphlpapilib name 'SendARP';
  1006. function GetRTTAndHopCount; external iphlpapilib name 'GetRTTAndHopCount';
  1007. function GetFriendlyIfIndex; external iphlpapilib name 'GetFriendlyIfIndex';
  1008. function EnableRouter; external iphlpapilib name 'EnableRouter';
  1009. function UnenableRouter; external iphlpapilib name 'UnenableRouter';
  1010. function DisableMediaSense; external iphlpapilib name 'DisableMediaSense';
  1011. function RestoreMediaSense; external iphlpapilib name 'RestoreMediaSense';
  1012. function GetIpErrorString; external iphlpapilib name 'GetIpErrorString';
  1013. {$ENDIF DYNAMIC_LINK}
  1014. {$ENDIF JWA_INTERFACESECTION}
  1015. {$IFNDEF JWA_OMIT_SECTIONS}
  1016. end.
  1017. {$ENDIF JWA_OMIT_SECTIONS}