jwaipexport.pas 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  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: ipexport.h, released August 2001. The original Pascal }
  9. { code is: IpExport.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: JwaIpExport.pas,v 1.11 2007/09/14 06:48:46 marquardt Exp $
  46. {$IFNDEF JWA_OMIT_SECTIONS}
  47. unit JwaIpExport;
  48. {$WEAKPACKAGEUNIT}
  49. {$ENDIF JWA_OMIT_SECTIONS}
  50. {$HPPEMIT ''}
  51. {$HPPEMIT '#include "ipexport.h"'}
  52. {$HPPEMIT ''}
  53. {$IFNDEF JWA_OMIT_SECTIONS}
  54. {$I jediapilib.inc}
  55. interface
  56. uses
  57. JwaWinType, JwaWS2tcpip;
  58. {$ENDIF JWA_OMIT_SECTIONS}
  59. {$IFNDEF JWA_IMPLEMENTATIONSECTION}
  60. //
  61. // IP type definitions.
  62. //
  63. type
  64. IPAddr = ULONG; // An IP address.
  65. {$EXTERNALSYM IPAddr}
  66. IPMask = ULONG; // An IP subnet mask.
  67. {$EXTERNALSYM IPMask}
  68. IP_STATUS = ULONG; // Status code returned from IP APIs.
  69. {$EXTERNALSYM IP_STATUS}
  70. (* (rom) deactivated kernel mode is irrelevant for Delphi
  71. //
  72. // Duplicate these definitions here so that this file can be included by
  73. // kernel-mode components which cannot include ws2tcpip.h, as well as
  74. // by user-mode components which do.
  75. //
  76. type
  77. IN6_ADDR = record
  78. case Integer of
  79. 0: (Byte: array [0..15] of UCHAR);
  80. 1: (Word: array [0..7] of USHORT);
  81. end;
  82. {$EXTERNALSYM IN6_ADDR}
  83. TIn6Addr = IN6_ADDR;
  84. PIn6Addr = ^IN6_ADDR;
  85. in_addr6 = in6_addr;
  86. {$EXTERNALSYM in_addr6}
  87. TInAddr6 = in_addr6;
  88. PInAddr6 = ^in_addr6;
  89. *)
  90. type
  91. IPv6Addr = in6_addr;
  92. {$EXTERNALSYM IPv6Addr}
  93. TIPv6Addr = IPv6Addr;
  94. PIPv6Addr = ^IPv6Addr;
  95. //#ifndef s_addr
  96. {$IFNDEF JWA_INCLUDEMODE}
  97. in_addr = record
  98. case Integer of
  99. 0: (
  100. s_b1, s_b2, s_b3, s_b4: UCHAR;
  101. );
  102. 1: (
  103. s_w1, s_w2: USHORT
  104. );
  105. 2: (
  106. S_addr: ULONG
  107. );
  108. end;
  109. {$EXTERNALSYM in_addr}
  110. {$ENDIF JWA_INCLUDEMODE}
  111. //#define s_addr S_un.S_addr /* can be used for most tcp & ip code */
  112. //#endif
  113. //
  114. // The ip_option_information structure describes the options to be
  115. // included in the header of an IP packet. The TTL, TOS, and Flags
  116. // values are carried in specific fields in the header. The OptionsData
  117. // bytes are carried in the options area following the standard IP header.
  118. // With the exception of source route options, this data must be in the
  119. // format to be transmitted on the wire as specified in RFC 791. A source
  120. // route option should contain the full route - first hop thru final
  121. // destination - in the route data. The first hop will be pulled out of the
  122. // data and the option will be reformatted accordingly. Otherwise, the route
  123. // option should be formatted as specified in RFC 791.
  124. //
  125. type
  126. IP_OPTION_INFORMATION = record
  127. Ttl: UCHAR; // Time To Live
  128. Tos: UCHAR; // Type Of Service
  129. Flags: UCHAR; // IP header flags
  130. OptionsSize: UCHAR; // Size in bytes of options data
  131. OptionsData: PUCHAR; // Pointer to options data
  132. end;
  133. {$EXTERNALSYM IP_OPTION_INFORMATION}
  134. PIP_OPTION_INFORMATION = ^IP_OPTION_INFORMATION;
  135. {$EXTERNALSYM PIP_OPTION_INFORMATION}
  136. TIpOptionInformation = IP_OPTION_INFORMATION;
  137. PIpOptionInformation = PIP_OPTION_INFORMATION;
  138. //
  139. // The icmp_echo_reply structure describes the data returned in response
  140. // to an echo request.
  141. //
  142. ICMP_ECHO_REPLY = record
  143. Address: IPAddr; // Replying address
  144. Status: ULONG; // Reply IP_STATUS
  145. RoundTripTime: ULONG; // RTT in milliseconds
  146. DataSize: USHORT; // Reply data size in bytes
  147. Reserved: USHORT; // Reserved for system use
  148. Data: LPVOID; // Pointer to the reply data
  149. Options: ip_option_information; // Reply options
  150. end;
  151. {$EXTERNALSYM ICMP_ECHO_REPLY}
  152. PICMP_ECHO_REPLY = ^ICMP_ECHO_REPLY;
  153. {$EXTERNALSYM PICMP_ECHO_REPLY}
  154. TIcmpEchoReply = ICMP_ECHO_REPLY;
  155. PIcmpEchoReply = PICMP_ECHO_REPLY;
  156. ARP_SEND_REPLY = record
  157. DestAddress: IPAddr;
  158. SrcAddress: IPAddr;
  159. end;
  160. {$EXTERNALSYM ARP_SEND_REPLY}
  161. PARP_SEND_REPLY = ^ARP_SEND_REPLY;
  162. {$EXTERNALSYM PARP_SEND_REPLY}
  163. TArpSendReply = ARP_SEND_REPLY;
  164. PArpSendReply = PARP_SEND_REPLY;
  165. TCP_RESERVE_PORT_RANGE = record
  166. UpperRange: USHORT;
  167. LowerRange: USHORT;
  168. end;
  169. {$EXTERNALSYM TCP_RESERVE_PORT_RANGE}
  170. PTCP_RESERVE_PORT_RANGE = ^TCP_RESERVE_PORT_RANGE;
  171. {$EXTERNALSYM PTCP_RESERVE_PORT_RANGE}
  172. TTcpReservePortRange = TCP_RESERVE_PORT_RANGE;
  173. PTcpReservePortRange = PTCP_RESERVE_PORT_RANGE;
  174. const
  175. MAX_ADAPTER_NAME = 128;
  176. {$EXTERNALSYM MAX_ADAPTER_NAME}
  177. type
  178. PIP_ADAPTER_INDEX_MAP = ^IP_ADAPTER_INDEX_MAP;
  179. {$EXTERNALSYM PIP_ADAPTER_INDEX_MAP}
  180. _IP_ADAPTER_INDEX_MAP = record
  181. Index: ULONG;
  182. Name: array [0..MAX_ADAPTER_NAME - 1] of WCHAR;
  183. end;
  184. {$EXTERNALSYM _IP_ADAPTER_INDEX_MAP}
  185. IP_ADAPTER_INDEX_MAP = _IP_ADAPTER_INDEX_MAP;
  186. {$EXTERNALSYM IP_ADAPTER_INDEX_MAP}
  187. TIpAdapterIndexMap = IP_ADAPTER_INDEX_MAP;
  188. PIpAdapterIndexMap = PIP_ADAPTER_INDEX_MAP;
  189. PIP_INTERFACE_INFO = ^IP_INTERFACE_INFO;
  190. {$EXTERNALSYM PIP_INTERFACE_INFO}
  191. _IP_INTERFACE_INFO = record
  192. NumAdapters: Longint;
  193. Adapter: array [0..0] of IP_ADAPTER_INDEX_MAP;
  194. end;
  195. {$EXTERNALSYM _IP_INTERFACE_INFO}
  196. IP_INTERFACE_INFO = _IP_INTERFACE_INFO;
  197. {$EXTERNALSYM IP_INTERFACE_INFO}
  198. TIpInterfaceInfo = IP_INTERFACE_INFO;
  199. PIpInterfaceInfo = PIP_INTERFACE_INFO;
  200. PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS = ^IP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
  201. {$EXTERNALSYM PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS}
  202. _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS = record
  203. NumAdapters: ULONG;
  204. Address: array [0..0] of IPAddr;
  205. end;
  206. {$EXTERNALSYM _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS}
  207. IP_UNIDIRECTIONAL_ADAPTER_ADDRESS = _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
  208. {$EXTERNALSYM IP_UNIDIRECTIONAL_ADAPTER_ADDRESS}
  209. TIpUnidirectionalAdapterAddress = IP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
  210. PIpUnidirectionalAdapterAddress = PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
  211. PIP_ADAPTER_ORDER_MAP = ^IP_ADAPTER_ORDER_MAP;
  212. {$EXTERNALSYM PIP_ADAPTER_ORDER_MAP}
  213. _IP_ADAPTER_ORDER_MAP = record
  214. NumAdapters: ULONG;
  215. AdapterOrder: array [0..0] of ULONG;
  216. end;
  217. {$EXTERNALSYM _IP_ADAPTER_ORDER_MAP}
  218. IP_ADAPTER_ORDER_MAP = _IP_ADAPTER_ORDER_MAP;
  219. {$EXTERNALSYM IP_ADAPTER_ORDER_MAP}
  220. TIpAdapterOrderMap = IP_ADAPTER_ORDER_MAP;
  221. PIpAdapterOrderMap = PIP_ADAPTER_ORDER_MAP;
  222. _IP_MCAST_COUNTER_INFO = record
  223. InMcastOctets: ULONG64;
  224. OutMcastOctets: ULONG64;
  225. InMcastPkts: ULONG64;
  226. OutMcastPkts: ULONG64;
  227. end;
  228. {$EXTERNALSYM _IP_MCAST_COUNTER_INFO}
  229. IP_MCAST_COUNTER_INFO = _IP_MCAST_COUNTER_INFO;
  230. {$EXTERNALSYM IP_MCAST_COUNTER_INFO}
  231. PIP_MCAST_COUNTER_INFO = ^IP_MCAST_COUNTER_INFO;
  232. {$EXTERNALSYM PIP_MCAST_COUNTER_INFO}
  233. TIpMCastCounterInfo = IP_MCAST_COUNTER_INFO;
  234. PIpMCastCounterInfo = PIP_MCAST_COUNTER_INFO;
  235. //
  236. // IP_STATUS codes returned from IP APIs
  237. //
  238. const
  239. IP_STATUS_BASE = 11000;
  240. {$EXTERNALSYM IP_STATUS_BASE}
  241. IP_SUCCESS = 0;
  242. {$EXTERNALSYM IP_SUCCESS}
  243. IP_BUF_TOO_SMALL = IP_STATUS_BASE + 1;
  244. {$EXTERNALSYM IP_BUF_TOO_SMALL}
  245. IP_DEST_NET_UNREACHABLE = IP_STATUS_BASE + 2;
  246. {$EXTERNALSYM IP_DEST_NET_UNREACHABLE}
  247. IP_DEST_HOST_UNREACHABLE = IP_STATUS_BASE + 3;
  248. {$EXTERNALSYM IP_DEST_HOST_UNREACHABLE}
  249. IP_DEST_PROT_UNREACHABLE = IP_STATUS_BASE + 4;
  250. {$EXTERNALSYM IP_DEST_PROT_UNREACHABLE}
  251. IP_DEST_PORT_UNREACHABLE = IP_STATUS_BASE + 5;
  252. {$EXTERNALSYM IP_DEST_PORT_UNREACHABLE}
  253. IP_NO_RESOURCES = IP_STATUS_BASE + 6;
  254. {$EXTERNALSYM IP_NO_RESOURCES}
  255. IP_BAD_OPTION = IP_STATUS_BASE + 7;
  256. {$EXTERNALSYM IP_BAD_OPTION}
  257. IP_HW_ERROR = IP_STATUS_BASE + 8;
  258. {$EXTERNALSYM IP_HW_ERROR}
  259. IP_PACKET_TOO_BIG = IP_STATUS_BASE + 9;
  260. {$EXTERNALSYM IP_PACKET_TOO_BIG}
  261. IP_REQ_TIMED_OUT = IP_STATUS_BASE + 10;
  262. {$EXTERNALSYM IP_REQ_TIMED_OUT}
  263. IP_BAD_REQ = IP_STATUS_BASE + 11;
  264. {$EXTERNALSYM IP_BAD_REQ}
  265. IP_BAD_ROUTE = IP_STATUS_BASE + 12;
  266. {$EXTERNALSYM IP_BAD_ROUTE}
  267. IP_TTL_EXPIRED_TRANSIT = IP_STATUS_BASE + 13;
  268. {$EXTERNALSYM IP_TTL_EXPIRED_TRANSIT}
  269. IP_TTL_EXPIRED_REASSEM = IP_STATUS_BASE + 14;
  270. {$EXTERNALSYM IP_TTL_EXPIRED_REASSEM}
  271. IP_PARAM_PROBLEM = IP_STATUS_BASE + 15;
  272. {$EXTERNALSYM IP_PARAM_PROBLEM}
  273. IP_SOURCE_QUENCH = IP_STATUS_BASE + 16;
  274. {$EXTERNALSYM IP_SOURCE_QUENCH}
  275. IP_OPTION_TOO_BIG = IP_STATUS_BASE + 17;
  276. {$EXTERNALSYM IP_OPTION_TOO_BIG}
  277. IP_BAD_DESTINATION = IP_STATUS_BASE + 18;
  278. {$EXTERNALSYM IP_BAD_DESTINATION}
  279. //
  280. // Variants of the above using IPv6 terminology, where different
  281. //
  282. IP_DEST_NO_ROUTE = IP_STATUS_BASE + 2;
  283. {$EXTERNALSYM IP_DEST_NO_ROUTE}
  284. IP_DEST_ADDR_UNREACHABLE = IP_STATUS_BASE + 3;
  285. {$EXTERNALSYM IP_DEST_ADDR_UNREACHABLE}
  286. IP_DEST_PROHIBITED = IP_STATUS_BASE + 4;
  287. {$EXTERNALSYM IP_DEST_PROHIBITED}
  288. //IP_DEST_PORT_UNREACHABLE = IP_STATUS_BASE + 5;
  289. //{$EXTERNALSYM IP_DEST_PORT_UNREACHABLE}
  290. IP_HOP_LIMIT_EXCEEDED = IP_STATUS_BASE + 13;
  291. {$EXTERNALSYM IP_HOP_LIMIT_EXCEEDED}
  292. IP_REASSEMBLY_TIME_EXCEEDED = IP_STATUS_BASE + 14;
  293. {$EXTERNALSYM IP_REASSEMBLY_TIME_EXCEEDED}
  294. IP_PARAMETER_PROBLEM = IP_STATUS_BASE + 15;
  295. {$EXTERNALSYM IP_PARAMETER_PROBLEM}
  296. //
  297. // IPv6-only status codes
  298. //
  299. IP_DEST_UNREACHABLE = IP_STATUS_BASE + 40;
  300. {$EXTERNALSYM IP_DEST_UNREACHABLE}
  301. IP_TIME_EXCEEDED = IP_STATUS_BASE + 41;
  302. {$EXTERNALSYM IP_TIME_EXCEEDED}
  303. IP_BAD_HEADER = IP_STATUS_BASE + 42;
  304. {$EXTERNALSYM IP_BAD_HEADER}
  305. IP_UNRECOGNIZED_NEXT_HEADER = IP_STATUS_BASE + 43;
  306. {$EXTERNALSYM IP_UNRECOGNIZED_NEXT_HEADER}
  307. IP_ICMP_ERROR = IP_STATUS_BASE + 44;
  308. {$EXTERNALSYM IP_ICMP_ERROR}
  309. IP_DEST_SCOPE_MISMATCH = IP_STATUS_BASE + 45;
  310. {$EXTERNALSYM IP_DEST_SCOPE_MISMATCH}
  311. //
  312. // The next group are status codes passed up on status indications to
  313. // transport layer protocols.
  314. //
  315. IP_ADDR_DELETED = IP_STATUS_BASE + 19;
  316. {$EXTERNALSYM IP_ADDR_DELETED}
  317. IP_SPEC_MTU_CHANGE = IP_STATUS_BASE + 20;
  318. {$EXTERNALSYM IP_SPEC_MTU_CHANGE}
  319. IP_MTU_CHANGE = IP_STATUS_BASE + 21;
  320. {$EXTERNALSYM IP_MTU_CHANGE}
  321. IP_UNLOAD = IP_STATUS_BASE + 22;
  322. {$EXTERNALSYM IP_UNLOAD}
  323. IP_ADDR_ADDED = IP_STATUS_BASE + 23;
  324. {$EXTERNALSYM IP_ADDR_ADDED}
  325. IP_MEDIA_CONNECT = IP_STATUS_BASE + 24;
  326. {$EXTERNALSYM IP_MEDIA_CONNECT}
  327. IP_MEDIA_DISCONNECT = IP_STATUS_BASE + 25;
  328. {$EXTERNALSYM IP_MEDIA_DISCONNECT}
  329. IP_BIND_ADAPTER = IP_STATUS_BASE + 26;
  330. {$EXTERNALSYM IP_BIND_ADAPTER}
  331. IP_UNBIND_ADAPTER = IP_STATUS_BASE + 27;
  332. {$EXTERNALSYM IP_UNBIND_ADAPTER}
  333. IP_DEVICE_DOES_NOT_EXIST = IP_STATUS_BASE + 28;
  334. {$EXTERNALSYM IP_DEVICE_DOES_NOT_EXIST}
  335. IP_DUPLICATE_ADDRESS = IP_STATUS_BASE + 29;
  336. {$EXTERNALSYM IP_DUPLICATE_ADDRESS}
  337. IP_INTERFACE_METRIC_CHANGE = IP_STATUS_BASE + 30;
  338. {$EXTERNALSYM IP_INTERFACE_METRIC_CHANGE}
  339. IP_RECONFIG_SECFLTR = IP_STATUS_BASE + 31;
  340. {$EXTERNALSYM IP_RECONFIG_SECFLTR}
  341. IP_NEGOTIATING_IPSEC = IP_STATUS_BASE + 32;
  342. {$EXTERNALSYM IP_NEGOTIATING_IPSEC}
  343. IP_INTERFACE_WOL_CAPABILITY_CHANGE = IP_STATUS_BASE + 33;
  344. {$EXTERNALSYM IP_INTERFACE_WOL_CAPABILITY_CHANGE}
  345. IP_DUPLICATE_IPADD = IP_STATUS_BASE + 34;
  346. {$EXTERNALSYM IP_DUPLICATE_IPADD}
  347. IP_GENERAL_FAILURE = IP_STATUS_BASE + 50;
  348. {$EXTERNALSYM IP_GENERAL_FAILURE}
  349. MAX_IP_STATUS = IP_GENERAL_FAILURE;
  350. {$EXTERNALSYM MAX_IP_STATUS}
  351. IP_PENDING = IP_STATUS_BASE + 255;
  352. {$EXTERNALSYM IP_PENDING}
  353. //
  354. // Values used in the IP header Flags field.
  355. //
  356. IP_FLAG_DF = $2; // Don't fragment this packet.
  357. {$EXTERNALSYM IP_FLAG_DF}
  358. //
  359. // Supported IP Option Types.
  360. //
  361. // These types define the options which may be used in the OptionsData field
  362. // of the ip_option_information structure. See RFC 791 for a complete
  363. // description of each.
  364. //
  365. IP_OPT_EOL = 0; // End of list option
  366. {$EXTERNALSYM IP_OPT_EOL}
  367. IP_OPT_NOP = 1; // No operation
  368. {$EXTERNALSYM IP_OPT_NOP}
  369. IP_OPT_SECURITY = $82; // Security option
  370. {$EXTERNALSYM IP_OPT_SECURITY}
  371. IP_OPT_LSRR = $83; // Loose source route
  372. {$EXTERNALSYM IP_OPT_LSRR}
  373. IP_OPT_SSRR = $89; // Strict source route
  374. {$EXTERNALSYM IP_OPT_SSRR}
  375. IP_OPT_RR = $7; // Record route
  376. {$EXTERNALSYM IP_OPT_RR}
  377. IP_OPT_TS = $44; // Timestamp
  378. {$EXTERNALSYM IP_OPT_TS}
  379. IP_OPT_SID = $88; // Stream ID (obsolete)
  380. {$EXTERNALSYM IP_OPT_SID}
  381. IP_OPT_ROUTER_ALERT = $94; // Router Alert Option
  382. {$EXTERNALSYM IP_OPT_ROUTER_ALERT}
  383. MAX_OPT_SIZE = 40; // Maximum length of IP options in bytes
  384. {$EXTERNALSYM MAX_OPT_SIZE}
  385. // Ioctls code exposed by Memphis tcpip stack.
  386. // For NT these ioctls are define in ntddip.h (private\inc)
  387. IOCTL_IP_RTCHANGE_NOTIFY_REQUEST = 101;
  388. {$EXTERNALSYM IOCTL_IP_RTCHANGE_NOTIFY_REQUEST}
  389. IOCTL_IP_ADDCHANGE_NOTIFY_REQUEST = 102;
  390. {$EXTERNALSYM IOCTL_IP_ADDCHANGE_NOTIFY_REQUEST}
  391. IOCTL_ARP_SEND_REQUEST = 103;
  392. {$EXTERNALSYM IOCTL_ARP_SEND_REQUEST}
  393. IOCTL_IP_INTERFACE_INFO = 104;
  394. {$EXTERNALSYM IOCTL_IP_INTERFACE_INFO}
  395. IOCTL_IP_GET_BEST_INTERFACE = 105;
  396. {$EXTERNALSYM IOCTL_IP_GET_BEST_INTERFACE}
  397. IOCTL_IP_UNIDIRECTIONAL_ADAPTER_ADDRESS = 106;
  398. {$EXTERNALSYM IOCTL_IP_UNIDIRECTIONAL_ADAPTER_ADDRESS}
  399. //your interface declarations here
  400. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  401. {$IFNDEF JWA_OMIT_SECTIONS}
  402. implementation
  403. //uses ...
  404. {$ENDIF JWA_OMIT_SECTIONS}
  405. {$IFNDEF JWA_INTERFACESECTION}
  406. //your implementation here
  407. {$ENDIF JWA_INTERFACESECTION}
  408. {$IFNDEF JWA_OMIT_SECTIONS}
  409. end.
  410. {$ENDIF JWA_OMIT_SECTIONS}