iphlpapi.inc 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 2006 Free Pascal development team.
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. {exported functions list = to do,
  11. * please remove functions done *
  12. ordinal name
  13. AddIPAddress
  14. AllocateAndGetIfTableFromStack
  15. AllocateAndGetIpAddrTableFromStack
  16. CreateIpForwardEntry
  17. CreateIpNetEntry
  18. CreateProxyArpEntry
  19. DeleteIPAddress
  20. DeleteIpForwardEntry
  21. DeleteIpNetEntry
  22. DeleteProxyArpEntry
  23. DllEntry
  24. EnableRouter
  25. FlushIpNetTable
  26. GetAdapterIndex
  27. GetAdapterOrderMap
  28. GetAdaptersAddresses
  29. GetBestInterface
  30. GetBestInterfaceEx
  31. GetBestRoute
  32. GetFriendlyIfIndex
  33. GetIcmpStatistics
  34. GetIcmpStatisticsEx
  35. GetIfEntry
  36. GetIfTable
  37. GetInterfaceInfo
  38. GetIpAddrTable
  39. GetIpForwardTable
  40. GetIpNetTable
  41. GetIpStatistics
  42. GetIpStatisticsEx
  43. GetNetworkParams
  44. GetPerAdapterInfo
  45. GetRTTAndHopCount
  46. GetTcpStatistics
  47. GetTcpStatisticsEx
  48. GetTcpTable
  49. GetUdpStatistics
  50. GetUdpStatisticsEx
  51. GetUdpTable
  52. GetUniDirectionalAdapterInfo
  53. Icmp6CreateFile
  54. Icmp6ParseReplies
  55. Icmp6SendEcho2
  56. IcmpCloseHandle
  57. IcmpCreateFile
  58. IcmpParseReplies
  59. IcmpSendEcho
  60. IcmpSendEcho2
  61. IpReleaseAddress
  62. IpRenewAddress
  63. IsLocalAddress
  64. NotifyAddrChange
  65. NotifyRouteChange
  66. SendARP
  67. SetIfEntry
  68. SetIpForwardEntry
  69. SetIpNetEntry
  70. SetIpStatistics
  71. SetIpTTL
  72. SetTcpEntry
  73. UnenableRouter
  74. }
  75. {$ifdef read_interface}
  76. //*****************************************************************************
  77. // consts
  78. //*****************************************************************************
  79. const
  80. IpHlpApiDLL = 'iphlpapi';
  81. //dwForwardProto types
  82. PROTO_IP_OTHER = 1;
  83. PROTO_IP_LOCAL = 2;
  84. PROTO_IP_NETMGMT = 3;
  85. PROTO_IP_ICMP = 4;
  86. // Definitions and structures used by getnetworkparams and getadaptersinfo apis
  87. MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
  88. MAX_ADAPTER_NAME_LENGTH = 256;
  89. MAX_ADAPTER_ADDRESS_LENGTH = 8 ;
  90. DEFAULT_MINIMUM_ENTITIES = 32 ;
  91. MAX_HOSTNAME_LEN = 128;
  92. MAX_DOMAIN_NAME_LEN = 128;
  93. MAX_SCOPE_ID_LEN = 256;
  94. // Node Type
  95. BROADCAST_NODETYPE =1;
  96. PEER_TO_PEER_NODETYPE =2;
  97. MIXED_NODETYPE =4;
  98. HYBRID_NODETYPE =8;
  99. //*****************************************************************************
  100. // types
  101. //*****************************************************************************
  102. type
  103. // IP_ADDRESS_STRING
  104. IP_ADDRESS_STRING = Array[0..3,0..3] of Char;
  105. TIP_ADDRESS_STRING = IP_ADDRESS_STRING;
  106. IP_MASK_STRING = IP_ADDRESS_STRING;
  107. TIP_MASK_STRING = IP_ADDRESS_STRING;
  108. PIP_ADDRESS_STRING = ^IP_ADDRESS_STRING;
  109. PIP_MASK_STRING = PIP_ADDRESS_STRING;
  110. // IP_ADDR_STRING
  111. PIP_ADDR_STRING = ^_IP_ADDR_STRING;
  112. _IP_ADDR_STRING = Record
  113. Next : PIP_ADDR_STRING;
  114. IpAddress : IP_ADDRESS_STRING;
  115. IpMask : IP_MASK_STRING;
  116. Context : DWORD;
  117. end;
  118. IP_ADDR_STRING = _IP_ADDR_STRING;
  119. TIP_ADDR_STRING = IP_ADDR_STRING;
  120. // ADAPTER_INFO
  121. PIP_ADAPTER_INFO = ^_IP_ADAPTER_INFO;
  122. _IP_ADAPTER_INFO = Record
  123. Next : PIP_ADAPTER_INFO;
  124. ComboIndex : DWORD;
  125. AdapterName : Array[0..MAX_ADAPTER_NAME_LENGTH + 3] of Char;
  126. Description : Array[0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
  127. AddressLength : UINT;
  128. Address : Array [0..MAX_ADAPTER_ADDRESS_LENGTH-1] of Byte;
  129. Index : DWORD;
  130. aType : UINT;
  131. DhcpEnabled : UINT;
  132. CurrentIpAddress : PIP_ADDR_STRING;
  133. IpAddressList : IP_ADDR_STRING;
  134. GatewayList : IP_ADDR_STRING;
  135. DhcpServer : IP_ADDR_STRING;
  136. HaveWins : BOOL;
  137. PrimaryWinsServer : IP_ADDR_STRING;
  138. SecondaryWinsServer : IP_ADDR_STRING;
  139. LeaseObtained : time_t;
  140. LeaseExpires : time_t;
  141. end;
  142. IP_ADAPTER_INFO = _IP_ADAPTER_INFO;
  143. TIP_ADAPTER_INFO = _IP_ADAPTER_INFO;
  144. //*****************************************************************************
  145. // functions
  146. //*****************************************************************************
  147. function GetNumberOfInterfaces(var dwNumIf : DWORD): DWORD; external IpHlpApiDLL name 'GetNumberOfInterfaces';
  148. function GetAdaptersInfo( pAdapterInfo : PIP_ADAPTER_INFO; var OutBufLen : ULONG): DWORD; external IpHlpApiDLL name 'GetAdaptersInfo';
  149. {$endif read_interface}
  150. {$ifdef read_implementation}
  151. {$endif read_implementation}